dbLookupCombobox
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
dbLookupCombobox
Hallo Gemeinde,
denke schon ich bin ganz Plemplem. Ich habe eine ZQuery (also Zeos) mit einer datasorce verbunden und dann eine dblookupCombobox mit dieser (in der ListSource) verbunden. Wenn ich das mit einem Grid tue, ist alles OK, aber mit der Conmbobox funktioniert das nicht. Was könnte ich falsch machen?
denke schon ich bin ganz Plemplem. Ich habe eine ZQuery (also Zeos) mit einer datasorce verbunden und dann eine dblookupCombobox mit dieser (in der ListSource) verbunden. Wenn ich das mit einem Grid tue, ist alles OK, aber mit der Conmbobox funktioniert das nicht. Was könnte ich falsch machen?
-
- Beiträge: 36
- Registriert: Fr 17. Okt 2008, 19:24
- OS, Lazarus, FPC: Debian X64, Lazarus 1.1, FPC 2.7.1
- CPU-Target: x86, ARM
Re: dbLookupCombobox
Tja, also aufgrund dieser präzisen Fehlerbeschreibung kann dir hier sicher jeder helfen...
Was tust du?
Was erwartest du?
Was passiert?
Wie schaut der zugehörige Source aus?
Luggi
Was tust du?
Was erwartest du?
Was passiert?
Wie schaut der zugehörige Source aus?
Luggi
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: dbLookupCombobox
Ja, du hast ja so recht. War gestern Abend ein bisschen durch den Wind.
Also erstmal von hinten gefragt: gibt es, soweit ihr wisst irgendein Problem mit Zeos auf MYSQL und dblookupcomboboxen?
Ich habe eigentlich etwas ganz Simples probiert. In einem DataModul habe ich alle meine "Datencontrolls". Dort befindet sich ein u.a. ein zconnect auf eine Datenbank, ein zquery mit einem SQL-Befehl (select ID, name from table ) auf jene Datenbank und eine Datasource, die auf diese query zeigt. Nun wollte ich in einem anderen Formular ein dblookupcombobox, die den Namen aus dem Query anzeigt.
Ich setze also bei den Eigenschaften der Combobox das Attribut ListSource auf die DataSource. Im Attribut ListField werden auch ganz brav die beiden Felder ID und Name angezeigt. Ich Wähle name und denke gut ist. Aber wenn ich die Anwendung starte kommt in der Combobox gar nichts.
Versuche ich dasselbe mit einem dbGrid, dann geht das.
Code habe ich noch gar keinen generiert, außer, dass ich das Datenmodul in den Quelltext des Formulars eingebunden habe (uses datamodul).
Also erstmal von hinten gefragt: gibt es, soweit ihr wisst irgendein Problem mit Zeos auf MYSQL und dblookupcomboboxen?
Ich habe eigentlich etwas ganz Simples probiert. In einem DataModul habe ich alle meine "Datencontrolls". Dort befindet sich ein u.a. ein zconnect auf eine Datenbank, ein zquery mit einem SQL-Befehl (select ID, name from table ) auf jene Datenbank und eine Datasource, die auf diese query zeigt. Nun wollte ich in einem anderen Formular ein dblookupcombobox, die den Namen aus dem Query anzeigt.
Ich setze also bei den Eigenschaften der Combobox das Attribut ListSource auf die DataSource. Im Attribut ListField werden auch ganz brav die beiden Felder ID und Name angezeigt. Ich Wähle name und denke gut ist. Aber wenn ich die Anwendung starte kommt in der Combobox gar nichts.
Versuche ich dasselbe mit einem dbGrid, dann geht das.
Code habe ich noch gar keinen generiert, außer, dass ich das Datenmodul in den Quelltext des Formulars eingebunden habe (uses datamodul).
Re: dbLookupCombobox
Eine Mengepaulderfinne hat geschrieben:Was könnte ich falsch machen?

Was hast du denn bei Datasource und Datafield eingetragen?
hde
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: dbLookupCombobox
Doch. Zumindes ein Feld davon. Wozu ist denn das Ding sonst da? Aber anscheinend mache ich wirklich eine Menge falsch.hde hat geschrieben: was soll denn die DBLookupComboBox machen? Das Ergebnis deine SQL-Abfrage doch wohl hoffentlich nicht?
Dann frage ich anders herum: Wie kann ich eine Combobox kreieren in der das Resultat einer Datenbankabfrage steht? In der Zwischenzeit habe ich eine kleine Routine geschrieben (aus lauter Verzweiflung), die eine normale Combobox mit den Daten meiner Abfrage füllt. Aber ich denke, das kann es doch nicht sein, oder?
Re: dbLookupCombobox
Ein klassischer Fall ist der Umgang mit Fremdschlüsseln. Angezeigt werden soll z.B. der Name eines Kunden (bzw. eine Auswahlliste mit den Namen), gespeichert werden soll aber die Kundennummer.paulderfinne hat geschrieben: Wozu ist denn das Ding sonst da?
knight
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: dbLookupCombobox
Aber genau das will ich ja, krieg es aber nicht hin...knight hat geschrieben: Ein klassischer Fall ist der Umgang mit Fremdschlüsseln. Angezeigt werden soll z.B. der Name eines Kunden (bzw. eine Auswahlliste mit den Namen), gespeichert werden soll aber die Kundennummer.
Re: dbLookupCombobox
Was hast du denn bei 'ListSource' und 'KeyField' eingetragen?
knight
knight
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: dbLookupCombobox
Bei Listsource die datasource, die wiederum auf den query zeigt, der meine Daten enthält ('select name, ID from table order by name') und bei Keyfield das name-Feld (sie ließen sich beide auswählen).knight hat geschrieben:Was hast du denn bei 'ListSource' und 'KeyField' eingetragen?
knight
Dann habe ich versucht die datasource im Objektinspektor vom dbLookupComboBox sowohl leer zu lassen, als uch mit der gleichen datasource wie bei List source zu füllen und bei datafield sowohl name als auch ID einzugeben. Jedes Mal leeere dbLookupComboBox.
Wenn ich nur eine dbComboBox verwende, erscheint nur der letze Name des SQL-Befehls. Verwemde ich einen Grid. alles OK.
Re: dbLookupCombobox
die DBLookupComboBox ist für eine völlig anderen Zweck gedacht als du sie verwenden willst. Das Ergebnis einer einfachen SQL-Abfrage anzeigen, das kann sie nicht.
hde
Wenn du ein Feld aus einer einfachen SQL-Abfrage nicht im DBGrid sondern einer Combobox anzeigen willst ist etwas Handarbeit möglich, du musst sie nach der Abfrage füllenknight hat geschrieben:Ein klassischer Fall ist der Umgang mit Fremdschlüsseln. Angezeigt werden soll z.B. der Name eines Kunden (bzw. eine Auswahlliste mit den Namen), gespeichert werden soll aber die Kundennummer.
hde
Re: dbLookupCombobox
Unter Keyfield muß die ID ausgewählt werden. Für ein sinnvolles Ergebnis dürfen Listsource und Datasource nicht gleich sein. Unter Datasource muß eine Verbindung zu der Tabelle hergestellt werden, in der die Daten eingetragen werden sollen (z.B. Listsource -> Kundentabelle, Datasource -> Auftragstabelle).paulderfinne hat geschrieben: Bei Listsource die datasource, die wiederum auf den query zeigt, der meine Daten enthält ('select name, ID from table order by name') und bei Keyfield das name-Feld (sie ließen sich beide auswählen).
Dann habe ich versucht die datasource im Objektinspektor vom dbLookupComboBox sowohl leer zu lassen, als uch mit der gleichen datasource wie bei List source zu füllen und bei datafield sowohl name als auch ID einzugeben. Jedes Mal leeere dbLookupComboBox.
Wenn die DBLookupCombobox leer bleibt - hast du geprüft, ob über die Query Komponente überhaupt Daten geliefert werden (ein Tippfehler im SQL Kommando kann große Auswirkungen haben).
knight
Re: dbLookupCombobox
@knight
wenn ich das richtig sehe, will und braucht er kein "LookUp" sondern will einfach ein Feld seiner SQL-Abfrage anzeigen.
wenn ich das richtig sehe, will und braucht er kein "LookUp" sondern will einfach ein Feld seiner SQL-Abfrage anzeigen.
Re: dbLookupCombobox
@Paulderfinne
nimm eine normale ComboBox und fülle die Lines bei jeder SQL-Abfrage. Die max 5 Zeilen wird man doch schreiben können
nimm eine normale ComboBox und fülle die Lines bei jeder SQL-Abfrage. Die max 5 Zeilen wird man doch schreiben können

-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: dbLookupCombobox
Ja, das habe ich jetzt auch getan. Dachte halt bei relationalen Datenbanken kommt sowas doch häufig vor. OK Danke für eure Tipps. Ich habe die Lösung jetzt mit "Befüllen zu Fuß"hde hat geschrieben:@Paulderfinne
nimm eine normale ComboBox und fülle die Lines bei jeder SQL-Abfrage. Die max 5 Zeilen wird man doch schreiben können