| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
best_guitar Lt


Registrado: 12 Nov 2005Mensajes: 92
|
Publicado: Mie 14 May, 2008 5:44 pm Asunto: fecha en paradox |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Mie 14 May, 2008 6:55 pm Asunto: |
|
|
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 |
|
 |
best_guitar Lt


Registrado: 12 Nov 2005Mensajes: 92
|
Publicado: Jue 15 May, 2008 6:24 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 15 May, 2008 7:07 am Asunto: |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Jue 15 May, 2008 12:00 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 15 May, 2008 1:43 pm Asunto: |
|
|
| 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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Jue 15 May, 2008 3:36 pm Asunto: |
|
|
Si perdon es que copy paste jejej . y se me paso . 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 |
|
 |
best_guitar Lt


Registrado: 12 Nov 2005Mensajes: 92
|
Publicado: Vie 16 May, 2008 1:14 pm Asunto: |
|
|
entonces el fallo está en el ; final de la consulta¿? _________________ Be water my friend. |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 16 May, 2008 2:53 pm Asunto: |
|
|
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 |
|
 |
Luis Anibal Lt


Registrado: 12 Nov 2002Mensajes: 84Ubicación: Santiago del Estero, Argentina
|
Publicado: Lun 09 Jun, 2008 2:09 am Asunto: Re: fecha en paradox |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 09 Jun, 2008 7:29 am Asunto: Re: fecha en paradox |
|
|
| 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 |
|
 |
|