![]() |
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: ![]() So nun soll er mir alle Daten in ein TreeView ausgeben und richtig ein sortieren. Dazu habe ich folgende Funktion geschrieben:
Delphi-Quellcode:
die Funktion rufe ich dann über eine OnShow Methode auf:
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;
Delphi-Quellcode:
Nun Compliere ich das Ganze und Schau mir das Ergebnis an doch er gibt mir nur folgendes Aus:
procedure TfrmAppOption.TabSheet1Show(Sender: TObject);
begin Tree.Items.Clear; entrys(0); end; 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 |
Re: DB Access und While??????
Moin moin
Das Problem ist, das du dir bei dem rekursivem Aufruf dein Abfrageergebnis zerschiest..
Delphi-Quellcode:
Ruft die Funktion erneut auf, aber :
entrys(SQL.FieldByName('id').AsInteger);
Delphi-Quellcode:
^^ da sprichst du ja die selbe Komponente an die in der 1. Instanz deiner Funktion schon benutzt wurde...
SQL.Active := false;
SQL.CommandText := 'SELECT*FROM app WHERE einordnung='+IntToStr(i)+' ORDER BY sort'; SQL.Active := true; 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:
damit werden ja alle nodes (bis auf PHP) an den obersten Knoten angehängt.
en := Tree.Items.GetFirstNode;
[/edit] [edit2] So, versuch das mal...
Delphi-Quellcode:
und der Aufruf so:
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;
Delphi-Quellcode:
schönen Abend noch
tree.Items.clear;
entrys(0, nil); Sam [/edit2] [edit3] Oh Herr schenk Hirn :-) ganz vergessen: Herzlich Willkommen in der Delphipraxis [/edit3] |
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 11:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz