![]() |
Datenbank: Access • Zugriff über: ADO
Fehler bei zugriff auf Access DB
Delphi-Quellcode:
versuche mir grad ne datenbank mit hilfe eines Treeviews darzustellen bekomme aber beim ausführen ein "Access Violation....."
ADOConnection1.open;
ADOConnection1.GetTableNames(st); for i := 0 to st.Count-1 do TreeView1.Items.Add(NIL,(st.Strings[i])) |
Re: Fehler bei zugriff auf Access DB
Hast du mal Count überprüft?
|
Re: Fehler bei zugriff auf Access DB
da ist der wurm drin
Delphi-Quellcode:
bringt selben fehler
ButtonOpen.Caption:=inttostr(st.count)
|
Re: Fehler bei zugriff auf Access DB
Dann würde ich mal grob schätzen, dass st nil ist.
|
Re: Fehler bei zugriff auf Access DB
Delphi-Quellcode:
erzeugt keine untereinträge
procedure TfrmMain.Button1Click(Sender: TObject);
var st: TStringList; i: integer; begin st:=TStringList.Create; ADOConnection1.GetTableNames(st,False); TreeView1.Items.Clear; for i:=0 to st.Count - 1 do begin TreeView1.Items.Add(nil,st.Strings[i]); TreeView1.selected; ADOQuery1.Close; while ADOQuery1.Active do ADOQuery1.Close; ADOQuery1.SQL.Text := 'select * from '+TreeView1.selected.text; ADOQuery1.Open; While Not ADOQuery1.Eof do begin TreeView1.Items.AddChild(TreeView1.Selected,ADOQuery1.FieldValues['Feld1']); ADOQuery1.Next; end; end; st.Free; end; |
Re: Fehler bei zugriff auf Access DB
So gehts das auch nicht.
Zunächst empfehle ich eine lokale Variable für die TreeNodes:
Delphi-Quellcode:
Dann ist es so, dass tnodes.Add() ein TTreeNode-Objekt zurückgibt.
var
tnodes : TTreeNode: begin tnodes := TreeView1.Items; (man beachte den Unterschied zwischen TTreeNode und TreeNodes) Dieser Knoten muss zwischengespeichert werden:
Delphi-Quellcode:
Das Property Selected wird hier überhaupt nicht benötigt.
var
node : TTreeNode; ... begin ... node := tnodes.Add(nil,st.Strings[i]);
Delphi-Quellcode:
tnodes.AddChild(node, ADOQuery1.FieldByName('Feld1').AsString);
|
Re: Fehler bei zugriff auf Access DB
Delphi-Quellcode:
Procedure OpenDB;
var st: TStringList; i: integer; tnodes : TTreeNodes; node : TTreeNode; begin tnodes := frmmain.TreeView1.Items; st:=TStringList.Create; frmmain.ADOConnection1.GetTableNames(st,False); frmmain.TreeView1.Items.Clear; for i:=0 to st.Count - 1 do begin while frmmain.ADOQuery1.Active do frmmain.ADOQuery1.Close; frmmain.ADOQuery1.SQL.Text := 'select * from '+st.Strings[i]; frmmain.ADOQuery1.Open; node := tnodes.Add(nil,st.Strings[i]+inttostr(frmmain.ADOQuery1.RecordCount)); While Not frmmain.ADOQuery1.Eof do begin tnodes.AddChild(node, frmmain.ADOQuery1.FieldByName('Feld1').AsString); frmmain.ADOQuery1.Next; end; end; st.Free; end; Danke klappt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 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