AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler bei SQL und Combobox.Items.Add
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei SQL und Combobox.Items.Add

Ein Thema von Avax2k · begonnen am 6. Feb 2006 · letzter Beitrag vom 7. Feb 2006
Antwort Antwort
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#1

Fehler bei SQL und Combobox.Items.Add

  Alt 6. Feb 2006, 22:59
Datenbank: ACCESS • Version: 2003 • Zugriff über: ADO
hallo habe folgenden Code..der auch super beim ERSTEN MAL funktioniert!!

Delphi-Quellcode:
procedure TForm1.FillComboBox2 (aCB : TspSkinComboBox);
begin
  try
    ADOQuery7.Close;
    ADOQuery7.SQL.Text := 'SELECT * FROM Test WHERE ID = 7 ORDER BY ID ASC';
    ADOQuery7.Open;
    while not (ADOQuery7.Eof) do
    begin
      aCB.Items.Add(ADOQuery7.FieldByName('ID').AsString);
      ADOQuery7.Next;
    end;
  finally
    ADOQuery7.Free;
  end;
end;
soweit so gut..NUR wenn ich ein zweites Mal die Funktion aufrufe (ist auf einen Button gelegt) dann bekomme ich Fehler : EAccessviolation at address 0048A992 read of address: 00000000.

was ist denn das und wieso kommt da ein Fehler sollte doch problemlos funktionieren und eben bei jedem Druck auf den Knopf alles anzeigen?!

ach ja der Knopf ist so
FillComboBox2(ComboBox1);
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Fehler bei SQL und Combobox.Items.Add

  Alt 7. Feb 2006, 05:59
Guten Morgen.

Wenn du die Query-Komponente am Ende zerstörst, dann kannst du sie nur einmal benutzen. Wenn sich die Ergebnismenge nicht ändert, solltest du sie nur einmal einlesen. Bei deinem SQL-Statement fällt mir auf, dass du ID (PK?) selektierst (1 Treffer), nach ID sortierst und dann auch noch den ID in die ComboBox einträgst. Macht sowas Sinn?

Delphi-Quellcode:
procedure TForm1.FillComboBox2 (aCB : TspSkinComboBox);
begin
  with ADOQuery7 do
  try
    SQL.Text := 'SELECT * FROM Test WHERE ID = 7 ORDER BY ID ASC';
    Open;
    while not Eof do
    begin
      aCB.Items.Add(FieldByName('ID').AsString);
      Next;
    end;
  finally
    Close;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Fehler bei SQL und Combobox.Items.Add

  Alt 7. Feb 2006, 10:59
hallo marabu

abermals darf ich mich für deine Hilfe recht herzlich bedanken.
Jetzt weiss ich, dass ich kein zweites Mal aufKomponenten zugreifen kann sofern diese zuvor freigegeben worden sind..hätte diesen Fehler nur dann entdecken können, wenn Delphi ein wenig präziser mit der Fehlermeldung gewesen wäre oder wenigstens in der Procedur anhalten würde und nicht nach dem Aufruf der Procedur. In dem Beispiel habe ich mit Absicht eine feste ID genommen um sicherzustellen, dass das von mir gewollte auch tatsächlich funktioniert. Es wird aber "umgebaut" und es wird nach mehreren Kriterien gesucht. Aber wie du sagtest sonst mit lediglich der Verwendung eines Parameters hätte diese Funktion gar keinen Sinn.

Nochmals danke, auf dich kann ich immer zählen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Fehler bei SQL und Combobox.Items.Add

  Alt 7. Feb 2006, 11:10
Zitat von Avax2k:
..hätte diesen Fehler nur dann entdecken können, wenn Delphi ein wenig präziser mit der Fehlermeldung gewesen wäre oder wenigstens in der Procedur anhalten würde und nicht nach dem Aufruf der Procedur.
Kenst Du FastMM (wird auch in D2006 verwendet). Dies ist ein anderer Memory-Manager der die solche Fehler besser meldet (so in der Art: "Auf freigegebenen Speicherbereich wird zugegriffen")
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 23:56 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