[VB .NET]sqldataadapter pakt bij de datum de tijd niet mee

Pagina: 1
Acties:

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
Hallo, ik ben bezig met een chart aan het maken voor vb .net. Nu gaat dat allemaal goed en istie ook helemaal dynamisch dmv parametrized query.
Maar nu gaat er iets met de query fout, dat ligt niet aan het feit dat hij parametrized is want zonder variabelen maakt hij ook dezelfde fout.

Het is namelijk zo dat in mijn gegevens tabel ook een kolom zit met de datum (fictievedatum) en deze datum heeft de format: dd-mm-yyyy hh:mm. De tijd zit er dus ook bij. Maar mn dataadapter pakt deze tijd niet mee, en hierdoor ziet de grafiek er nog al fucked up uit doordat hij meerder punten boven elkaar gaat zetten doordat ze dezelfde datum hebben.

code:
1
2
3
4
5
SELECT     fictievedatum, voorspeltermijn, hirlam11_t2m, hirlam22_t2m,
 debav_t2m, synops_t2m
FROM         dbo.beek
WHERE     (voorspeltermijn = 12) AND (fictievedatum BETWEEN '1-1-2003'
AND '2-1-2003')


Als ik deze query echter uitvoer in access of op msde of in de server explorer van visual studio dan pakt hij de tijd gewoon wel mee :?
Waar kan dit probleem aan liggen en hoe los ik het op? alvast bedankt

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Waarom staat die datum tussen quotes?
Hoe geef je die datum door aan je parameters?
Wat zie je in de Sql Server Profiler?

Welke datum bedoel je eigenlijk? De datum die je aan je WHERE clause meegeeft, of de datum die je terugkrijgt van je select statement ?

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
de datum die ik terug krijg als resultaat heeft dus bij de dataadapter als resultaat dd-mm-yyyy. Maar bij andere tools zoals msde manager is het gewoon de goede format: dd-mm-yyyy hh:mm...

Als ik bv alleen:
code:
1
SELECT fictievedatum FROM beek

dan heb ik hetzelfde probleem, dit zijn de eerste 3 records van de uitkomst:

28-11-2002
28-11-2002
28-11-2002

Verder bind de grafiek de waarden van 2 kolommen (1 datum, 1 een parameter zoals temperatuur) aan de x-as en y-as. De x-as zet ik dan op datetime, maargoed, dat doe ik allemaal in de wizard en ik geloof dat het probleem duidelijk zit in het feit dat hij de tijd gewoon niet mee neemt. Onder ASP met een owc chart gaat het wel goed en pakt hij ook gewoon de tijd mee.

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Hoe lees je hem uit?

Als je 't zo doet, zou je toch normaal gezien de datum en de tijd moeten terugkrijgen:
[code]
DateTime dt = aReader.GetDateTime(0);[/quote]

Het is niet omdat de tijd niet getoond wordt, dat de tijd er niet in zit. Toon de waarde eens van die datum op het scherm, mbhv de member-functies van de DateTime class (ToLongDateString, ToLongTimeString, oid....).

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
dus ik moet die sqldataadapter zo configureren dat hij de datum en tijd wel meepakt, dat stukje code werkt trouwens niet...

Hoe kan ik dat precies doen?
Moet ik hiervoor dit stukje code aanpassen?:
code:
1
2
3
4
5
6
7
8
9
10
Me.SqlDataAdapter1.TableMappings.AddRange(New 
System.Data.Common.DataTableMapping() 
{New System.Data.Common.DataTableMapping("Table", "beek", New 
System.Data.Common.DataColumnMapping() {New 
System.Data.Common.DataColumnMapping("fictievedatum", "fictievedatum"), New 
System.Data.Common.DataColumnMapping("voorspeltermijn", "voorspeltermijn"), New 
System.Data.Common.DataColumnMapping("hirlam11_t2m", "hirlam11_t2m"), New 
System.Data.Common.DataColumnMapping("hirlam22_t2m", "hirlam22_t2m"), New 
System.Data.Common.DataColumnMapping("debav_t2m", "debav_t2m"), New 
System.Data.Common.DataColumnMapping("synops_t2m", "synops_t2m")})})

  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Nee, je moet het datum veld converteren naar een ander datumtype. Je tijd zit namelijk wel in je resultset alleen wordt hij niet getoond omdat .Net waarschijnlijk een shortdate o.z.d. van de inhoud van dat veld maakt.

Je moet dus even met die conversiefuncties spelen zoals whoami al aangaf ;) (hoe je ze moet aanroepen staat in je MSDN library die je met VS.Net hebt meegekregen, of op MSDN op internet)

[ Voor 21% gewijzigd door mindcrash op 23-04-2004 11:32 ]

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
mindcrash schreef op 23 april 2004 @ 11:30:
Nee, je moet het datum veld converteren naar een ander datumtype. Je tijd zit namelijk wel in je resultset alleen wordt hij niet getoond omdat .Net waarschijnlijk een shortdate o.z.d. van de inhoud van dat veld maakt.

Je moet dus even met die conversiefuncties spelen zoals whoami al aangaf ;) (hoe je ze moet aanroepen staat in je MSDN library die je met VS.Net hebt meegekregen, of op MSDN op internet)
Ik zal eens rondneuzen op msdn @ internet dan :), want msdn in vs .net is een beetje fuckedup soms...

Hoop dat het me lukt omdat ik best wel een n00b ben op dit gebied...

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Tuurlijk doet m'n code het niet. Het is C# en jij bent bezig met VB.NET. Je kan het dus zelf ook wel even omzetten.
Als die datum in de DB een datum en tijd bevat, dan zal die ook wel zo opgehaald worden uit de DB. Een DateTime bestaat uit een datum en een Time part, je kan eens kijken of daar wat in zit mbhv de Minute / Hour / etc... properties.


(.NET kent geen 'smalldatetime' afaik).

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 23 april 2004 @ 11:48:
(.NET kent geen 'smalldatetime' afaik).
Min of meer wel, alleen dan als presentatie-optie. Intern lijkt me dat altijd een volledige datum / tijd wordt bijgehouden (en desnoods de tijd op 0:00:00 gezet)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
hmm ik heb zo ongeveer de hele middag geprobeert het te fixen, maar het lukt me niet. Dacht dat dit het zou moeten zijn:
code:
1
2
3
4
        Dim dTime As New System.DateTime(2003, 1, 1, 1, 1, 1)

        Dim longDateString As String
        longDateString = dTime.ToLongDateString()


Maar dat werkt niet, ook niet als ik de onderste twee weghaal. Dus sorry dat het me niet gelukt is, maar ik zou echt heel blij zijn als iemand me wat werkende code kon laten zien :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Die tijd zit er zeker in.
code:
1
MessageBox.Show (Convert.ToDateTime (dt.Rows[1]["datum_mod"]).ToLongTimeString());

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
hmm ik kan het nu niet meer uitproberen, moet de bus halen... ga het zeker proberen :) tnx
Pagina: 1