2012-04-20 11 views
6

Ich benutze ASP.NET/VB und ich versuche, ein Datum und eine Uhrzeit in ein Access-Datum/Uhrzeit-Feld einzufügen, aber ich bekomme einen Fehler (Datentyp nicht übereinstimmen in Kriterienausdruck). Hier ist eine vereinfachte Version von meinem Code:Datum/Uhrzeit in Access-Datenbank einfügen

Dim myDate As Date = Now() 
Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (?)", myConn) 
myIns1.Parameters.AddWithValue("@myDate", myDate) 
myIns1.ExecuteNonQuery() 

nicht sicher, warum ich den Fehler bekommen, und nicht ganz sicher, ob dies auch der richtige Weg ist, um das aktuelle Datum zu nähern einzufügen. Wenn man sich andere ähnliche Fragen anschaut, sieht es so aus, als ob es ein paar verschiedene Möglichkeiten gäbe, aber mein technisches Wissen ist begrenzt, so dass ich es schwer finde, es herauszufinden (mit anderen Worten, die Antworten zu entschlüsseln, die ich kenne nichts über).

Vielen Dank im Voraus!

Antwort

2

Sie könnten den Parameter ganz überspringen und einfach die NOW-Funktion direkt in die Abfrage schreiben.

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (NOW())", myConn) 
myIns1.ExecuteNonQuery() 

Diese Antwort (die oben) ist wahrscheinlich die bessere Lösung, aber der Grund, warum der ursprüngliche Code nicht ist nicht funktioniert, weil der Parameter nicht genannt wurde. Man könnte dies versuchen:

Dim myDate As Date = Date.Now 
Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (@myDate)", myConn) 
myIns1.Parameters.AddWithValue("@myDate", myDate) 
myIns1.ExecuteNonQuery() 

+0

Das funktioniert, danke! – Sara

+1

Benannte Parameter funktionieren nicht mit OleDb. Sie funktionieren nur auf Position. Es funktionierte nicht früher, da der übergebene Wert keine DateTime war. Mehr hier : http://www.mikesdotnetting.com/Article/92/MS-Access-Date-and-Time-with-ASP.NET –

+0

Mike, du hast Recht, wenn du sagst, dass die Parameter nur positionell funktionieren sagen, dass es nicht funktionierte, "weil der übergebene Wert keine DateTime war." Es war höchstwahrscheinlich eine DateTime. Die Funktion ToOADate() konvertiert den Wert von einer DateTime in eine Double. –

-1

Try

Dim myDate As Date = Now() 

zu

Dim myDate As DateTime = Now() 

MS Access Ändern keinen DATE Datentyp bieten, nur DATETIME-.

+0

Datum und Datumzeit bedeuten (wenn die Namespace System importiert werden) genau die gleiche Sache in VB.NET. –

+0

Versucht es, aber immer noch den gleichen Fehler. – Sara

+0

["Der' DATETIME'-Datentyp ... Synonyme sind 'DATE',' TIME', 'DATETIME' und' TIMESTAMP'] (http://msdn.microsoft.com/en-us/library/aa140015 (office.10) .aspx # acintsql_datatypes) – onedaywhen