Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   [problema] query between fechas con ADO y *.DBF (https://www.clubdelphi.com/foros/showthread.php?t=67161)

PablorD 01-04-2010 23:21:47

[problema] query between fechas con ADO y *.DBF
 
hola, estoy intentando hacer un between de 2 fechas, las fechas en la base de datos estan guardadas en formato Britanico es decir dd/mm/yyyy. pero para el caso es lo mismo, por que la query va en string, mi query es esta

Código Delphi [-]
ADOQuery1.SQL.Text := ('select * from archivo.dbf where FECHA BETWEEN '+QuotedStr(Edit1.text)+' AND '+ QuotedStr(Edit2.Text));

y me arroja el siguiente problema.

Project aprendo.exe raised exeption class EOleExeption whit message ' no coniciden lostipod de datos en la expresion de criterios'.

se que esta mal puesta la fecha, pero no se concatenarla, probe hasta poniendole # ...

espero sus respuestas.
de antemano gracias :D

pd: (como concateno artos TEdit en un Tmemo poniendo enter entre ellos, se que era algo de vbctrlf o algo así, pero no recuerdo como aplicarlo :D)

Caral 01-04-2010 23:52:23

Hola
Empecemos por esto:
En una consulta sql NO se pone el nombre de la base de datos que me parece que en tu caso se llama archivo.dbf.
Lo que se pone es el nombre de la TABLA y el CAMPO que contiene el dato.
Prueba asi:
Código Delphi [-]
ADOQuery1.SQL.Text := ('select * from TUTABLA where FECHA BETWEEN '+StrToDate(Edit1.text)+' AND '+ StrToDate(Edit2.Text));
TUTABLA tiene que ser tu tabla.
Saludos

Casimiro Notevi 02-04-2010 00:08:35

Hace muchos años que no uso dbf, la última creo que fue hace unos... 22 años !!! :eek:

Y me parece recordar que no existían como base de datos y dentro las tablas, creo que cada tabla era un fichero independiente: clientes.dbf, articulos.dbf, facturas.dbf, etc...
De todas formas, el problema puede estar en lo que escribes aquí:
Código:

StrToDate(Edit1.text)+' AND '+ StrToDate(Edit2.Text));
Prueba a detener el programa en esa línea y mira el valor que le das a:
Código:

ADOQuery1.SQL.Text
y lo posteas aquí que lo veamos

PablorD 02-04-2010 03:46:10

si, estas en lo cierto casimiro :D en dbf cada tabla es un archivo aparte y la bd es el directorio origen donde estan los archivos. no estoy usando el pc donde tengo el codigo, estoy de viaje por semana santa, el lunes pongo lo que me dices, gracias por darse el tiempo de responder a los 2.
PD: y mi pd? alguien sabe lo del vbcrf?

Casimiro Notevi 02-04-2010 13:48:33

Cita:

Empezado por PablorD (Mensaje 359043)
PD: y mi pd? alguien sabe lo del vbcrf?

Depende de lo que quieras decir con "hartos tedit" :D

Código:

memo1.text := edit1.text + #10#13 + edit2.text + edit3.text...
o también:
Código:

memo1.lines.add( edit1.text );
memo1.lines.add( edit2.text );
memo1.lines.add( edit3.text );


PablorD 05-04-2010 16:00:52

nada aun, no supe como pausar el código en la parte de la coneccion, pero me sigue tirando lo mismo, no coniciden los tipos de datos en la expresion de criterios.

T_T

PablorD 05-04-2010 16:27:23

ya lo solucione, ahora funciona la query. lo malo es que me lo entrega en formato USA no britanico :O, tendre que cambiar el string recortándolo y reordenando, y listo :D .
Código Delphi [-]
ADOQuery1.SQL.Text := 'SELECT * FROM archivo.dbf WHERE FECHA between #'+edit1.Text+'# and #'+edit2.text+'#';

pd:gracias por lo de el tmemo.


La franja horaria es GMT +2. Ahora son las 07:45:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi