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)
-   -   Filtrar tabla por dos campos (https://www.clubdelphi.com/foros/showthread.php?t=27727)

Sayuri 29-11-2005 13:01:46

Filtrar tabla por dos campos
 
¿qué debo hacer para filtrar una tabla por dos campos?

Código Delphi [-]
Tabla.Filter:=(('FECHA = ' + QuotedStr(fecha)) and ('HORA = ' + QuotedStr(hora)));

Me da error
Muchas gracias

vtdeleon 29-11-2005 13:05:33

Saludos
Que error te da?
Código Delphi [-]
Tabla.Filter:='FECHA = '+QuotedStr(fecha)+' and HORA = '+QuotedStr(hora);
Se debe tener cuidado en el manejo de las fechas, por la configuracion regional de tu maquina y la de tu base de datos.
Nt: vi que intentaste usar las etiquetas con <> pero deben ser con [] (corchetes), edita tu mensaje y prueba

Sayuri 29-11-2005 13:07:19

Muchas gracias, ya lo edité

Me da este error:

Cita:

Operator not applicable to this operand type
Se me olvidaba decir que los campos de la fecha y la hora son dos string

marcoszorrilla 29-11-2005 13:13:49

Si fecha es de tipo fecha, tendrás que convertirlo antes de aplicarle el QuotedSTr.
Código Delphi [-]
 QuotedStr(FormatDateTime('dd/mm/yyyy',fecha))

Un Saludo.

vtdeleon 29-11-2005 13:15:45

Saludps

La propiedad Filter es de tipo String y no se puede hacer un and. El "and" tiene que estar dentro de la cadena.

Prueba con
Código Delphi [-]
tabla.Filter:=Format('(Fecha = %s) and (Hora = %s)', 
            [QuotedStr(fecha),QuotedStr(hora)]);
Suerte

Sayuri 29-11-2005 13:20:40

y como puedo comparar las horas si lo que comparo es un string?El problema es que necesito coger la fecha y hora iguales o mayores que la fecha y hora que introduzca. Además como estoy usando dBase, la fecha está en formato date pero la hora está introducida como un string

vtdeleon 29-11-2005 13:23:04

Saludos

Solo estaba haciendo una aclaratoria, ya que error que da es por el operador AND, aun no entiendo el por que del error.

Has hecho lo que MarcosZorrila ha escrito???

Sayuri 29-11-2005 13:31:15

si lo he hecho, pero me da error a la comparación, sin eso no me da error pero en el filtro no me da nada porque como la hora es con minutos y segundos es imposible que haya algo con esa misma hora y si quiero coger todo lo que se hace ocn posterioridad a esa hora (por si no me has entendido, la hora la capto del sistema) como en la tabla está guardado como un string... pues no sé como compararla para que me escoja las horas con posterioridad a la que yo he introducido.

Muchas gracias

vtdeleon 29-11-2005 13:39:29

Saludos

Dejame entender algo, los compos Fecha y Hora de tu tabla son de tipo String??? o no?

Bueno, yo probaria hacer el filtro en tiempo de diseño, aver como saldria y de ahi partiria o hacerlo con sentencias.

Sayuri 29-11-2005 13:41:16

la fecha no, la fecha es de tipo date, pero la hora si, es que estoy usando dBase y sólo me permite introducir la fecha como fecha pero no la hora

Gracias por ayudarme

vtdeleon 29-11-2005 14:08:22

Saludos

eeeh
Código Delphi [-]
var
  vFecha,vHora:String:
begin
  vFecha:=FormatDateTime('dd/mm/yyyy',MonthCalendar.date);//Componente Month Calendar
//el formato lo puedes cambiar a dd/mm/yyyy o mm/dd/yyyy
  VHora:='09:15:20';//cualquier hora....

tabla.Filter:=Format('(Fecha = %s) and (Hora = %s)', 
[QuotedStr(VFecha), QuotedStr(VHora)]);
Suerte

Cualquier error, hazlo saber

Sayuri 29-11-2005 14:21:50

Muchas gracias

Ya encontré mi error,... la verdad es que es un poco tonto, pero ahí va:

al pasar la hora del sistema a un string usé DatetoStr... y no TimetoStr... entonces claro en la comparación me cogía la fecha en vez de la hora y por eso nunca salía nada

siento ser tan despistada.

Muchísimas gracias

gonza_619 10-10-2010 17:02:03

BUENO MI PROBLEMA ES QUE QUIERO IR FILTRANDO LA FECHA A MEDIDA QUE VA ESCRIBIENDO EN EL EDIT PRBOE CON ESTO EN EL EVENTO ON CHANGE DEL TEDIT:

Table1.Filter:='fecha= '+quotedstr(Edit2.text+'*');
Table1.Filtered:= True;

PERO ME DA ERROR= CUANO QUIERO INGRESAR EL DIA 9, ME DICE 9* IS NOT A VALID DATE VALUE , HABRA Q HACER UNA CONVERSION ANTES O DESPUES DEL QUOTEDSTR? GRACIASLA
LA IDEA ES QUE VALLA FILTRANDO A MEDIDA Q ESCRIBE DD/MM/AA


La franja horaria es GMT +2. Ahora son las 22:09:00.

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