 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mie 16 Nov, 2016 1:10 pm Asunto: Problema con fecha NULL aparece como 01/01/1900 |
|
|
Hola a todos,
Tengo un problema muy raro, uso XE3 con TADOQuery y SQL Server.
Si hago esta sentencia:
Update ventas SET Fecha=NULL
En el Managemente Studio deja en la tabla el valor NULL, pero si hago exactamente la misma consulta desde el programa el valor que deja grabado es "01/01/1900"
Necesito dejar el valor NULL, entendéis que puede estar pasando?
Un saludo.
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 17 Nov, 2016 9:58 am Asunto: |
|
|
Si no han cambiado las cosas, los campos fecha nulos por defecto daban como valor 30/12/1899 (tal vez ahora hayan puesto otra fecha). No es que haya un error o los estés haciendo mal; en la ayuda para TDateTime (BCB 6) viene esto:
| Cita: | Description
TDateTime implements the Object Pascal TDateTime data type and the date/time runtime library routines that use the TDateTime data type.
The TDateTime class inherits a val data member declared as a double that holds the date-time value. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is the time of day.
Following are some examples of TDateTime values and their corresponding dates and times:
* 0 12/30/1899 12:00 am[...] |
Imagino que en la versión que usas vendrá algo similar. Como al fin y al cabo las fechas las trata como un número, el valor cero es el que se indica.
Yo lo que hago a la hora de "escribir" fechas es validar lo que entra enel campo (TLabel, TEdit, etc.) y si coincide con esa fecha nula lo pongo en blanco. Para eso me defino una variable al principio del programa
| Código: | TDateTime dFechaNula = (int)EncodeDate(1899, 12, 30); |
y la voy usando cuando me hace falta, como en los querys por ejemplo:
| Código: | Query->Close();
Query->SQL->Text = "SELECT Apellidos, Nombre, N_afiliado, Referencia, Nif, F_nacim, Codigo
FROM Persona
WHERE F_nacim BETWEEN :MinFec AND :MaxFec
AND F_nacim <> :Fecha
ORDER BY Apellidos, Nombre, Codigo";Query->ParamByName("MinFec")->AsDateTime = F_inicio->Date;
Query->ParamByName("MaxFec")->AsDateTime = F_final->Date;
Query->ParamByName("Fecha")->AsDateTime = dFechaNula;
Query->Open(); |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 22 Nov, 2016 12:51 pm Asunto: |
|
|
Angel,
Voy a probarlo, seguro que así se solucionado.
Muchas gracias amigo
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|