Problem mit DBLookupComboBox (erl.)

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Problem mit DBLookupComboBox (erl.)

Beitrag von knight »

Hallo,

ich habe ein Problem mit einer DBLookupComboBox. Die Eigenschaften ListSource und ListField sind gesetzt (es sollen nur Daten aus einer Datenbank angezeigt werden). Wenn ich zur Laufzeit die Verbindung zur Datenbank herstelle (mittels Datasource und SQLQuery), dann bleibt die DBLookupComboBox leer. Stelle ich mit dem selben SQL Befehl (select * from ...) die Verbindung über den Objektinspektor her (zur Entwicklungszeit), dann funktioniert es. Bin ich nur zu blöd oder könnte da ein Bug seine Finger im Spiel haben? Ich habe schon alles ausprobiert, was mir eingefallen ist (geänderter SQL Befehl, separate Transaktions-Komponente, Verlagerung in andere Unit, ...), jedoch ohne Erfolg. Das Anzeigen einer Abfrage in einem DBGrid geht ohne Probleme, nur die DBLookupComboBox will mir keine Daten anzeigen.
Der Vollständigkeit halber: Lazarus (aktuelles SVN) 64 Bit mit qt Einstellungen, FPC 2.4.0 RC, Firebird 2.1, Zugriff mittels SQLdb-Komponenten

Ich bin für jede Anregung dankbar.

knight

Nachtrag: Dank fremder Hilfe habe ich eine Lösung für das Problem (falls mal ein anderer darauf stößt): Nachdem die SQLQuery aktiviert wird, muß die ListSource Eigenschaft von DBLookupComboBox nochmal im Quelltext gesetzt werden. Dann klappt es auch mit der Auswahl.

knight

Offspring
Beiträge: 6
Registriert: So 20. Feb 2011, 19:42

Re: Problem mit DBLookupComboBox (erl.)

Beitrag von Offspring »

Hallo,

mein Problem war grade fast genauso. Habe jetzt über nen Tag nur an der Sache gesessen und ich dachte ich schreibe mal meine Sicht und Lösung dazu.
Mein System: Lazarus 0.9.34 32Bit auf Windows 7, FPC 2.6.0, Firebird 2.1.5.

Die Datenbankverbindung habe ich mit den sqldb Komponenten hergestellt.

Hab dafür natürlich 2 sql Queries genutzt, welche daten aus 2 verschiedenen Tabellen holen. NavigatorKomponente und TDBGrid durften natürlich auch nicht fehlen, sowie natürlich die LookupComboBox um die es ja geht. Nun hatte ich das Problem, dass zur Entwurfszeit zwar Daten in der LookupCombobox angezigt wurden, diese jedoch während der Laufzeit leer blieb.
Nachtrag: Dank fremder Hilfe habe ich eine Lösung für das Problem (falls mal ein anderer darauf stößt): Nachdem die SQLQuery aktiviert wird, muß die ListSource Eigenschaft von DBLookupComboBox nochmal im Quelltext gesetzt werden. Dann klappt es auch mit der Auswahl.
Irgendwann hatte ich herausgefunden, dass wenn ich in der Navigator-Komponente auf Editieren und anschließend auf Post klicke plötzlich Daten angezigt wurden. Dann stieß ich irgendwann auf diesen Thread dachte mir ok im Code ändern, aber wenn ich im Code das Query ja gar nicht aktiviere wie dann.

Nach einigem probieren. Dann schließlich:

Code: Alles auswählen

procedure Tfirebird_test.FormShow(Sender: TObject);
begin
  DBLookupComboBox1.ListSource:=Datasource2;
end;


So klappts dann auch mit dem Nachbarn :wink:

Ich hoffe das hilft jemand der auch Probleme mit der LookUpCombobox hat.

PS.: Gibt es da vlt noch andere Möglichkeiten oder andere Lösungen?

Antworten