In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Campo Fecha = Null en MariaSQL
Campo Fecha = Null en MariaSQL
Al editar y guardar un registro de un campo fecha, en MariaSQL lo pone en Null
Agregué en onExecute un OutDebug(cSQL)
y la consulta queda así: fecha=Null
Hice la prueba con Samples\DataControls\SQLite1 editando sólo la fecha y pasa lo mismo
Esta es la consulta de reemplazo:
UPDATE CUSTOMER SET First='STEWART', Last='WOO', Street='25782 MCDONALD''S PLAZA', City='HONEOYE FALLS', Hiredate=NULL, Notes='THIS IS A TEST FOR RECORD 9' WHERE _RowId_=5
¿Qué me recomiendan hacer?
Agregué en onExecute un OutDebug(cSQL)
y la consulta queda así: fecha=Null
Hice la prueba con Samples\DataControls\SQLite1 editando sólo la fecha y pasa lo mismo
Esta es la consulta de reemplazo:
UPDATE CUSTOMER SET First='STEWART', Last='WOO', Street='25782 MCDONALD''S PLAZA', City='HONEOYE FALLS', Hiredate=NULL, Notes='THIS IS A TEST FOR RECORD 9' WHERE _RowId_=5
¿Qué me recomiendan hacer?
Re: Campo Fecha = Null en MariaSQL
Alejandro,
las fechas vacías no se tratan igual en SQLite y en MariaDB. En SQLite, una fecha vacía tiene el valor NULL, siempre.
Pero MariaDB diferencia entre el valor NULL y una fecha vacía. Si quieres introducir una fecha vacía y que MariaDB pueda operar con ella, tienes que asignar el valor '0000-00-00'
En el caso que vayas a usar simultaneamente ambos motores SQL en tus programas, te aconsejo guardar las fechas siempre usando, o bien un dataset, o si utilizas el datasource directamente, con el método DToSql() de dicho datasource, que se encarga de tratar las fechas vacías correctamente.
las fechas vacías no se tratan igual en SQLite y en MariaDB. En SQLite, una fecha vacía tiene el valor NULL, siempre.
Pero MariaDB diferencia entre el valor NULL y una fecha vacía. Si quieres introducir una fecha vacía y que MariaDB pueda operar con ella, tienes que asignar el valor '0000-00-00'
En el caso que vayas a usar simultaneamente ambos motores SQL en tus programas, te aconsejo guardar las fechas siempre usando, o bien un dataset, o si utilizas el datasource directamente, con el método DToSql() de dicho datasource, que se encarga de tratar las fechas vacías correctamente.
Re: Campo Fecha = Null en MariaSQL
Gracias por contestar José!
El problema se me presenta con solo editar el campo fecha del ejemplo de Xailer que menciono, no guarda el cambio, lo pone en null el campo, en lugar de poner la nueva fecha.
El problema se me presenta con solo editar el campo fecha del ejemplo de Xailer que menciono, no guarda el cambio, lo pone en null el campo, en lugar de poner la nueva fecha.
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: Campo Fecha = Null en MariaSQL
Buenos días,
¿A que ejemplo se refiere?
Sin un pequeñísimo ejemplo que muestre el problema es muy difícil de saber cual es el motivo por el cual los campos de tipo fecha no se tratan correctamente. No obstante, intente lo siguiente:
1) Cambiar el tipo de control (Xailer tiene dos controles para mostrar fechas)
2) Si es un tipo 'datetime' intente comprobar si funciona correctamente con solo 'date'
3) Compruebe en el evento TDataset:OnUPdate el valor del objeto TDatafield de la fecha
Saludos
¿A que ejemplo se refiere?
Sin un pequeñísimo ejemplo que muestre el problema es muy difícil de saber cual es el motivo por el cual los campos de tipo fecha no se tratan correctamente. No obstante, intente lo siguiente:
1) Cambiar el tipo de control (Xailer tiene dos controles para mostrar fechas)
2) Si es un tipo 'datetime' intente comprobar si funciona correctamente con solo 'date'
3) Compruebe en el evento TDataset:OnUPdate el valor del objeto TDatafield de la fecha
Saludos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Re: Campo Fecha = Null en MariaSQL
Ignacio:
Esto me pasó con MariaSQL, pero revisé los ejemplos de Xailer y pasa exactamente lo mismo.
El ejemplo del que hablo es del Xailer 4.0.2 ubicado en:
C:\xailer4\Samples\DataControls\SQLite1
Lo único que modifiqué del ejemplo original es que agregué un método al evento OnExecute del DataSource para ver los Querys
Al editar cualquier registro con el botón "Edit" y hacer un cambio al campo date "HireDate" (flecha verde en el adjunto: SqLite01.png") digamos 10/09/1984 y guardar con el botón "update", no guarda la nueva fecha, lo pone en Null.
Revisando el Query de actualización dice así:Donde evidentemente está dejando sin fecha el campo con la instrucción "Hiredate=NULL", en lugar de guardar la fecha correctamente, con lo consiguiente, al refrescar el registro, ya baja sin fecha (Adjunto: "SqLite02.png").
Puntos aparte son estas dos observaciones adicionales.
Esto me pasó con MariaSQL, pero revisé los ejemplos de Xailer y pasa exactamente lo mismo.
El ejemplo del que hablo es del Xailer 4.0.2 ubicado en:
C:\xailer4\Samples\DataControls\SQLite1
Lo único que modifiqué del ejemplo original es que agregué un método al evento OnExecute del DataSource para ver los Querys
Código: Seleccionar todo
METHOD SQLiteDataSource1Execute( oSender, cSql ) CLASS TForm1
OutDebug( cSql )
RETURN Nil
Revisando el Query de actualización dice así:
Código: Seleccionar todo
UPDATE CUSTOMER SET First='MARK', Last='LOUMAN', Street='23772 WILLOUGHBY STREET', City='OVERLAND PARK', Hiredate=NULL, Notes='THIS IS A TEST FOR RECORD 12' WHERE _RowId_=7
Puntos aparte son estas dos observaciones adicionales.
- El campo de la fecha TDBDatePicker sigue mostrando una fecha inexistente
- Los campos: First, Last, Street, City, y Notes no los modifiqué, ni pasé por ello (exepto el campo First, que adquere el foco cuando oprimí el botón "Edit"
- Adjuntos
-
- SqLite01.png (7.58 KiB) Visto 6691 veces
-
- SqLite02.png (1.49 KiB) Visto 6691 veces
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: Campo Fecha = Null en MariaSQL
Buenos días,
Le ruego que sustituya la siguiente función en el archivo \source\Enterprise\SqliteRecords.prg:
Espero que con esta modificación le funcione.
Un saludo
Le ruego que sustituya la siguiente función en el archivo \source\Enterprise\SqliteRecords.prg:
Código: Seleccionar todo
STATIC FUNCTION ValToStr( x )
SWITCH ValType( x )
CASE 'C'
x := "'" + StrSqlite( x ) + "'"
EXIT
CASE 'N'
x := ToString( x )
EXIT
CASE 'D'
x := IIF( Day( x ) == 0, "NULL", "'" + DToSQL( x ) + "'" )
EXIT
CASE 'T'
x := IIF( Day( x ) == 0, "NULL", "'" + DTToSQL( x ) + "'" )
EXIT
CASE 'L'
x := IIF( x, "1", "0" )
EXIT
OTHERWISE
x := "NULL"
END
RETURN x
Un saludo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Re: Campo Fecha = Null en MariaSQL
Ok, reemplazo la función y les comento.
Gracias!
Gracias!