Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problemas Con Campo Del Tipo FECHA
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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?
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problemas Para Detectar Tipo De Campos En ... jsbsan Bases de Datos 1 Miercoles, 30 Noviembre 2011, 20:58 Ver último mensaje
jguardon
No hay nuevos mensajes Problemas Ingresar Registros En Una Base D... GJhean Bases de Datos 7 Viernes, 25 Octobre 2013, 20:16 Ver último mensaje
shordi
No hay nuevos mensajes Problemas Con El Tipo De Fuente Y Los Scro... datobinario General 13 Miercoles, 23 Julio 2014, 02:04 Ver último mensaje
datobinario
No hay nuevos mensajes Guardar Una Pequeña Información Tipo Cla... gambafeliz General 8 Martes, 10 Septiembre 2019, 11:06 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron