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)
-   -   ordenar base de datos (https://www.clubdelphi.com/foros/showthread.php?t=61875)

Delphius 07-01-2009 21:27:15

Hola andres***,
Usa las etiquetas DELPHI por favor:

[ DELPHI ]
tu codigo aquí
[ /DELPHI ]

Sin los espacios entre los corchetes.

Respecto a tu duda,
Sólo veo que haces un segundo filtro pero no indicas que lo aplique mediante Filtered.
Fuera de eso no veo error.
Si te da un error debes indicárnoslo. No basta con tirarnos el código y que adivinemos. Coméntanos más al respecto.

Saludos,

andres*** 07-01-2009 21:42:24

hola Delphius

el problema es el siguiente:
mi base posee turnos
ej

paciente fecha hora medico
xxx 10/01/09 11:45 spatola
dsd 10/01/09 12:25 rames
yty 10/01/09 11:25 spatola

cuando yo filtro con la sentencia que te detalle en el mensaje anterior , yo pretendo que cuando me filtre, me devuelva el detalle de pacientes que tiene un determinado medico, un determinado dia

por ejemplo yo filtro el medico spatola y el dia 10/01/09 y me tendria que quedar.

paciente fecha hora medico
yty 10/01/09 11:25 spatola
xxx 10/01/09 11:45 spatola

el tema es que me filtra por dia y no por medico.....

Delphius 07-01-2009 21:53:17

No es por nada pero volvemos a un dilema que inicialmente te habíamos comentado: ¡tienes la fecha y la hora en campos separados!

Hay dos opciones:
1. Emplear un campo fecha y hora o DateTime en que incluyas la fecha y la hora. De este modo tu condición de filtrado será muy simple:

Código Delphi [-]
Query1.Filter := 'TU_CAMPO = ' + Quoted(....);

Tal como lo estás pretendiendo hacer.

2. O bien, seguir manteniendo los campos por separado y hacer una condición compuesta. Algo como:

Código SQL [-]
(FECHA =  07/01/2009) AND (HORA = 10:20)

Es decir que bastaría con añadir a tu filtro un AND y la siguiente condición: por hora.

¿Se entiende?

Saludos,

andres*** 07-01-2009 22:16:46

Delphius

en la primera yo cargaria la fecha y la hora en un mismo campo?

y la segunda

vos decis que ponga la condicion de filtrado por medico y la de por hora con and en el medio.

andres*** 08-01-2009 19:21:21

por favor alguien que me ayude con esto.


gracias

Delphius 08-01-2009 20:19:23

Hola andres***,
Disculpame no había visto que ya habías comentado al respecto.

A ver si me explico: Si tu tuvieras en un mismo campo registrado la fecha Y hora se puede emplear el código que tu comentas. Puesto que bastaría una simple condición para filtrar los datos.

Pero como empleas dos campos: uno para la fecha y otro para el día, (supongo que será del tipo Date y Time respectivamente) necesariamente debes armar una doble condición:
Código Delphi [-]
Query1.Filter := '(CAMPO_FECHA = ' + Quoted(...) + ') AND (CAMPO_HORA = ' + Quoted(...) + ')';

Ahora bien, este código es un tanto lioso. Lo más confiable y rápido es lanzar directamente la consulta con los datos a filtrar:
Código SQL [-]
select TUS_CAMPOS
from TU_TABLA
where (Fecha = :FechaParam) AND (Hora = :HoraParam)

Y valiendote de parámetros luego puedes hacer esto:
Código Delphi [-]
Query1.Params.ParamByName(FechaParam).AsDate := ....
Query1.Params.ParamByName(HoraParam).AsTime := ....
Query1.Open;

Por el tema de parámetros sugiero una búsqueda en los foros sobre el tema. Fue ampliamente tratado.

Y si a dichos campos lo "tansforma" a uno solo, de tipo fecha/hora igual puedes seguir lanzando una SQL igual a la anterior, pero esta vez, con una sola condición:

Código SQL [-]
where (FechaHora = :FechaHoraParam)

Y en Delphi, antes de lanzar algo como:

Código Delphi [-]
Query1.Params.ParamByName(FechaHoraParam).AsDateTime := ....

¿Me explico?

Saludos,

carlosjimenez 22-11-2011 16:54:28

no abre el qry
 
Saludo a todos, tengo un qry que no me da el open(no abre) solo cuando utilizo SQLSERVER, si utilizo otra base de datos funciona bien, he hecho varia prueba y he podido comprobar que es debido al order by de los campos que estoy solicitando, si le pongo un solo(el codigo del articulo) el qry abre pero solo con ese, si le pongo otro no abre o si lo convino con otros, es solo con ese campo que abre.

Me explico sino le pongo el orden by el qry abre bien, si le dejo el order by con un campo que no sea el codigo del articulo no abre

este es el qry

with FDataModulo.qryUtility2, Sql do
begin
Close;
Clear;
Add('select cia.cia_descripcion,cia.cia_rnc,'+
'loc.loc_descripcion,tid.cia_codigo,tid.dti_fecha,tid.dti_item,tid.alm_codigo,'+
'tid.art_codigo,loc.loc_direccion,loc.loc_telefono,'+
'loc.loc_fax,art.id,tri.tri_fecha,tri.tri_codigo,'+
'tdo.tdo_descripcion,tdo.tdo_entrada_salida');
Add(' from companias cia, localidades loc, transacciones_inv tri, tipos_documentos tdo,');
Add(' transacciones_inventario tid,articulos art');
Add(' where cia.cia_codigo = '+#39+gs_cia_codigo+#39);
Add(' and loc.cia_codigo = cia.cia_codigo');
Add(' and tri.cia_codigo = loc.cia_codigo');
Add(' and tri.loc_codigo = loc.loc_codigo');
Add(' and tri.alm_codigo = ''01''');
Add(' and tid.art_codigo = '+#39+articulo+#39);
Add(' and tri.tri_estado <> ''R''');
Add(' and tdo.cia_codigo = tri.cia_codigo');
Add(' and tdo.tdo_codigo = tri.tdo_codigo');
Add(' and tid.cia_codigo = tri.cia_codigo');
Add(' and tid.loc_codigo = tri.loc_codigo');
Add(' and tid.tdo_codigo = tri.tdo_codigo');
Add(' and tid.tri_codigo = tri.tri_codigo');
Add(' and art.cia_codigo = tid.cia_codigo');
Add(' and art.tpi_codigo = tid.tpi_codigo');
Add(' and art.art_codigo = tid.art_codigo');
Add(' order by tid.dti_fecha'); // si le pongo el campo fecha no abre solo con el campo codigo de articulo no toma otro.
Open;

este es el orde del qry que quiero, este orden me funciona bien en otras base de datos menos en SLQSERVER
Add(' order by tid.art_codigo,tri.tri_fecha,tri.tri_codigo');

Gracias de antemano

Casimiro Notevi 22-11-2011 18:57:03

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.


La franja horaria es GMT +2. Ahora son las 01:44:20.

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