ASP.NET: textbox converteren naar DateTime[8] in SQL2K

Pagina: 1
Acties:

  • Sir2K
  • Registratie: September 2003
  • Laatst online: 15-09-2025
Dag medemembers,

Ik zit al anderhalve dag met een probleem bij het vullen van een DateTime-veld in SQL-server 2000. Met het converteren van een (correcte) waarde uit een <asp:TextBox id=“txtAankoopDatum”> (bijv 14-10-2003) naar de DateTime in SQL-server krijg ik deze foutmelding:
"The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. The statement has been terminated."


Ik dacht dat ik in de goede richting zat met de volgende code:
dim AankoopDatum as DateTime = DateTime.Parse(txtAankoopDatum.text)
Dim strBuilder as new StringBuilder()
strBuilder.Append(" INSERT INTO licenties ")
strBuilder.Append(" (aankoopdatum) VALUES( ")
strBuilder.Append("'" + AankoopDatum + "',")
. . . . .
Dim sSQL as string = strBuilder.ToString()
Dim cmd as SqlCommand = new SqlCommand(sSQL, conn)
conn.Open()
cmd.ExecuteNonQuery()
conn.close()
. . . . .
<asp:TextBox id= “txtAankoopDatum”>

Het rare is dat als ik een datum ‘hard’ in de stingbuilder zet, hij het wel doen. Bijvoorbeeld strBuilder.Append("'11-11-2100',")

Het zal wel een simpele fout zijn maar ik kom d'r echt niet meer uit. Mochten jullie het zien, please reply.

BVD,

Dennis

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

1. maak eens gebruik van een parametrized query
2. een datum is geen tekst, '10-10-2001' zal normliter ook niet alsdatum herkend worden.
3. Hint: "#"

4. zie hieronder

[ Voor 86% gewijzigd door gorgi_19 op 14-10-2003 13:05 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Juicy
  • Registratie: December 2000
  • Laatst online: 20-08 18:00
Sir2K schreef op 14 October 2003 @ 12:46:
Dag medemembers,

Ik zit al anderhalve dag met een probleem bij het vullen van een DateTime-veld in SQL-server 2000. Met het converteren van een (correcte) waarde uit een <asp:TextBox id=“txtAankoopDatum”> (bijv 14-10-2003) naar de DateTime in SQL-server krijg ik deze foutmelding:
"The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. The statement has been terminated."
Misschien amerikaanse notatie ? Dus mm-dd-yyyy ... En aangezien maand 14 niet bestaat gaat dit dus fout.

-


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

gorgi_19 schreef op 14 October 2003 @ 12:48:
1. maak eens gebruik van een parametrized query
2. een datum is geen tekst, '10-10-2001' zal normliter ook niet alsdatum herkend worden.
3. Hint: "#"
4. zie hieronder
MSSQL gebruikt wel ' bij datums en geen #. Verder tip (naast de parameterized query) is om een datum altijd in ISO notatie te verwerken (zie o.a. BOL).

Today's subliminal thought is:


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

@ Annie.. Pfff.. Als MS nu eens een keer dingen gelijk houdt en niet MS Access qua syntax laat verschillen van SQL Server.. |:(

Oftewel: nog nooit opgevallen, weer wat geleerd :P

[ Voor 6% gewijzigd door gorgi_19 op 14-10-2003 13:05 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Sir2K
  • Registratie: September 2003
  • Laatst online: 15-09-2025
jaaa! tis idd amerikaanse notatie .. thanx juicy >> posten gaat vanaf het formulier wel bij bijv 02-02-2002.

ik ben er nu achter dat na de stringbuilder de dag en maand om worden gedraait > strBuilder.Append("'12-16-2100',") wordt 16-12-2100 in de database

maar hoe draai ik die notering nu weer terug? (zal wel op databaseniveau zijn?)

BVD,
Dennis

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Sir2K schreef op 14 October 2003 @ 13:12:
jaaa! tis idd amerikaanse notatie .. thanx juicy >> posten gaat vanaf het formulier wel bij bijv 02-02-2002.

ik ben er nu achter dat na de stringbuilder de dag en maand om worden gedraait > strBuilder.Append("'12-16-2100',") wordt 16-12-2100 in de database

maar hoe draai ik die notering nu weer terug? (zal wel op databaseniveau zijn?)

BVD,
Dennis
Bekijk de CultureInfo Class eens, zoek in het algemeen eens iets over Localization.
En het is trouwens niet iets op databaseniveau. 't is iets op presentatieniveau.

[ Voor 11% gewijzigd door gorgi_19 op 14-10-2003 13:14 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Sir2K
  • Registratie: September 2003
  • Laatst online: 15-09-2025
damn, wat zijn jullie trouwens snel ! ...

  • whoami
  • Registratie: December 2000
  • Nu online
Sir2K schreef op 14 October 2003 @ 13:12:
jaaa! tis idd amerikaanse notatie .. thanx juicy >> posten gaat vanaf het formulier wel bij bijv 02-02-2002.

ik ben er nu achter dat na de stringbuilder de dag en maand om worden gedraait > strBuilder.Append("'12-16-2100',") wordt 16-12-2100 in de database

maar hoe draai ik die notering nu weer terug? (zal wel op databaseniveau zijn?)

BVD,
Dennis
Maak gebruik van parametrized queries, dan hoef je je niks aan te trekken van al dat geneuzel, en zal het altijd, in alle situaties goed werken.

code:
1
2
3
SqlCommand1.CommandText = "INSERT INTO tabel (veld) VALUES (@p_par1)";
SqlCommand1.Parameters.Add ("@p_par1", SqlDbtype.DateTime);
SqlCommand1.Parameters["@p_par1"].Value = DateTime.Now;


Daarnaast kan je in je ASP pagina je CurrentUICulture en CurrentCulture zetten op de Regional settings van de user:
code:
1
System.Threading.Thread.CurrentUICulture = new CultureInfo(Request.UserLanguages[0]);

[ Voor 14% gewijzigd door whoami op 14-10-2003 13:21 ]

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Waarbij je dus alleen moet afvangen of Request.UserLanguages[0] niet null of Nothing is :P

Als je het helemaal high-tech wil maken, ga je gelijk met resource files werken voor verschillende talen. :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Nu online
gorgi_19 schreef op 14 October 2003 @ 13:23:
Waarbij je dus alleen moet afvangen of Request.UserLanguages[0] niet null of Nothing is :P
Eigenlijk wel, maar je hebt toch zowiezo regional settings
Als je het helemaal high-tech wil maken, ga je gelijk met resource files werken voor verschillende talen. :P
:Y)

https://fgheysels.github.io/


  • Sir2K
  • Registratie: September 2003
  • Laatst online: 15-09-2025
wow jongens ... als het maar redelijk werkt ben ik al superblij ... :-)

bedankt tot zover voor de info > nu weet ik iig al wat 't probleem is... kan ik weer verder frunniken.

modbreak: je hoeft niet iedere keer te groeten of je naam onder je post te zetten. Dat leest irritant. ;)

[ Voor 29% gewijzigd door whoami op 14-10-2003 13:34 ]


Verwijderd

je moet zorge dat de string die je erin gooit voldoet aan de regional settings dit vanwege / en -.

OM geklooi te voorkomen met engelse en nederlandse notatie gebruik altijd YYYY/MM/DD dit begrijpt SQL altijd en dit vergemakelijkt het sorteren voor jezelf...

en als je dit ingooit als
code:
1
"INSERT into table blaat values(' " + datum + " ')"

dan moet het werken...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 15 October 2003 @ 09:53:
je moet zorge dat de string die je erin gooit voldoet aan de regional settings dit vanwege / en -.

OM geklooi te voorkomen met engelse en nederlandse notatie gebruik altijd YYYY/MM/DD dit begrijpt SQL altijd en dit vergemakelijkt het sorteren voor jezelf...

en als je dit ingooit als
code:
1
"INSERT into table blaat values(' " + datum + " ')"

dan moet het werken...
En daarom kan je het jezelf ook makkelijk maken met parametrized queries.. :P Heb je hier geen problemen meer van; je hoeft bovendien niet bang te zijn SQL Injection. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1