Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ASP.NET] Conversie probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor mijn eindwerk op school moet ik een automatisatie maken van dossiersingave in ASP.net

Echter krijg ik volgende error:

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.

Deze error krijg ik op volgende regel:
Regel 58: cmdDossier.CommandText = "UPDATE tblDossierFase SET Naam = '" & txtNaam.Text & "', Datum = '" & txtDatum.Text & "' WHERE IDDossier = " & ddlDossiercode.SelectedValue & " AND IDFaseHandleiding = " & Session("IDFaseHandleiding")
Regel 59: cmdDossier.ExecuteNonQuery()

Error dus op de txtdatum.text denk ik. Ik heb al geprobeert met cdate(txtdatum.text).date maar dan werkt hij maar heel af en toe en de datum die ik ingaf komt totaal niet overeen.

Weet misschien iemand een oplossing hiervoor?

In de tabel is Datum een datum tijdveld

  • Marcj
  • Registratie: November 2000
  • Laatst online: 12:39
Het ziet er eerder naar uit als een SQL error. Waarschijnlijk heb je de txtDatum.Text niet goed gecontroleerd, want deze kan hij niet omzetten naar een goede datum.

Sowieso is deze manier van SQL uitvoeren niet echt aan te bevelen. Waarom gebruik je geen Data Access Layer? Die zorgt ervoor dat dit soort dingen goed gecontroleerd worden in de applicatie zelf. Op die manier vermijd je ook SQL injection.

Verwijderd

Topicstarter
Omdat dit ons niet aangeleerd is op school. Wat je net zei is namelijk redelijk chinees voor mij :D

Of bedoel je eigenlijk gewoon een dataset?

[ Voor 18% gewijzigd door Verwijderd op 27-04-2008 12:52 ]


  • Suaver
  • Registratie: Januari 2004
  • Laatst online: 09-11 10:45

Suaver

jokecoat

Je hebt 'n conflict met verschillen in data's.

dd-mm-yy = 13-09-2008
mm-dd-yy = 13-09-2008

Er kan geen 13de maand zijn, check daarom ff de wijze waarop je de datum opslaat.

You, me, us, together, me, us, you, we, us, you, me... DONE.


Verwijderd

Topicstarter
Datum wordt als 27/04/2008 weggeschreven.
Op school werkt dit wel perfect maar hier thuis krijg ik op laptop en op desktop deze error. Nu ja, school installaties zijn wel een beetje corrupt. Ik weet niet hoe microsoft zijn datum moet hebben in een datum tijd veld?

  • Brainstorm
  • Registratie: November 2000
  • Laatst online: 16-11 18:53
Waarschijnlijk staan bepaalde localisation instellingen anders op school, vandaar dat het daar toevallig wel goed gaat.

Wat je beter kunt doen is een andere manier gebruiken om de queries uit te voeren. Je probeert nu alles als text in te voeren, terwijl een 'tijd' dat eigenlijk helemaal niet is. Daarnaast lijkt het er op dat je je parameters niet escaped, waar door je kwetsbaar bent voor SQL injection (zie google).

Voorbeeld hoe het beter kan: parameterised queries. Op Google is hier best wel veel voor te vinden, om je een idee te geven:

SQL:
1
2
3
4
5
SqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM Customers WHERE CustomerID = @CustomerID";

command.Parameters.Add(
       new SqlParameter("@CustomerID", SqlDbType.Int, 5)).Value = customerID;


Het customer id wordt hierbij als int doorgegeven, in plaats van als tekst. Een datetime kun je hiermee ook doorgeven, voordeel is dan dat je geen conversie hoef te doen naar het specifieke datum/tijd formaat van de database.

Programmer's Drinking Song: 99 little bugs in the code, 99 bugs in the code, Fix one bug, compile it again, 100 little bugs in the code. (go to start if bugs>0)


Verwijderd

Topicstarter
wat jij gaf als voorbeeld werkt niet. Er bestaat geen sqlcommand functie

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijderd schreef op zondag 27 april 2008 @ 16:36:
wat jij gaf als voorbeeld werkt niet. Er bestaat geen sqlcommand functie
Jawel. Zoek in de MSDN maar eens naar SqlCommand, en dan zul je zien dat 'ie in een andere namespace zit. (Ik geloof System.Data.SqlClient, uit m'n hoofd).

Verwijderd

Topicstarter
ok nu kan ik dus niet meer volgen. Is er geen andere manier? Waarvoor ik niet allemaal dingen moet leren die mijn leerkracht niet eens kent laat staan snapt

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Alles staat hier uitgelegd.

Aan de andere kant, als jouw docent niet veel van ASP/ADO.NET weet, en je wil alleen maar dingen gebruiken die hij wel weet, dan moet je misschien maar gewoon strings aan elkaar knopen...

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

DIT BERICHT IS PREVENTIEF VERWIJDERD DOOR DE GEBRUIKER

[ Voor 114% gewijzigd door Ruudjah op 01-12-2009 22:55 ]

TweakBlog


Verwijderd

Topicstarter
MrBucket schreef op zondag 27 april 2008 @ 16:56:
Alles staat hier uitgelegd.

Aan de andere kant, als jouw docent niet veel van ASP/ADO.NET weet, en je wil alleen maar dingen gebruiken die hij wel weet, dan moet je misschien maar gewoon strings aan elkaar knopen...
Op die website die je me gaf, als die voorbeelden werken niet. Dim command As SqlCommand = New SqlCommand(), sql command werkt niet,
Using connection As New SqlConnection(connectionString), sqlconnection moet data.sqlclient.sqlconnection zijn. Ik weet niet waar ik al die commands moet zoeken. Bij mij op school hebben we maar een zeer beperkte cursus gehad. Je kan niet verwachten dat ik al die benamingen en alles ken. Ik probeer er aan uit te komen maar het lukt gewoon niet echt.

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 12:15

Haan

dotnetter

Verwijderd schreef op zondag 27 april 2008 @ 17:58:
[...]


Op die website die je me gaf, als die voorbeelden werken niet. Dim command As SqlCommand = New SqlCommand(), sql command werkt niet,
Using connection As New SqlConnection(connectionString), sqlconnection moet data.sqlclient.sqlconnection zijn. Ik weet niet waar ik al die commands moet zoeken. Bij mij op school hebben we maar een zeer beperkte cursus gehad. Je kan niet verwachten dat ik al die benamingen en alles ken. Ik probeer er aan uit te komen maar het lukt gewoon niet echt.
Werkt het niet omdat het voorbeeld in VB is en jij C# gebruikt, of gebruik jij ook VB en krijg je het niet aan de praat? Verder zou ik je aanraden om je horizon toch een beetje te verbreden als je tenminste verder wil in deze richting. Met de instelling "ik heb het niet geleerd op school, dus dan kan ik het niet", ga je niet ver komen anders..

Kater? Eerst water, de rest komt later


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijderd schreef op zondag 27 april 2008 @ 17:58:
[...]


Op die website die je me gaf, als die voorbeelden werken niet. Dim command As SqlCommand = New SqlCommand(), sql command werkt niet,
Using connection As New SqlConnection(connectionString), sqlconnection moet data.sqlclient.sqlconnection zijn. Ik weet niet waar ik al die commands moet zoeken. Bij mij op school hebben we maar een zeer beperkte cursus gehad. Je kan niet verwachten dat ik al die benamingen en alles ken. Ik probeer er aan uit te komen maar het lukt gewoon niet echt.
Ok, fair enough.

Een paar vragen dan, om te kijken waar het probleem cq. gebrek aan kennis zou kunnen zitten:
- Gebruik je visual studio als ontwikkelomgeving? Zo ja, welke versie (2003, 2005 of 2008)?
- Je zegt dat de voorbeelden niet werken. Welke foutmelding krijg je?
- Weet je wat namespaces zijn?
- Weet je hoe een referentie naar een assembly (= een dll-bestand) toevoegt aan je project?

Verwijderd

Topicstarter
MrBucket schreef op zondag 27 april 2008 @ 19:15:
[...]

Ok, fair enough.

Een paar vragen dan, om te kijken waar het probleem cq. gebrek aan kennis zou kunnen zitten:
- Gebruik je visual studio als ontwikkelomgeving? Zo ja, welke versie (2003, 2005 of 2008)?
- Je zegt dat de voorbeelden niet werken. Welke foutmelding krijg je?
- Weet je wat namespaces zijn?
- Weet je hoe een referentie naar een assembly (= een dll-bestand) toevoegt aan je project?
Visual Web developer 2005 express

Ik krijg errors dat bv. sqlcommand niet gedeclared is.

Nee en nee

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijderd schreef op zondag 27 april 2008 @ 19:25:
[...]


Visual Web developer 2005 express

Ik krijg errors dat bv. sqlcommand niet gedeclared is.

Nee en nee
Dat komt niet als een verassing :)

Als je kijkt op de MSDN-pagina van SqlCommand, dan zie je het volgende staan:
SqlCommand Class

Represents a Transact-SQL statement or stored procedure to execute against a SQL Server database. This class cannot be inherited.

Namespace: System.Data.SqlClient
Assembly: System.Data (in system.data.dll)
Zoals je ziet, is dit type gedeclareerd in de assembly "System.Data". Als je dit type wilt gebruiken, dan moet je ervoor zorgen dat je project bij deze assembly kan. Dit kun je zien in de Solution explorer (waar ook alle bestanden die je gebruikt in je project weergegeven worden), onder het item "References". Hier staan meestal al een stuk of 3 assemblies genoemd (System, System.Xml, etc.). Als System.Data hier niet genoemd wordt, zul je deze moeten toevoegen:
Klik met rechts op References, en kies voor "Add reference". Selecteer het tabblad ".Net", en selecteer dan de assembly "System.Data", en klik op "Ok" om deze toe te voegen.

Als je zeker weet dat er een reference bestaat naar System.Data, kun je twee dingen doen om de types die erin gedeclareerd staan, te gebruiken.
Ofwel je gebruikt de volledige naam van het type (dus niet SqlCommand, maar System.Data.SqlClient.SqlCommand), ofwel je vertelt Visual Studio dat het altijd in bepaalde namespaces moet zoeken naar types. Dit doe je door middel van het opnemen van een "Imports System.Data.SqlClient" statement, als eerste regels van je .vb bestand. Dan herkent 'ie wel de naam SqlCommand.

E.e.a. staat ook hier uitgelegd: http://visualbasic.about....vbnet/l/bldykImportsa.htm
Pagina: 1