Tema: GotoBookMark
Ver Mensaje Individual
  #2  
Antiguo 08-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola BPL.

Según entiendo tenés una tabla física asociada a un DBGrid, y una en memoria asociada al segundo DBGrid. Y , una vez pasados los registros de interés al segundo DBGrid, querés desde los mismos acceder a los correspondientes de la tabla física. (al menos eso entendí...)

No trabajo con rxLib, pero te hago un ejemplo usando ClientDataSet para trabajar los datos en memoria, en reemplazo de lo que supongo debe hacer el rx. Para el mismo usé la Tabla Country de DBDEMOS.

Teníamos: un TTable, dos TDataSource, dos TDBGrid y en mi caso un TClientDataSet, usé los eventos OnCellClick en ambos DBGrids.

El ejemplo queda:
Código Delphi [-]
...
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBClient, Grids, DBGrids, DBTables;

type
  TForm1 = class(TForm)
    Table: TTable;
    dsTable: TDataSource;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    dsClientDataSet: TDataSource;
    ClientDataSet: TClientDataSet;
    ClientDataSetPosic: TIntegerField;
    ClientDataSetName: TStringField;
    ClientDataSetCapital: TStringField;  
    procedure FormCreate(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBGrid2CellClick(Column: TColumn);
  private
  public
  end;

var
  Form1: TForm1;

implementation  {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 ClientDataSet.CreateDataSet;
 ClientDataSet.Open
end;

{ Pasar registros a ClientDataSet (memoria) }
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  ClientDataSet.Append;
  ClientDataSetPosic.Value:= Table.RecNo; // agregado por que decís necesitarlo despues
  ClientDataSetName.Value:= Table.FieldByName('Name').AsString;
  ClientDataSetCapital.Value:= Table.FieldByName('Capital').AsString;
end;

{ Posicionarse en la tabla física }
procedure TForm1.DBGrid2CellClick(Column: TColumn);
begin
  Table.Locate('Name',VarArrayOf([ClientDataSetName.Value]),[])
  // Ya estamos posicionado en la tabla y en el registro
  // correspondiente
end;
...

Creo que lo que buscas está en el procedimiento DBGrid2CellClick. Espero aportarte alguna ayuda.

Saludos.

Última edición por ecfisa fecha: 08-09-2010 a las 01:00:23.
Responder Con Cita