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 

fecha en paradox

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: fecha en paradox Responder citando

Tengo que hacer un programilla enlazando con unas tablas paradox, y hago la siguiente consulta y me da error de tipos 'type mismatch in expression'cuando añado las condiciones de fecha. ¿Estoy haciendo mal la consulta?
Las tablas no se en que version de paradox estan hechas y tampoco tengo instalada esta base de datos para ver en que tipo de datos se definió. Pero es de tipo 'fecha/hora' cuando la importo a Access.
¿Hay algo que pueda hacer para descubrir la razón de este error de tipos?

Código:

"SELECT * FROM 'peticiones.db' WHERE Nombre_cliente ='"+GClienteSeleccionado+"' AND Fecha_envio >= '01/01/2007' AND Fecha_envio <='31/12/2008';"


Muchas gracias.
_________________
Be water my friend.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola best_guitar, proba armar la consulta pero con parametros, no solo evitas un monton de problemas de tipos de datos si no que tambien te queda todo mas facil.
saludos tor.
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

hola tor,
estoy de acuerdo contigo, pero mi duda es acerca la consulta SQL que hago a paradox, y que no la entiende. Al hacer 'select * from peticiones;' no hay problema, pero al añadirle las fechas se produce el error. No se si es al ir las fechas entrecomilladas o porque la base de datos original definia las fechas diferente (otro formato o otro tipo de dato) a como lo hace SQL y hay un problema de tipos.

Me pregunto si os habeis encontrado en un problema así con alguna tabla paradox vieja.
_________________
Be water my friend.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

La idea de Tor es correcta. Yo lo haría así, por ejemplo:
Código:
TDateTime dFechaIni, dFechaFin;
Queri1->Close();
Query1->SQL->Text = "SELECT * FROM 'peticiones.db' WHERE Nombre_cliente ='"+GClienteSeleccionado+"' AND Fecha_envio >= :FechaIni AND Fecha_envio <= :FechaFin";
dFechaIni = EncodeDate(2007, 1, 1);
dFechaFin = EncodeDate(2008, 12, 31);
Query1->ParamByName("FechaIni")->AsDateTime = dFechaIni;
Query1->ParamByNAme("FechaFin")->AsDateTime = dFechaFin;
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

best_guitar aparentemente la consulta esta bien planteada, pero yo tuve muchos problemas cuando hacia de esa forma si no se trataba de un espacio era una comilla o algo por el estilo, de todas formas proba esto
Código:
AnsiString sql;
sql ="SELECT * FROM 'peticiones.db' WHERE Nombre_cliente ='";
sql += GClienteSeleccionado;
sql += "' AND Fecha_envio >= '01/01/2007' AND Fecha_envio <='31/12/2008';";

es la misma consulta que tienes solo que concateno de otra forma usa el debug y verifica como esta llegando la cadena, porque abeces a mi no me funcionaba colocar AnsiString + " xxx" + AnsiString etc, es como que hay algo que no lo comprendo bien en la sobrecarga del operador suma del AnsiString.
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Tor escribió:
Código:
AnsiString sql;
sql ="SELECT * FROM 'peticiones.db' WHERE Nombre_cliente ='";
sql += GClienteSeleccionado;
sql += "' AND Fecha_envio >= '01/01/2007' AND Fecha_envio <='31/12/2008';";

Hau un punto y coma la final que está mal puesto:
Fecha_envio <='31/12/2008';";
_________________
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

Si perdon es que copy paste jejej Wink. y se me paso Sad. De todas formas te comento Angel que en MySQL funciona correctamente. Pero como dices es posible q en paradox tengas problemas con ese punto y coma, no lo modifico asi los que leean sabran de que estamos hablando jejej.
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

entonces el fallo está en el ; final de la consulta¿?
_________________
Be water my friend.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Bien quede pensando en lo que menciono Angel del lo punto y coma, y realice unas pruebas conclusión, el punto y coma no afecta a la consulta no deberia generar ningún error. yo estaba seguro que en MySQL funcionaba, porque esa es la sintaxis que utilizan todos los clientes MySQL, pero en paradox no estaba seguro, ahora si.
Aqui un ej: un formulario, un Button,un Query, un DataSource y un DBGrid al DataBaseName del query apuntalo a BCDEMOS

DBGrid -> DataSource -> Query

En el evento clic del button
Código:
AnsiString sql;
sql = "SELECT * FROM employee WHERE HireDate >:dia1 and HireDate <:dia2;";
this->Query1->Close();
this->Query1->SQL->Clear();
this->Query1->SQL->Add(sql);
this->Query1->ParamByName("dia1")->AsDateTime = StrToDate("10/10/1990");
this->Query1->ParamByName("dia2")->AsDateTime = StrToDate("10/10/1991");
this->Query1->Open();
El problema no es el punto y coma sino en el campo fecha, abria que ver que versión de paradox usas y que tipo de campo es Date DataTime nose, De todas formas ese inconveniente lo superas con parametro de la forma que puedes ver en el ejemplo, y tambien en el codigo que te indica Angel.
saludos
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Re: fecha en paradox Responder citando

Estimado,
El problema puedes estar en que pones '31/12/2008'
en vez de '12/31/2008'.
Trabajo con Paradox y creo con las consultas
para campos fecha son mes/dia/año.
_________________
Luis Anibal Mendez
Analisis, Programacion, Asesoramiento
luisanibalmendez@gmail.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Re: fecha en paradox Responder citando

Luis Anibal escribió:
Trabajo con Paradox y creo con las consultas
para campos fecha son mes/dia/año.

Efectivamente, en Paradox la fechas van en ese formato INDEPENDIENTEMENTE de la configuración regional del equipo. De ahí mi sugerencia de utilizar parámetros, con lo que ese problema se solventa ya que es el propio intérprete quien se encarga de relacionar la variable introducida con las características del campo tratado.
_________________
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.