Ver Mensaje Individual
  #1  
Antiguo 22-05-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 23
gluglu Va por buen camino
Indicar Parámetro de otro DataSource en tiempo de ejecución

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.
__________________
Piensa siempre en positivo !
Responder Con Cita