2012-04-20 12 views
6

Sto usando ASP.NET/VB e sto cercando di inserire una data e un'ora in un campo Data/ora di accesso, ma sto ricevendo un errore (Tipo di dati non corrispondenti in espressione dei criteri). Ecco una versione semplificata del mio codice:Inserire data/ora nel database di 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() 

Non so perché sto ottenendo l'errore, e non del tutto sicuro se questo è anche il modo corretto di affrontare l'inserimento della data corrente. Osservando altre domande simili, ci sono alcuni modi per farlo, ma le mie conoscenze tecniche sono piuttosto limitate, quindi ho difficoltà a capirlo (in altre parole, decifrare le risposte che usano termini tecnici che conosco niente su).

Grazie in anticipo!

risposta

2

È possibile saltare completamente il parametro e scrivere direttamente la funzione NOW nella query.

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

questa risposta (quello sopra) è probabilmente la soluzione migliore, ma il motivo per cui il codice originale non ha funzionato è perché il parametro non è stato chiamato. Si potrebbe provare questo:

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

Funziona, grazie! – Sara

+1

I parametri nominati non funzionano con OleDb. Funzionano solo sulla posizione. Non ha funzionato prima perché il valore che si passava non era un DateTime. : http://www.mikesdotnetting.com/Article/92/MS-Access-Date-and-Time-with-ASP.NET –

+0

Mike, hai ragione quando dici che i parametri funzionano solo in modo posizionale. diciamo che non ha funzionato "perché il valore passato non era un DateTime" .Sicuramente era un DateTime. La funzione ToOADate() converte il valore da DateTime a Double. –

-1

Prova a cambiare

Dim myDate As Date = Now() 

a

Dim myDate As DateTime = Now() 

MS Access non offre un tipo di dati DATA, solo DATETIME.

+0

Data e DateTime (se il namespace System viene importato) significano la stessa cosa esatta in VB.NET. –

+0

Provato, ma ha ancora lo stesso errore. – Sara

+0

["I tipi di dati' DATETIME' ... sono 'DATE',' TIME', 'DATETIME' e' TIMESTAMP'] (http://msdn.microsoft.com/en-us/library/aa140015 (office.10) .aspx # acintsql_datatypes) – onedaywhen

Problemi correlati