 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
rivo Lt JG

Registrado: 13 Mar 2004Mensajes: 72Ubicación: Asturias (España)
|
Publicado: Lun 15 Mar, 2004 3:07 pm Asunto: Insertar fechas en una base de datos |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 16 Mar, 2004 8:10 am Asunto: |
|
|
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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Mar 16 Mar, 2004 10:12 am Asunto: |
|
|
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 |
|
 |
rivo Lt JG

Registrado: 13 Mar 2004Mensajes: 72Ubicación: Asturias (España)
|
Publicado: Mar 16 Mar, 2004 3:20 pm Asunto: |
|
|
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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Mar 16 Mar, 2004 3:24 pm Asunto: |
|
|
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 |
|
 |
rivo Lt JG

Registrado: 13 Mar 2004Mensajes: 72Ubicación: Asturias (España)
|
Publicado: Mar 16 Mar, 2004 4:47 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 16 Mar, 2004 9:17 pm Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
rivo Lt JG

Registrado: 13 Mar 2004Mensajes: 72Ubicación: Asturias (España)
|
Publicado: Mar 16 Mar, 2004 10:52 pm Asunto: |
|
|
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.
Un saludo |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Mar 16 Mar, 2004 11:08 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 17 Mar, 2004 9:09 am Asunto: |
|
|
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 |
|
 |
|
|
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.
|