Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism zwei in einem Dataset verknüpfte Tabellen in einem Dataview? (https://www.delphipraxis.net/69239-zwei-einem-dataset-verknuepfte-tabellen-einem-dataview.html)

Bigeddie 12. Mai 2006 10:00

Datenbank: MSSQL • Version: 2000 • Zugriff über: OLEDBCONNECTION

zwei in einem Dataset verknüpfte Tabellen in einem Dataview?
 
Hallo,

lange gesucht und nichts gefunden:

In einer Dataset habe ich zwei Tabellen über eine Relation miteinander verknüpft und kann mir das ganze auch in einem Datagrid ansehen. Wenn ich eine Zeile meine Master-Tabelle im Grid augewählt habe, so muß ich jedoch die Verknüpfung aufklappen um auch die Details zu sehen.

nun meine Frage:

gibt es die Möglichkeit über ein Dataview die Relation direkt aufzulösen?

Danke

Bigeddie

Bunnepeller 31. Mai 2006 15:18

Re: zwei in einem Dataset verknüpfte Tabellen in einem Datav
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz