Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DB Access und While?????? (https://www.delphipraxis.net/20682-db-access-und-while.html)

Funjoy 21. Apr 2004 14:13


DB Access und While??????
 
Hallo Delphi coder,

Ich habe ein kleines Problem mit einer ausgabe von Daten aus meiner Access DB. Ich bin noch neuling in Delphi bzw. Object Pascal und weiß nun nicht mehr weiter :gruebel:
Also meine DB ist folgendermaßen aufgebaut:
http://people.freenet.de/funjoy/screenDB.gif

So nun soll er mir alle Daten in ein TreeView ausgeben und richtig ein sortieren. Dazu habe ich folgende Funktion geschrieben:
Delphi-Quellcode:
function TfrmAppOption.entrys(i: Integer): TTreeNode;
var st: String;
    x: Integer;
    en: TTreeNode;
 begin
   SQL.Active := false;
   SQL.CommandText := 'SELECT*FROM app WHERE einordnung='+IntToStr(i)+' ORDER BY sort';
   SQL.Active := true;
   while not SQL.Eof do
    begin
      if SQL.FieldByName('einordnung').AsInteger = 0 then
       begin
         with Tree.Items do
          begin
            st := SQL.FieldByName('appname').AsString;
            entrys := Add(nil,st);
          end;
       end
      else
       begin
         with Tree.Items do
           begin
           st := SQL.FieldByName('appname').AsString;
           en := Tree.Items.GetFirstNode;
           entrys := ADDChild(en,st);
           end;
       end;
       entrys(SQL.FieldByName('id').AsInteger);
       SQL.Next;
    end;  
 end;
die Funktion rufe ich dann über eine OnShow Methode auf:
Delphi-Quellcode:
procedure TfrmAppOption.TabSheet1Show(Sender: TObject);
 begin
   Tree.Items.Clear;
   entrys(0);
 end;
Nun Compliere ich das Ganze und Schau mir das Ergebnis an doch er gibt mir nur folgendes Aus:
Java Script
- Alert Box

Warum geht er nicht alles durch und liefert folgendes Ergebnis:
Java Script
- Alert Box
- PopUp

PHP
- Echo

Bitte Um Hilfe :|

MfG Funjoy

BluesKid 21. Apr 2004 15:43

Re: DB Access und While??????
 
Moin moin

Das Problem ist, das du dir bei dem rekursivem Aufruf dein Abfrageergebnis zerschiest..

Delphi-Quellcode:
  entrys(SQL.FieldByName('id').AsInteger);
Ruft die Funktion erneut auf, aber :

Delphi-Quellcode:
  SQL.Active := false;
  SQL.CommandText := 'SELECT*FROM app WHERE einordnung='+IntToStr(i)+' ORDER BY sort';
  SQL.Active := true;
^^ da sprichst du ja die selbe Komponente an die in der 1. Instanz deiner Funktion schon benutzt wurde...

Du musst deine Querys zur Laufzeit erstellen, so dass für jeden Durchlauf der Funktion auch eine eigene Abfrage erzeugt wird...


schönen Gruß

Sam

[edit]

und das wird so glaub ich nicht funktionieren:

Delphi-Quellcode:
  en := Tree.Items.GetFirstNode;
damit werden ja alle nodes (bis auf PHP) an den obersten Knoten angehängt.

[/edit]

[edit2]

So, versuch das mal...

Delphi-Quellcode:
procedure TForm1.entrys(i : Integer; aParent : TTreenode);
var st: String;
    myQuery : TADOQuery;
begin
  myQuery := TADOQuery.create(Self);
  with myQuery do begin
    connection := ADOConnection1; //oder wie auch immer du nach Access Connectest ;-)
    close;
    sql.clear;
    sql.add('Select *from app where einordnung= '+ 
             IntToStr(i)+
            ' ORDER BY sort');
    open;

    while not Eof do begin
      with Tree.Items do begin
        st := FieldByName('appname').AsString;
        entrys(FieldByName('id').AsInteger, ADDChild(aParent,st));
      end;//with
      Next;
    end;/eof = true
  end;//with
  myQuery.free;
end;
und der Aufruf so:

Delphi-Quellcode:
  tree.Items.clear;
  entrys(0, nil);
schönen Abend noch

Sam

[/edit2]

[edit3]

Oh Herr schenk Hirn :-) ganz vergessen:

Herzlich Willkommen in der Delphipraxis


[/edit3]

Funjoy 21. Apr 2004 16:14

Re: DB Access und While??????
 
Hi BluesKid Danke :thuimb:
Muss jetzt nur noch durch die Procedur durchblicken aber ansonsten funktioniert das schonmal :-D

MfG Funjoy


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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