PDA

Ver la Versión Completa : Dos ClientDataSet y un solo Query


santiago14
14-03-2015, 13:58:33
Buenas, tengo una duda. Tengo la siguiente consulta:

Select a.cod_seccion, a.nombre_seccion From Secciones a
Where a.cod_seccion = :nro_seccion


Por otro lado, en mi formulario tengo dos LookUpComboBox: Combo1 y Combo2.
Ambos tienen sus respectivas ClientDataSet

Combo1 --> DataSource1 --> ClientDataSet1 --> DataSetProvider1 --> Query1

Combo2 --> DataSource2 --> ClientDataSet2 --> DataSetProvider2 --> Query1 (Están conectados a la misma consulta)

La única diferencia entre consultas es que el parámetro cambia, para el primer combo pido nro_seccion = 1 y para el segundo combo necesito los valores que devuelve la consulta con nro_seccion = 2

Cuando ejecuto esto, me dice "Datalink circular not allowed"

Quisiera saber como hacer para mostrar los datos en los distintos combos, pero los mismos provienen de la misma Query con un parámetro cambiado.

Muestro la ejecución de la consulta:

procedure TfrmBoletinRTF.FormCreate(Sender: TObject);
begin
inherited;
with DataModule1 do
begin
terminarTransaccion;
try
trxBoletin.StartTransaction;
cdsSecciones1.Params.ParamByName('nro_seccion').AsInteger:=1;
cdsSecciones1.Open;


cdsSecciones2.Params.ParamByName('nro_seccion').AsInteger:=2;
cdsSecciones2.Open;
trxBoletin.Commit;
except
on e:Exception do
begin
terminarTransaccion;
mErrores(e, 'No se pudieron recuperar las Secciones.',
self.Caption);
end;
end;
end;
end;


Espero se haya entendido y me den una mano. No sería bueno tener que hacer dos Querys solamente porque el parámetro cambie, la consulta es la misma.

Santiago.

santiago14
14-03-2015, 14:29:02
Me respondo a mí mismo y para todo aquel que le sirva.

La estructura planteada estaba bien, solamente que yo tenía seleccionadas las propiedades "DataSource" y "ListSource" de forma simultánea con el mismo TDataSource.
Eliminándolo de "DataSource" el problema se solucionó.

Gracias.