PDA

Ver la Versión Completa : Cómo sincronizar Query y tabla


David
11-07-2006, 19:01:43
Tengo un componente Ttable , que controla el DBGrid a traves de su datasource , por otro lado tengo un query para sacar una consulta , en la que hago un INNER JOIN , para unir dos tablas de la base de datos .

El caso es que si el campo código de Ttable , es uno determinado , quiero que el campo código del Query , que hace referencia al mismo campo de la misma tabla , tenga igual valor .

¿Cómo se hace esto ?

pborges36
13-07-2006, 00:54:16
La consulta en el Query debes tener: where campocodigo=:parametro.
en el evento OnDataChange del Datasource debe ir lo siguiente:

Query.active:=false;
Query.ParamByName('parametro').asstring:=table.Fieldbyname('campocodigo').asstring;
Query.active:=true;


Espero sea eso lo que necesites. Saludos.

Lepe
13-07-2006, 11:18:50
También puede hacerse de otra forma:

La Query tiene una propiedad llamada Datasource, elje el Datasource de la Tabla. Así los datos mostrados por la consulta dependen del registro seleccionado en el TTable.

Al query añades un parámetro, pero el nombre de ese parámetros será igual que el campo de la tabla, es decir, suponiendo que quieres la relación por estos campos:

Tabla: CampoCodigo
Query: Codigo

al Query le añades
where codigo = :Campocodigo ORDER BY codigo
La ordenación es imprescindible para obtener los resultados correctos.

CampoCodigo lo interpreta como un parámetro, pero como la consulta tiene asignada su propiedad Query.Datasource irá a buscar ese campo en el TDatasource, o sea, en la tabla; Resultado: relación Master-Detail automático.

Saludos