AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler bei zugriff auf Access DB
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei zugriff auf Access DB

Ein Thema von Gehstock · begonnen am 7. Sep 2007 · letzter Beitrag vom 7. Sep 2007
Antwort Antwort
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 13:32
Datenbank: Access • Zugriff über: ADO
Delphi-Quellcode:
ADOConnection1.open;
ADOConnection1.GetTableNames(st);
 for i := 0 to st.Count-1 do
   TreeView1.Items.Add(NIL,(st.Strings[i]))
versuche mir grad ne datenbank mit hilfe eines Treeviews darzustellen bekomme aber beim ausführen ein "Access Violation....."
Marcel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 13:34
Hast du mal Count überprüft?
Markus Kinzler
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 13:38
da ist der wurm drin
ButtonOpen.Caption:=inttostr(st.count) bringt selben fehler
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#4

Re: Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 13:41
Dann würde ich mal grob schätzen, dass st nil ist.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 14:29
Delphi-Quellcode:
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;
erzeugt keine untereinträge
Marcel
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 15:29
So gehts das auch nicht.
Zunächst empfehle ich eine lokale Variable für die TreeNodes:
Delphi-Quellcode:
var
   tnodes : TTreeNode:
begin
  tnodes := TreeView1.Items;
Dann ist es so, dass tnodes.Add() ein TTreeNode-Objekt zurückgibt.
(man beachte den Unterschied zwischen TTreeNode und TreeNodes)
Dieser Knoten muss zwischengespeichert werden:
Delphi-Quellcode:
var
  node : TTreeNode;
...
begin
  ...
    node := tnodes.Add(nil,st.Strings[i]);
Das Property Selected wird hier überhaupt nicht benötigt.
  tnodes.AddChild(node, ADOQuery1.FieldByName('Feld1').AsString);
Andreas
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Fehler bei zugriff auf Access DB

  Alt 7. Sep 2007, 15:38
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
Marcel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 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