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 

Insertar fechas en una base de datos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Insertar fechas en una base de datos Responder citando

Hola tengo una base de datos, la cual tiene un campo que es de tipo fecha, el el builder tengo un edit en la que sale la fecha de dia de hoy, he utilizado la funcion DateToStr(Date()), esta fecha la inserto en la base de datos, pero despues al realizar busquedas utilizando el campo fecha lo hace mal, mi pregunta es, ¿la fecha del edit la tengo que converti a algun otro formato para insertarlo en la base de datos para que sea correcto lo que inserte en ella?, yo creo que lo del edit es de tipo String y lo de la base de datos es de tipo fecha, por eso la incompatibilidad de ambos, y por ellos las busquedas las hace mal. ¿que puedo hacer para solucionar este problema?

Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Suponiendo que uses tablas Paradox.

1. Los campos fecha de estas tablas las guardan en el formato MM/DD/AAAA, aunque lo veas de otra forma.
2. Si haces las búsquedas con SQL tienes que convertir la fecha a una cadena. Suponiendo que la introduces la fecha en un campo Edit, yo lo haría así:
Código:
AnsiString cMiFecha = Edit1->Text.SubString(4,2) + "/" +
                      Edit1->Text.SubString(1,2) + "/" +
                      Edit1->Text.SubString(7,4);

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM 'Tabal1.db'");
Query1->SQL->Add(" WHERE Fecha = '" + cMiFecha * "'");
Query1->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

Se puede usar el método FormatString que es muy sencillo y simplifica bastante el código, con el ejemplo de Angel se puede quedar así:

Código:

TDate fecha=Date();
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM 'Tabal1.db'");
Query1->SQL->Add(" WHERE Fecha = '" + fecha.FormatString("dd/mm/yyyy") + "'");
Query1->Open();
..

_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

He probado loq ue me habeis dicho y nada, la base de datos que estoy utilizando es de access, el campo fecha es de formato fecha dd/mm/aaaa, cuando miro las bases de datos la fecha sale correctamentes 16/03/2004, pero cuando hago una consulta sobre la fecha en el access, no salen los datos correctos, a no ser que escriba la consulta mal :

Código:
SELECT  * FROM gastos WHERE fecha>17/03/2004;


cuando pongo esto me saca tb los datos de las filas que tienen por fecha 16/03/2004
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Rivo debes poner la fecha entre comillas ya sean estas simples o dobles, luego to consulta está mal, debería ser algo así:

Código:

SELECT  * FROM gastos WHERE fecha>"17/03/2004";

ó
Código:

SELECT  * FROM gastos WHERE fecha>'17/03/2004';

_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Es que en access si pones la fecha entre comillas da error, indagando por webs he encontrado que en access las fechas hay que ponerlas entre almoadillas, por lo tanto la consulta quedaria algo tal que asi, por si a alguien le surge el mismo problema :

Código:
SELECT * FROM gastos WHERE fecha<#17/03/2004#;


Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No es por nada, ni Tengo Algo encontra de MicroSoft , pero realmente es un lio, trabajar con las Bases de Acces, es mas facil trabajr con MYSQL o FireBird, que tratar de jalar los datos de Acces.


como consejo, cambia tu formato de tablas, a otras que no te den tanto problema, por que en este momento son los campos de fecha.. espera mas adelante y tendras muchos problemas, y necesitaras de funciones de conversion.. para los diferentes tipos de datos. no todos se manejan igual, y en algunos casos, estos dependen de librerias realizadas en Visual C++, que igual, no siempre se pude convertir a Builder..

es una simple, opinion.. espero no haber creado polemica..


saludos..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Escogi el access por que tenia instalado el programa, y como era pa practicar un poco con el builder pues escogi ese, pero leyendo bastantes mensajes dejados por gente en el foro es bastante mencionado el firebird, y por lo que habla la gente esta bastante bien, todo es bajarselo y ponerse con el tb. Wink

Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Cesar no creas polemica, todo lo contrario, lo que haces puede ayudar a mucha gente, yo fijate, mi opinión sería la siguiente, no me gusta Access y probablemente hubiera utilizado Firebird o Interbase, pero entiendo que para bases de datos pequeñas, que no requieran todas las modernidades o prestaciones que nos ofrecen los grandes SGBD o los más potentes, pues debemos hacer uso de estos, es decir, para problemas pequeños puede ser mejor abordarlos con Access que irse a otras opciones más completas pero menos compleja.

Aun así, me parece bien tu punto de vista César, ya te digo yo hubiera elegido Firebird o Interbase, pero entiendo que Access puede ser buena opción para bases de datos pequeñas de pocas tablas.

Ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Cierto en lo del FormatString que comenta XyVy, ¡No me acuerdo nunca de esa instrucción! En lo de la máscara de Acces es verdad que no valen las comillas, pero ¿seguro que la fcha está guardada en el fomato dd/mm/aaaa? Me parece quie internamente se guarda en el formato americano mm/dd/aaaa, auqnue tú lo veas bien; el hecho deverlo como quires se debe a la conficguración regional del PC.

Puede que tengas que poner
Código:
SELECT * FROM gastos WHERE fecha< #03/17/2004#

en vez de
Código:
SELECT * FROM gastos WHERE fecha< #17/03/2004#

_________________
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
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.