Problemas Con Campo Del Tipo FECHA


Objetivo: Problemas Con Campo Del Tipo FECHA
Hola, estuve leyendo los problemas que han tenido con el formato de las fechas pero creo que esta consulta no encaja en ninguno de los post que vi por eso creo un hilo nuevo.
Acabo de importar un archivo de texto separado por tabulaciones a una base de datos Sqlite mediante el gestor de base de datos y me encuentro con un problema con el campo fecha.
El programa es básicamente el del libro de gambas pero con un gridview y su evento_data.
Cuando yo ingreso un articulo nuevo no tengo ningún problema pero cuando intento modificar uno existente o bien mostrar los datos completos del artículo en pantalla recibo un error.
Al parecer gambas me dice que recibe un valor Null en cambio del dato esperado, pero desde cualquier gestor de conexiones puedo ver que contiene un valor.

las altas a la base de datos las hago por medio de la llamada a sql:

Conexion.exec("insert into Datos (Autor,Titulo,Editorial,Proveedor,Codigo,... etc


Pero las modificaciones las hago (siempre basándome en el libro) mediante:
Dim Hoy As String
Hoy = Format(Date(Now), "yyy/mm/dd")
If Modifica Then
hResul["Autor"] = TxtAutor.Text
hResul["Titulo"] = TxtTitulo.Text
hResul["Editorial"] = TxtEditorial.Text
hResul["Proveedor"] = TxtProveedor.Text
hResul["Codigo"] = TxtCodigo.Text
...
hResul["Actualizacion"] = Hoy
hResul.Update()
Else


Siempre convierto la fecha a yyyy/mm/dd antes de grabarlas en la base tanto en altas como en modificaciones.
Esto funciona perfectamente siempre y cuando no se le ocurra tomar el valor como Null.
Lo extraño para mi es que actualiza todos los campos menos el de fecha, como puedo forzar la actualización? debería hacerlo también mediante EXEC y la orden Sql?

Muchas gracias por la ayuda

Marcelo

Perfil MP  
Objetivo: Re: Problemas Con Campo Del Tipo FECHA
No se si será por eso, pero tienes un error en la segunda línea del código.

Hoy = Format(Date(Now), "yyy/mm/dd")


Si te fijas, le falta una "y" al año.

Saludos

Perfil MP  
Objetivo: Re: Problemas Con Campo Del Tipo FECHA
Muchas gracias por la correción, se me había pasado por alto. Pero el problema no es ese, cada vez que actualizo un registro, a veces actualiza la fecha y a veces no... esas veces me toma como NULL el campo fecha que toma de la base, pero no lo actualiza por el valor que le doy...
Que podrá ser?

Perfil MP  
Objetivo: Re: Problemas Con Campo Del Tipo FECHA
Marcelo:

¿ Suele darte un error como...esperaba fecha y obtiene una cadena ?.

Para las fechas con el formato que no es el local nuestro.Hago una función en la que intercambio días y meses. En el caso de mm/dd/yy a dd/mm/yy.

'Esta funcion intercambiara dia a mes o mes a dia
PRIVATE FUNCTION intercambiafecha(f AS String) AS String
DIM cadena AS String[]
DIM temporal AS String

cadena = Split(f, "/")
temporal = cadena[0]
cadena[0] = cadena[1]
cadena[1] = temporal

RETURN (cadena[0] & "/" & cadena[1] & "/" & cadena[2])
END

'La llamo asi en una parte de entrada a un registro.
...
VarResult["Fecha_Nacimiento"] = intercambiafecha(TxtNacimiento.Text)
...
END


Escribe la linea completa como insertas los datos en el registro. A lo mejor te has dejado algo sin poner.

Saludos.

Objetivo: Re: Problemas Con Campo Del Tipo FECHA
Gracias Shell por la respuesta, te cuento, de recibir error lo recibo cuando intento hacer alguna operacion con la fecha que esta guardada en la base de datos. por ejemplo si obtengo la fecha y con Format() quiero expresarla como dd/mm/yyyy me dice que espera una cadena y obtiene un NULL.
Pero al momento de grabar no da ningún error, simplemente no actualiza ese campo, modifica todo el resto menos la fecha.
Acá pego el archivo de clase completo, este sirve para las altas y las modificaciones de artículos.
Las altas funcionan perfecto y las modificaciones no actualiza el campo fecha....

Muchísimas gracias!!!

Marcelo

' gambas class file

Private Modifica As Boolean
Private hResul As Result
Private Conexion As Connection

Public Sub RunNew(Data As Connection)
Conexion = Data
Me.Text = "Alta de artículo."
Me.ShowModal()
End

Public Sub RunEdit(Data As Result)
hResul = Data
Modifica = True
TxtAutor.Text = hResul["Autor"]
TxtTitulo.Text = hResul["Titulo"]
TxtEditorial.Text = hResul["Editorial"]
TxtProveedor.Text = hResul["Proveedor"]
TxtCodigo.Text = hResul["Codigo"]
TxtStock.Text = hResul["Stock"]
TxtLista.Text = hResul["Lista"]
TxtIva.Text = hResul["Iva"]
TxtPorc1.Text = hResul["Porc1"]
TxtPorc2.Text = hResul["Porc2"]
TxtPorc3.Text = hResul["Porc3"]
TxtUbicacion.Text = hResul["Ubicacion"]
TxtCodBarra.Text = hResul["Otros"]
TxtOtros.Text = hResul["CodBarra"]
Me.Text = "M0ficación de artículo."
Me.ShowModal()
End


Public Sub btnAceptar_Click()
Dim Hoy As String
Hoy = Format(Date(Now), "yyyy/mm/dd")
If Modifica Then
Try hResul["Autor"] = TxtAutor.Text
Try hResul["Titulo"] = TxtTitulo.Text
Try hResul["Editorial"] = TxtEditorial.Text
Try hResul["Proveedor"] = TxtProveedor.Text
Try hResul["Codigo"] = TxtCodigo.Text
Try hResul["Stock"] = TxtStock.Text
Try hResul["Lista"] = TxtLista.Text
Try hResul["Iva"] = TxtIva.Text
Try hResul["Porc1"] = TxtPorc1.Text
Try hResul["Porc2"] = TxtPorc2.Text
Try hResul["Porc3"] = TxtPorc3.Text
Try hResul["Ubicacion"] = TxtUbicacion.Text
Try hResul["Actualizacion"] = Hoy
Try hResul["Otros"] = TxtOtros.Text
Try hResul["CodBarra"] = TxtCodBarra.Text
Try hResul.Update()
Else
Try Conexion.exec("insert into Datos (Autor,Titulo,Editorial,Proveedor,Codigo,Stock,Lista,Iva,Porc1,Porc2,Porc3,Ubicacion,Actualizacion,Otros,CodBarra) values ('" & TxtAutor.Text & "','" & TxtTitulo.Text & "','" & TxtEditorial.Text & "','" & TxtProveedor.Text & "','" & TxtCodigo.Text & "'," & Val(TxtStock.Text) & "," & CFloat(TxtLista.Text) & ",'" & TxtIva.Text & "'," & CFloat(TxtPorc1.Text) & "," & CFloat(TxtPorc2.Text) & "," & CFloat(TxtPorc3.Text) & ",'" & TxtUbicacion.Text & "','" & Hoy & "','" & TxtOtros.Text & "','" & TxtCodBarra.Text & "')")

Endif

Me.Close()
Catch
Message.Error("Imposible agregar el registro...")
End

Public Sub Form_Open()



End

Public Sub btnCancelar_Click()

Me.Close()

End



PD: Perdón por el abuso del TRY, no tiene sentido según entiendo pero en el libro así estaba y aun no llegue a corregirlo...

última edición por Marcelo el Martes, 27 Septiembre 2011, 21:53; editado 1 vez
Perfil MP  
Objetivo: Re: Problemas Con Campo Del Tipo FECHA
Marcelo:

Cuando quieres añadir el registro fecha. Lo estas añadiendo como yyyy/mm/dd en vez de dd/mm/yyyy
Hoy es una variable de cadena y debería valerte, si fuera del tipo fecha seria un posible problema.
¿ Probaste a cambiar el formato ?.A lo mejor lo necesitas por algún motivo.

¿ Al estar un campo en blanco de la fecha en la base de datos, no debería darte Null ?.

La instrucción cuando creas el registro.Usas "&", comillas simples y las dobles haciendo
muy grande la instrucción.Seguro que tiene un motivo.Costumbre, lo mas probable y formato.

Algo que comentarte con la sentencia TRY.No comprendo, quizás por la versión de Gambas.Cuando realmente da error, no se ejecuta lo que
viene después de Catch.No es que este mal en tu código, es que en el libro viene así.

En cambio si pones if error then...mostraría el error.

Objetivo: Re: Problemas Con Campo Del Tipo FECHA
No termino de entender que es lo que queres decirme, con respecto a la entrada lo hago como yyyy/mm/dd porque tenía entendido que así funciona internamente SQLite, pero lo voy a intentar de otra manera.
La instrucción del EXEC() para la entrada de un registro nuevo la hago en un solo renglón porque fue la única manera de hacerlo andar ya que si lo hacía con parámetros del tipo &1, &2, etc solo podía utilizar 9 y el &10 ya daba error y por otro lado no pude dividirlo en mas de una línea para hacerlo mas legible....
Bueno, voy a seguir intentando a ver si logro encontrar el problema y sino calculo que o me quedará otra que utilizar un campo string y esperar a poder hacer comparaciones y filtros trabajándolos como si fueran fechas...

Muchas gracias.

Marcelo

PD: Voy a intentar lo del tratamiento del error con IF en lugar del CATCH a ver si tengo otra interpretación del mismo... Gracias de nuevo.

Perfil MP  
Objetivo: Re: Problemas Con Campo Del Tipo FECHA
Marcelo:

Comentarte que últimamente estoy liado con el tema de base de datos.Aprendo poco a poco.Es un tema que me gusta.
Compruebo que tu le pasas la fecha correctamente.Es la manera de que no de fechas raras (futuristas).

Eso también tengo que volver a verlo una vez mas.

Cuando me refería a la instrucción EXEC(). Lo que quería decirte que siendo cajas de texto, como es que no pones solamente por decir algo..

,nombre.txt,apellido.txt....

en vez de comilla simple comilla doble caja de texto comilla doble comilla simple.Esto: '"nombre.txt"'
Si fuera un valor, entendería que pusieras 'Pablo','Perez". Pero siendo una caja de texto, podrías eliminar esas comillas simples y dobles.
Seguro que también lo haces por otro motivo de formato.

Ya nos contaras como te fue.

Objetivo: Re: Problemas Con Campo Del Tipo FECHA
Jajajaa, no, lo hago porque pensaba que era la manera correcta de hacerlo
Ahora voy a probar de la manera que me decis. Gracias por el dato, si llegase a funcionar dejaría el código mucho mas legible, cosa que no está para nada por ese tema...

gracias otra vez

Marcelo

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1909s (PHP: 13% SQL: 87%)
Consultas SQL: 24 - Debug off - GZIP Activado