2012-04-20 24 views
6

Estoy usando ASP.NET/VB y estoy tratando de insertar una fecha y hora en un campo de fecha/hora de acceso, pero me sale un error (No coincide el tipo de datos expresión de criterios). Aquí hay una versión simplificada de mi código:Insertar fecha/hora en la base de datos de 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() 

No estoy seguro de por qué estoy recibiendo el error, y no muy seguro de si esto es la forma correcta de acercarse a la inserción de la fecha actual. Al mirar otras preguntas similares, parece que hay algunas maneras diferentes de hacerlo, pero mi conocimiento técnico es bastante limitado, así que estoy teniendo dificultades para descifrarlo (en otras palabras, descifrar las respuestas que utilizan términos técnicos que conozco). nada acerca de).

¡Gracias de antemano!

Respuesta

2

Puede omitir el parámetro por completo y simplemente escribir la función NOW directamente en la consulta.

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

Esta respuesta (la de arriba) es probablemente la mejor solución, pero la razón por la cual el código original no funcionó es porque el parámetro no fue nombrado. Usted podría intentar esto:

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

Eso funciona, ¡gracias! – Sara

+1

Los parámetros con nombre no funcionan con OleDb. Solo funcionan en la posición. No funcionó antes porque el valor que se pasó no era un DateTime. Más aquí : http://www.mikesdotnetting.com/Article/92/MS-Access-Date-and-Time-with-ASP.NET –

+0

Mike, tienes razón cuando dices que los parámetros solo funcionan posicionalmente. Sin embargo, decir que no funcionó "porque el valor que se pasó no era un DateTime". Sin duda fue un DateTime. La función ToOADate() convierte el valor de DateTime a Double. –

-1

intente cambiar

Dim myDate As Date = Now() 

a

Dim myDate As DateTime = Now() 

MS Access no ofrece un tipo de datos fecha, sólo DATETIME.

+0

Fecha y DateTime (si el espacio de nombres System se importa) significan exactamente lo mismo en VB.NET. –

+0

Lo intenté, pero igual recibí el mismo error. – Sara

+0

["Los tipos de datos' DATETIME' ... sinónimos son 'DATE',' TIME', 'DATETIME', y' TIMESTAMP'] (http://msdn.microsoft.com/en-us/library/aa140015 (office.10) .aspx # acintsql_datatypes) – onedaywhen

Cuestiones relacionadas