Announcement

Collapse
No announcement yet.

Inhalt von ADOQuery zwischenspeichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Inhalt von ADOQuery zwischenspeichern

    Hallo!

    In einer Tabelle habe ich Daten in einer Baumstruktur abgespeichert. Aus dieser Tabelle möchte ich nun eine Treeview erstellen. Dazu traversiere ich den Baum mit einer rekursiven Prozedur, die die Abfrage ausführt (Abfrage liefert alle Subknoten eines bestimmten Knoten), jeden Subknoten in der Treeview erstellt und für jeden Subknoten sich selbst erneut aufruft.

    Das Problem ist, dass der Inhalt der Abfrage durch die rekursiven Prozeduren verändert wird.

    Welche Möglichkeiten gibt es das Ergebnis der Abfrage zwischenzuspeichern?

    mfg
    Georg T

  • #2
    Hallo,

    wie viele Ebenen sind betroffen? Eventuell kann der SHAPE-Provider die Aufgabe eleganter lösen:
    <pre>
    SHAPE {SELECT * FROM Customers}
    APPEND ({SELECT * FROM Orders}
    RELATE CustomerID TO CustomerID)
    </pre>
    In diesem Fall trennt ADO bereits über die Chapter die "Spreu vom Weizen", wenn die 2. TADODataSet-Instanz via <i>DataSetField = ADODataSet1Chapter1</i> an die Chapter-Datenmenge der 1. TADODataSet-Instanz gehängt wird:
    <pre>
    procedure TForm1.ShowData;
    var
    CNode, // Einhängepunkt für Master-Datensätze
    CNode2, // Einhängepunkt für Child-Datensätze
    CNode3 : TTreeNode;
    sName : String;
    begin
    with TreeViewData.Items do
    begin
    BeginUpdate;
    Clear;
    CNode := AddChild(nil, 'SHAPE-Daten');
    // Bitmap für den Wurzeleintrag festlegen
    CNode.ImageIndex := 0;
    try
    while not ADODataSet1.EOF do
    begin
    sName := ADODataSet1CompanyName.Value;
    CNode2 := AddChild(CNode, sName);
    CNode2.ImageIndex := 1;
    while not ADODataSet2.EOF do
    begin
    sName := ADODataSet2OrderID.AsString;
    CNode3 := AddChild(CNode2, sName);
    CNode3.ImageIndex := 2;
    ADODataSet2.Next;
    end;
    ADODataSet1.Next;
    end;
    finally
    EndUpdate;
    end;
    end;
    end;
    </pre&gt

    Comment


    • #3
      Hallo,

      bei mir ist die Anzahl der Ebenen abhängig vom User (wie viel er eingibt). Die Tabellenstruktur im groben:

      tblItem

      IDItem
      Bezeichnung
      SuperItem ForeignKey: tblItem.IDItem

      Ich glaube Shape ist mehr für Master->Detail Beziehungen gedacht, in meinem Fall für 2 Ebenen, es treten aber in der normalen Anwendung wahrscheinlich min. 3 Ebenen auf und die Anzahl soll auf jeden Fall unabhängig vom Programmcode sein.

      Ich bin jedoch in ADO erst ziemlicher Anfänger und hoffe das ich alles richtig interpretiert habe.

      Auf jeden Fall vielen Dank für die Bemühungen.

      mfg
      Georg

      Comment


      • #4
        Hallo,

        bei mir ist die Anzahl der Ebenen abhängig vom User (wie viel er eingibt). Die Tabellenstruktur im groben:

        tblItem

        IDItem Primary Key
        Bezeichnung String
        SuperItem ForeignKey: tblItem.IDItem

        Ich glaube Shape ist mehr für Master->Detail Beziehungen gedacht, in meinem Fall für 2 Ebenen, es treten aber in der normalen Anwendung wahrscheinlich min. 3 Ebenen auf und die Anzahl soll auf jeden Fall unabhängig vom Programmcode sein.

        Ich bin jedoch in ADO erst ziemlicher Anfänger und hoffe das ich alles richtig interpretiert habe.

        Auf jeden Fall vielen Dank für die Bemühungen.

        mfg Georg

        Comment


        • #5
          Hallo,

          bei mir ist die Anzahl der Ebenen abhängig vom User (wie viel er eingibt). Die Tabellenstruktur im Groben:

          tblItem

          IDItem Primary Key <br>
          Bezeichnung String <br>
          SuperItem ForeignKey: tblItem.IDItem <br>

          Ich glaube Shape ist mehr für Master->Detail Beziehungen gedacht, in meinem Fall für 2 Ebenen, es treten aber in der normalen Anwendung wahrscheinlich min. 3 Ebenen auf und die Anzahl soll auf jeden Fall unabhängig vom Programmcode sein.

          Ich bin jedoch in ADO erst ziemlicher Anfänger und hoffe das ich alles richtig interpretiert habe.

          Auf jeden Fall vielen Dank für die Bemühungen.

          mfg Georg

          Comment

          Working...
          X