Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Locate me tiene LOCO (https://www.clubdelphi.com/foros/showthread.php?t=78301)

jhonalone 06-04-2012 17:31:48

Locate me tiene LOCO
 
Hola a todos y gracias a los que me leeis con intención de ayudarme.

Explico el título:

Tengo dos tablas Master/Detail abiertas.

Intento hacer un Locate en la tabla Detail.

No localiza el registro, a no ser que sea el primero por orden alfabético de la tabla Master. (Tengo un índice alfabético, evidentemente, His es el nexo común entre las dos tablas, asignado a la popiedad MasterField de la tabla Detail)

Adjunto código:
Código Delphi [-]
 
if not (FClien.ActosDB.Locate('His; FechCitaActo; HoraCitaActo',VarArrayOf([Historia,Fecha,Hora]),[LoCaseInsensitive]))
  then begin
         // Mensaje de Error
         end;

Gracias a todos por vuestro esfuerzo.
Si alguien, más experto que yo en tablas, me lo explica y me aporta una solución se lo agradeceré.

Saludos.

jhonalone 06-04-2012 17:58:49

Parece ser que he dado con el error.

Primero tengo que hacer un Locate por el campo común en la tabla Master, después ya actúa el Locate de la tabla Detail.

Curioso, verdad (¿?)

Espero que a alguien, en mi situación o parecida, le pueda servir.

Saludos a todos.

Casimiro Notevi 06-04-2012 18:02:57

Hola, independientemente del problema o la solución, por favor, recuerda poner títulos descriptivos a tus preguntas, gracias :)

ecfisa 06-04-2012 22:53:01

Cita:

Empezado por jhonalone (Mensaje 429462)
Parece ser que he dado con el error.

Primero tengo que hacer un Locate por el campo común en la tabla Master, después ya actúa el Locate de la tabla Detail.

Curioso, verdad (¿?)

Hola jhonalone.

En realidad no. Es el funcionamiento intrínseco de una relación master/detail, la tabla maestra restringe el resultado del conjunto de registros de la tabla detail.

Cuando se cambia el registro activo de la tabla maestra, se restringe el conjunto de registros de la tabla detail a los registros relacionados, si realizaramos un Locate sobre la tabla detalle, solo será efectivo sobre el conjunto restringido por la relación.

Por ejemplo:
Código:

MASTER      DETAIL
---------+----------------
ID  DATO | DATO MASTER_ID
---------+----------------
1  A    | X1  2
2  B    | X2  1
3  B    | X3  2

Estando posicionados en el registro 2 (B) de la tabla MASTER, el conjunto de registros relacionados (y por lo tanto accesible) en la tabla DETAIL será: {X1, X3} por lo que un Locate con un KeyValue igual a X2 no será concretado.

Saludos.

jhonalone 08-04-2012 12:51:37

Hola.
Mis disculpas por el título, Casimiro. Mis emociones nublaron mi sensatez.
Gracias por tu explicación, Ecfisa. Como siempre, tus explicaciones son más que claras, CRISTALINAS.
Saludos a ambos.

Casimiro Notevi 08-04-2012 13:01:19

Cita:

Empezado por jhonalone (Mensaje 429541)
Mis emociones nublaron mi sensatez.

Las emociones nos pueden :)


La franja horaria es GMT +2. Ahora son las 23:16:06.

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