none
Campos tipo fecha no me funciona RRS feed

  • Pregunta

  • Hola a todos...de nuevo y con un problema que parece no tener fin...
    En una version de mi sistema esta linea me funciona perfectamente.
    cmd.CommandText = "UPDATE Consumo SET lectactual ='" & CInt(Me.txtLectActual.Text) & "', fechatomaest = '" & CDate(FormatDateTime(Now(), DateFormat.ShortDate)) & "', horalectactual = '" & TimeString & "' WHERE nromedidor = '" & CInt(txtNroMedidor.Text) & "'"

    Esto al pasar al commandText queda asi:
    UPDATE Consumo SET lectactual ='6710', fechatomaest = '16/06/11', horalectactual = '13:05:52' WHERE nromedidor = '6708330'

    Sin embargo ahora por alguna razon ya no, me dice que hay un error en el formato de fecha. He revisado el archivo de origen (txt), el archivo convertido (sdf) y nuevamente el archivo de salida (txt) y no veo el porque no funciona.

    Como para entender, el funcionamiento es el siguiente:
    1) Se genera desde un sistema los archivos de texto con los datos que se cargaran en cada PDA
    2) Un programa los convierte a tablas de sqlce (sdf) y los copia al PDA
    3) El usuario hace su recorrida levantando los datos de cada cliente
    4) Al volver conecta el PDA a la base
    5) Un programa convierte de sdf a txt
    6) El sistema principal lee los archivos de texto y los procesa.

    El campo fechatomaest es un tipo "DateTime" al igual que el campo horalectactual, el cual no da ningun error.
    Como para probar saque la comilla simple y quedo como sigue:
    cmd.CommandText = "UPDATE Consumo SET lectactual ='" & CInt(Me.txtLectActual.Text) & "', fechatomaest = " & CDate(FormatDateTime(Now(), DateFormat.ShortDate)) & ", horalectactual = '" & TimeString & "' WHERE nromedidor = '" & CInt(txtNroMedidor.Text) & "'"

    y al procesar queda:
    UPDATE Consumo SET lectactual ='6710', fechatomaest = 16/06/11, horalectactual = '13:05:52' WHERE nromedidor = '6708330'

    De esta ultima forma no genera ningun error, pero no graba el dato en la tabla....

    Alguna idea?

    Saludos cordiales

    jueves, 16 de junio de 2011 17:07

Respuestas

  • Hola Angel.

    Eso tambien lo probe y no da error pero no graba en el campo...porque...no se...pero no graba me deja en 1900/01/01.

    Pero les cuento que ya lo resolvi, de esta forma:

    Dim fech As String
    fech = Format(Now, "yyyy/MM/dd")
    cmd.CommandText = "UPDATE Consumo SET lectactual ='" & CInt(Me.txtLectActual.Text) & "', fechatomaest = convert(datetime,'" & fech & "'), horalectactual = '" & TimeString & "' WHERE nromedidor = '" & CInt(txtNroMedidor.Text) & "'"

    Usando el convert y el formato año/me/dia, graba y lee sin problemas...

    Saludos cordiales

    • Marcado como respuesta cri[py] sábado, 18 de junio de 2011 16:15
    sábado, 18 de junio de 2011 16:14

Todas las respuestas

  • Hola Cripy

     

    Con respectoa  a las fechas yo hago lo  siguiente: la grabo por lo general como un nuemro, esto lo logro con el metodo OADate() este retorna un numero que es entendido por el motor de base de datos como fecha sin ningun tipo de problemas.

    Saludos


    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Mobile Developer .NET Bogota - Colombia
    sábado, 18 de junio de 2011 1:31
  • Hola Roberto.

    Pero funciona igual con un campo datetime?, es decir, mi tabla tiene definido el campo fechatomaest como datetime. Igual lo puedo guardar? o debo cambiar el tipo de dato a numerico, porque de ser asi, me complicarí un poco el codigo. El base.dataset.designer.vb ya lo he modificado manualmente (la historia de esto ya no viene al caso) y ahi hay muchas referencias a ese campo...

     

    Saludos cordiales

    sábado, 18 de junio de 2011 14:40
  • Remuevele la comilla al CommadText, ejemplo

        cmd.CommandText = "UPDATE Consumo SET lectactual = " & CInt(Me.txtLectActual.Text) & ", fechatomaest = " & CDate(FormatDateTime(Now(), DateFormat.ShortDate)) & ", horalectactual = " & TimeString & "WHERE (nromedidor = " & CInt(txtNroMedidor.Text)
    

     

     


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    sábado, 18 de junio de 2011 15:55
  • Hola Angel.

    Eso tambien lo probe y no da error pero no graba en el campo...porque...no se...pero no graba me deja en 1900/01/01.

    Pero les cuento que ya lo resolvi, de esta forma:

    Dim fech As String
    fech = Format(Now, "yyyy/MM/dd")
    cmd.CommandText = "UPDATE Consumo SET lectactual ='" & CInt(Me.txtLectActual.Text) & "', fechatomaest = convert(datetime,'" & fech & "'), horalectactual = '" & TimeString & "' WHERE nromedidor = '" & CInt(txtNroMedidor.Text) & "'"

    Usando el convert y el formato año/me/dia, graba y lee sin problemas...

    Saludos cordiales

    • Marcado como respuesta cri[py] sábado, 18 de junio de 2011 16:15
    sábado, 18 de junio de 2011 16:14