Hola compañeros,
Tengo mi sentencia Select SQL de un IBDataSet determinado sobre una tabla de Interbase 7.5
En dicha sentencia se incluye como parámetro un dato de otro DataSource
Código Delphi
[-]Select * from TABLA2
where TABLA2_CAMPO1 = :TABLA1_CAMPO1
Claro está que IBDataSet2.DataSource = DataSource1 , que dicho DataSource1 a la vez está asociado a IBDataSet1 mediante DataSource1.DataSet = IBDataSource1
Bien, lo que me pasa es que en tiempo de ejecución necesito modificar el Select SQL de IBDataSet2 para hacer otras cosas.
Mi pregunta es como poder volver a poner en tiempo de ejecución el comando SQL Select correcto para relacionarlo de nuevo con el DataSource1 ?
Si pongo en tiempo de ejecución:
Código Delphi
[-]with IBDataSet2 do begin
SelectSQL.Clear;
SelectSQL.Add('Select * from TABLA2');
SelectSQL.Add('where TABLA2_CAMPO1 = :TABLA1_CAMPO1');
Prepare;
Open;
end;
no me funciona correctamente ya que supongo que está esperando un parámetro llamado 'TABLA1_CAMPO1', dentro de la misma sentencia SQL que acabo de poner, no ?
Entiendo yo que no puedo poner
Código Delphi
[-]with IBDataSet2 do begin
SelectSQL.Clear;
SelectSQL.Add('Select * from TABLA2');
SelectSQL.Add('where TABLA2_CAMPO1 = :Txt1');
ParamByName('Txt1').Value := IBDataSet1.TABLA1_CAMPO1;
Prepare;
Open;
end;
porque entonces no estaría enlazado de forma dinámica. Entiendo que de esta manera al modificarse el registro en DataSource1, no actualiza el IBDataSet2. Por lo menos yo lo he probado y no me funciona.
Por último decir que he intentado
Código Delphi
[-]with IBDataSet2 do begin
SelectSQL.Clear;
SelectSQL.Add('Select * from TABLA2');
SelectSQL.Add('where TABLA2_CAMPO1 = '+':'+'TABLA1_CAMPO1');
Prepare;
Open;
end;
pero tampoco quiere funcionar.
Gracias por vuestra ayuda.