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)
-   -   Localizar Y Posicionarse En Un Adodataset (https://www.clubdelphi.com/foros/showthread.php?t=88038)

sorianolloret 07-04-2015 04:18:02

Localizar Y Posicionarse En Un Adodataset
 
Buenas, soy nuevo aquí, necesito que alguien me ayude con un tema sencillo que no puedo resolver
Tengo un adodatasetempleado, adodatasetcalendario, adodatasetcondiciones, todos con masterfield DNI, asi cuando selecciono un empleado me aparece su calendario y sus condiciones.
Pero necesito que esto funcione correctamente
adodatasetcalendario.locate('DNI;FECHA',Vararrayof(['DNI','FECHA']),[loCaseInsensitive, loPartialKey]); NO SE POSICIONA EN NIGUN SITIO DE LA TABLA,pero si busco ADODATASETCALENDARIO.Locate('FECHA',FECHA,[loCaseInsensitive, loPartialKey]);
con esto solo se posiciona en el primer registro que cumple la condición fecha
el problema es que cuando cambio de empleado y vuelvo a localizar no localiza nada o se localiza en el primero que al estar como masterfield el dni no se ve.
es decir
tengo
dni fecha
1 01/02/2003
1 02/03/2004
1 03/04/2005
2 01/02/2003
2 02/03/2004
2 03/04/2005
al tener como masterfield dni el dbgrid solo muestra las fechas del empleado seleccionado en la tabla empleados, es decir si silecciono el empleado 2 solo muestra sus fechas.
necesito hacer adodatasetcalendario.locate('DNI;FECHA',Vararrayof(['DNI','FECHA']),[loCaseInsensitive, loPartialKey]);
siendo dni=1 y fecha=02/03/2004 que se posiciona correctamente.o al buscar dni 2 y misma o distinta fecha
por cierto la base de datos es de Access y dni y fecha son claves principales
El código es este:
Código Delphi [-]
procedure Tfrmcalculoparcial.Button1Click(Sender: TObject);
var
  DNI : String;
  FECHA : String;
begin
  //DNI := ADODATASETEMPLEADOS.FieldByName('DNI').Value;
  FECHA := DATETOSTR(NOW());
  DNI := ADODATASETEMPLEADOS.FieldByName('DNI').AsString;
  //ADODATASETCALENDARIO.Locate('DNI',DNI,[]);
  //ADODATASETCALENDARIO.Locate('FECHA',FECHA,[loCaseInsensitive, loPartialKey]);//funciona pero al cambiar de empleado con dbnavigatorempleados no funciona
  adodatasetcalendario.locate('DNI;FECHA',Vararrayof(['DNI','FECHA']),[loCaseInsensitive, loPartialKey]);//no funciona
end;
me puede ayudar alguien?

AgustinOrtu 07-04-2015 05:11:40

Le estas diciendo al Locate que busque en el campo DNI los que sean igual al string 'DNI', y en el campo FECHA los que sean igueales al string 'FECHA'

Es decir estas haciendo esto

Código SQL [-]
SELECT * FROM Calendarios WHERE Fecha = 'FECHA' AND DNI = 'DNI'

Código Delphi [-]
                                                  // ahora si estas son tus variables DNI y FECHA
  adodatasetcalendario.locate('DNI;FECHA',Vararrayof([DNI, FECHA]),[loCaseInsensitive, loPartialKey])

Le saque las '' a DNI y FECHA en el VarrArrayOf

Proba asi y contanos

nlsgarcia 07-04-2015 05:22:13

sorianolloret,

¡Bienvenido al Club Delphi! :D

Te sugiero revisar la Guía de estilo de los foros, recomendada a todos los nuevos ingresos al Club Delphi.

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.

sorianolloret 07-04-2015 05:41:30

Muchas Gracias Agustin, Me Estaba Volviendo Loco Por Culpa De Las Comillas!!!!!!;):):):):):):)
Perfecto

Casimiro Notevi 07-04-2015 09:56:20

Cita:

Empezado por sorianolloret (Mensaje 490884)
Muchas Gracias Agustin, Me Estaba Volviendo Loco Por Culpa De Las Comillas!!!!!!;):):):):):):)
Perfecto

Guía de estilo de los foros


La franja horaria es GMT +2. Ahora son las 05:00:37.

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