Einzelnen Beitrag anzeigen

Bunnepeller

Registriert seit: 12. Mär 2005
11 Beiträge
 
Delphi 2005 Architect
 
#2

Re: zwei in einem Dataset verknüpfte Tabellen in einem Datav

  Alt 31. Mai 2006, 16:18
Hallo Bigeddie,
habs mit zwei Datagrid´s gemacht.
Die Relation hast du ja schon erstellt.
erstelle einen Delegaten "DataGridX.CurrentCellChanged"

In der zugehörigen Procedure machst du dann einen Refresh

Delphi-Quellcode:
procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs);
begin
  include(DataGrid1.CurrentCellChanged,dgCellChange);
end;
procedure TWinForm.dgCellChange(sender: TObject; e: System.EventArgs);
begin
  RefreshChild;
end;

procedure TWinForm.RefreshChild;
var
  drM, drN : DataRow;
  drws : array[] of DataRow;
  i, curDgRow, curTabRow, akt : integer;
  mString : string;
begin
  dtR.Clear;
  curDgRow := DataGrid1.CurrentRowIndex;
  curTabRow := convert.ToInt32(DataGrid1.Item[curDgRow,0]);
  mString := DataGrid1.Item[curDgRow,0].ToString;

  for i:= 0 to myds.Tables['T_MASTER'].Rows.Count-1 do
    if mString=myds.Tables['T_MASTER'].Rows[i].Item[0].ToString then
    begin
      akt:=i;
      Break;
    end;

  drM := myds.Tables['T_MASTER'].Rows[akt];
  drws := drM.getChildRows(dRel);

  for i:=0 to high(drws) do
// dtR.ImportRow(drws[i]);
  begin
    drN := dtR.NewRow;
    drN.Item[0] := Convert.ToInt32(drws[i].Item[0]);
    drN.Item[1] := Convert.ToInt32(drws[i].Item[2].ToString);
    drN.Item[2] := drws[i].Item[1].ToString;
    dtR.Rows.add(drN);
  end;
  DataGrid2.DataSource:= dtR;
end;
gibt aber vermutlich elegantere Lösungen

ciao
  Mit Zitat antworten Zitat