Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Problema con fecha NULL aparece como 01/01/1900

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problema con fecha NULL aparece como 01/01/1900 Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel,

Voy a probarlo, seguro que así se solucionado.

Muchas gracias amigo Smile

Carlos
_________________
Carlos J. Fernandez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.