 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
pablo_emiliob Master


Registrado: 19 Sep 2005Mensajes: 211Ubicación: Barranquilla - Colombia
|
Publicado: Dom 13 Ene, 2008 3:57 pm Asunto: Fechas en la BD y en el QUERY |
|
|
HOLA!!!!
El programa que estoy haciendo, consiste en buscar dentro de una tabla en una base entre una fecha y otra. Yo lo tengo asi cuando meto registros en la base:
| Cita: | findins(Query5, "INSERT INTO control VALUES ('"+IntToStr(val)+"','"+DateTimePicker4->Date+"','"+Query1->FieldValues["id"]+"','"+Query1->FieldValues["nombre"]+"','"+Query1->FieldValues["telefono"]+"','"+Memo5->Text+"','"+LowerCase(ComboBox3->Text)+"','"+Edit18->Text+"','"+Edit20->Text+"','"+Edit19->Text+"','"+Edit22->Text+"')");
|
donde la funcion findins es :
| Cita: | void findins(TQuery *q, AnsiString cons)
{AnsiString consulta=cons;
q->Close();
q->SQL->Clear();
q->SQL->Add(consulta);
q->ExecSQL();
q->Close();
} |
yo en esa tabla inserto el registro con la fecha que escogo en un TDateTimePicker.
Ahora en la base de datos de MYSQL lo que me muestra es esto:
lo cual me parece raro porque no me muestra la fecha sino un poco de ceros...
Y bueno, igualmente me pongo a hacer la consulta en el cual escojo las fechas con 2 DateTimePicker's, y asi la tengo:
| Cita: | AnsiString consulta="SELECT * FROM control WHERE fecha > '"+DateTimePicker3->Date+"' AND fecha <DateTimePicker7>Date+"'";
Query8->Close();
Query8->SQL->Clear();
Query8->SQL->Add(consulta);
Query8->Open(); |
y en el DBGrid no me sale nada...
necesito que alguien me diga como meter las fechas en una campo de fecha en la bd en MYSQL y como buscarlas con un query, ya que por lo visto no tengo casi idea de lo que como hacerlo, porque me acostumbre a hacerlo secuencial.
GRACIAS!!!
P.D: si no se entiende lo que pregunto diganme porfa... _________________ __________________________
C++ RULZ FO' EVA' |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Dom 13 Ene, 2008 5:27 pm Asunto: |
|
|
hola pablo_emiliob, en varias partes del manual de referencia de mysql esta detallado que cuando se intente insertar un fecha y esta es ilegal mysql combierte automaticamente en '0000-00-00', y en tu caso en la insercion de un nuevo campo da como ilegal porque el formato de fecha de mysql esta 'YYYY-MM-DD' si usas un tipo DATE y el rango es '1000-01-01' a '9999-12-31' y tu codigo intenta insertar con este formato ''DD-MM-YY' mas detalles
http://dev.mysql.com/doc/refman/5.0/es/date-and-time-type-overview.html
si ves en la grilla el formato que te muestra te das cuenta, para insertar una fecha debes formatear, esto se puede hacer de varias formas aqui una
| Código: | AnsiString sdate;
sdate = DateTimePicker->Date.FormatString("yyyy-mm-dd");
|
en sdate te queda la fecha con el formato listo para insertar.
Otra solucion configurar mysql para que soporte el formato de fecha que intentas insertar 'DD-MM-YYYY' es recomendabele la primer opcion formtear las fechas.
saludos tor _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Dom 13 Ene, 2008 5:31 pm Asunto: |
|
|
se me paso el tema de la consulta. Con el formato corregido no deberias tener problemas _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 14 Ene, 2008 8:40 am Asunto: |
|
|
¿Y no has probado usando parámetros? Lo digo porque, aunque era con tablas Paradox, yo tenía el mismo problema y lo resolví con ParamByName: Como el sistema ya "sabe" que tipo de dato va en cada variable sólo hay que usarlo directamente.
| Código: | findins(Query5, "INSERT INTO control VALUES (:consec, :fecha, :idcliente, :nomcliente, :telefono, descripcion, ;servicio, :grupo, ..."); |
Y en donde usas la función:
| Código: | void findins(TQuery *q, AnsiString cons)
{
AnsiString consulta=cons;
q->Close();
q->SQL->Clear();
q->SQL->Add(consulta);
q->SQL->ParamByName("consec")->AsString = IntToSTr(val);
q->SQL->ParamByName("fecha")->AsDateTime = DateTimePicker4->Date;
[...]
q->ExecSQL();
q->Close();
} |
Así no tienes que estar haciendo conversiones. Mira también la ayuda de TParam y de TFiledDefs. _________________ 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.
|