Problemas para actualizar fechas

Tengo un pequeño gran problema. Resulta que tengo un sistema hecho en visual basic 2006. Dicho sistema esta conectado a una base de datos hecha en foxpro 6.0. Esta BD a su vez es usada por un sistema hecho en foxpro 6.0. Este sistema se puede decir que es el principal. El sistema que yo hice en visual basic es para poder agregar datos de manera masiva datos a esta BD a través de hojas de excel con formato definido. El problema surge cuando yo quiero dar de alta una fecha. En foxpro la fecha tiene el formato de "fecha" de 8 caracteres. Al yo hacer mi consulta a excel no tengo algu problema con los demás datos excepto con la fecha, y el problema se da solo momento de la actualización. Me manda el siguiente error "Data type mismatch". La fecha la jalo de la hoja de excel, la columna tiene un formato de fecha. Esta fecha la guardo en una variable de tipo Date. El formato de la fecha es "dd/mm/aaaa". Si quito esa parte de la consulta, los demás datos se actualizan bien, ese es mi único problema, espero me tengan alguna solución.
StrSql = "UPDATE usuarios SET usufecac='" & Format(FechaInst, "dd/mm/aa") & "', usunumac='" & MedInst & "', Sello='" & Sello & "', usufabac=" & IdMarca & ", usudiaac=" & Diametro & " WHERE usucuent = " & cuenta & ""
Esta es la consulta que uso. Ya lo intente sin Format y nada.

1 Respuesta

Respuesta
1
Prueba a insertar la fecha en formato aaaa/mm/dd
StrSql = "UPDATE usuarios SET usufecac='" & Format(FechaInst, "aaaa/mm/dd") & "', usunumac='" & MedInst & "', Sello='" & Sello & "', usufabac=" & IdMarca & ", usudiaac=" & Diametro & " WHERE usucuent = " & cuenta & ""
Prueba tambien a quitarle las comilla del string
StrSql = "UPDATE usuarios SET usufecac=" & Format(FechaInst, "aaaa/mm/dd") & ", usunumac='" & MedInst & "', Sello='" & Sello & "', usufabac=" & IdMarca & ", usudiaac=" & Diametro & " WHERE usucuent = " & cuenta & ""
Si esto tampoco funciona, prueba con lo siguiente.
StrSql = "UPDATE usuarios SET usufecac=#" & Format(FechaInst, "aaaa/mm/dd") & "#, usunumac='" & MedInst & "', Sello='" & Sello & "', usufabac=" & IdMarca & ", usudiaac=" & Diametro & " WHERE usucuent = " & cuenta & ""
Gracias por las sugerencias, pero ninguna de ellas me funcionó. Envío el código íntegro de este módulo.
Public Sub CargarTablaExcel(rutaexcel)
Dim opc As Integer
Dim cuenta As Long
Dim MedInst As String
Dim FechaInst As String
Dim IdMarca As Integer
Dim Marca As String
Dim Diametro As Integer
Dim Sello As String
Call Conexiones.conexionexcel
Call Conexiones.recinstExcel
Call Conexiones.conexionfoxred
StrSql = "SELECT * FROM [Hoja1$]"
recExcel.Open StrSql, conexcel
Set frm_principal.DataMedidores.DataSource = recExcel
opc = MsgBox("Confirmar la operación", vbYesNo, "Japami")
If opc = vbYes Then
While Not recExcel.BOF And Not recExcel.EOF
frm_principal.DataMedidores.Col = 0
cuenta = frm_principal.DataMedidores.Text
frm_principal.DataMedidores.Col = 1
MedInst = frm_principal.DataMedidores.Text
frm_principal.DataMedidores.Col = 2
FechaInst = frm_principal.DataMedidores.Text
frm_principal.DataMedidores.Col = 3
IdMarca = frm_principal.DataMedidores.Text
frm_principal.DataMedidores.Col = 4
Marca = frm_principal.DataMedidores.Text
frm_principal.DataMedidores.Col = 5
Diametro = frm_principal.DataMedidores.Text
frm_principal.DataMedidores.Col = 6
Sello = frm_principal.DataMedidores.Text
StrSql = "UPDATE usuarios SET usufecac=#" & Format(FechaInst, "aaaa/mm/dd") & "#, usunumac='" & MedInst & "', Sello='" & Sello & "', usufabac=" & IdMarca & ", usudiaac=" & Diametro & " WHERE usucuent = " & cuenta & ""
confoxred.Execute StrSql
recExcel.MoveNext
Wend
Else
Exit Sub
End If
MsgBox "La operacion se realizó con éxito", vbOKOnly, "Japami"
End Sub
He encontrado la siguiente información
If you pass date values, time values, or timestamp values in a remote query to an SQL table, you have to format the data by using the following escape clauses: . Date value: {d 'yyyy-mm-dd'}. In this format, yyyy represents the year, mm represents the month, and dd represents the day.
. Time value: {t 'hh:mm:ss'}. In this format, hh represents the hours, mm represents the minutes, and ss represents the seconds.
. Timestamp value: {ts 'yyyy-mm-ddhh:mm:ss'}.
Es decir
usufecac={d '" & Format(FechaInst, "aaaa-mm-dd") & "'}" ....

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas