2012-04-20 27 views
6

Używam ASP.NET/VB i próbuję wstawić datę i czas w polu Data/czas dostępu, ale pojawia się błąd (niezgodność typu danych w wyrażenie kryteriów). Oto uproszczona wersja mojego kodu:Wstaw datę/godzinę do bazy danych Access

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

Nie wiem, dlaczego Dostaję błąd i nie całkiem pewien, czy jest to jeszcze właściwy sposób podejść wstawienie aktualnej daty. Patrząc na inne podobne pytania wydaje się, że jest na to kilka różnych sposobów, ale moja wiedza techniczna jest trochę ograniczona, więc trudno mi się nad tym zastanowić (innymi słowy rozszyfrować odpowiedzi, które używają terminów technicznych, które znam nic o).

Z góry dziękuję!

Odpowiedz

2

Można pominąć parametr całkowicie i po prostu napisać funkcję NOW bezpośrednio do zapytania.

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

Ta odpowiedź (ten powyżej) jest chyba lepsze rozwiązanie, ale powód, oryginalny kod nie działa tak, ponieważ parametr ten nie został nazwany. Można spróbować to:

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

To działa, dziękuję! – Sara

+1

Nazwane parametry nie działają z OleDb, działają tylko na pozycji.Nie działało to wcześniej, ponieważ przekazywana wartość nie była DateTime. : http://www.mikesdotnetting.com/Article/92/MS-Access-Date-and-Time-with-ASP.NET –

+0

Mike, masz rację, gdy mówisz, że parametry działają tylko w pozycji. powiedzieć, że to nie działa "ponieważ wartość przekazywana nie była DateTime." Z całą pewnością był to DateTime. Funkcja ToOADate() konwertuje wartość z DateTime na Double. –

-1

Spróbuj zmienić

Dim myDate As Date = Now() 

do

Dim myDate As DateTime = Now() 

MS Access nie oferują typ danych data, tylko DATETIME.

+0

Data i DateTime (jeśli nazw systemu jest przywożony) oznaczają dokładnie to samo w VB.NET. –

+0

Próbowałem, ale wciąż mam ten sam błąd. – Sara

+0

["Typ danych' DATETIME' ... synonimy to 'DATA',' TIME', 'DATETIME' i' TIMESTAMP'] (http://msdn.microsoft.com/en-us/library/aa140015 (office.10) .aspx # acintsql_datatypes) – onedaywhen

Powiązane problemy