Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DBLookUpComboBox Datensatz auswählen und anzeigen (https://www.delphipraxis.net/192197-dblookupcombobox-datensatz-auswaehlen-und-anzeigen.html)

Khanysha 28. Mär 2017 09:04

Datenbank: SQLite • Version: 3.9.2 • Zugriff über: UniDAC

DBLookUpComboBox Datensatz auswählen und anzeigen
 
Hallöchen zusammen.

Ich bin mal wieder dabei mit einer Datenbank zu spielen(spielen kann man fast nimmer sagen, da es diesmal ernst wird). Ich habe dieses Mal verschiedene DBLookUpComboBoxen, habe Datasets und Tables dazu. Ich bin mittlerweile auch soweit das im DropDown Menü was steht, auch das was ich haben will. Nun möchte ich aber einen Datensatz auswählen und in der DBLUCbb anzeigen lassen. Wenn ich einen Datensatz anklicke steht allerdings nur (Memo) in der DBLUCbb, nicht das was ich eigentlich ausgewählt habe. Ich bin über KeyFields gestolpert bei meiner Suche, aber habe nicht genau verstanden was ich da reinklimpern muss. Mir wurde gesagt, dass eine DBLUCbb 2 Datasets braucht, welche wohin zeigt ist mir auch noch nicht ganz schlüssig.
Im weiteren Verlauf muss ich dann die ID auslesen damit ich damit das Ganze wieder in eine Tabelle schreibe, aber da komme ich noch hin. Eins nach dem Anderen.

Hat jemand einen Denkanstoss, damit meine DBLUCbb auch anzeigen was ich auswähle?

LG dat Lizz

nahpets 28. Mär 2017 10:11

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
DataSource und DataField beziehen sich auf die Tabelle, in der sich die ausgewählten Daten befinden sollen.

Dies sind die Daten der "Zieltabelle".

LockupSource ist die Datenquelle, in der nachgeschlagen werden soll. LockupField das Feld aus dieser Tabelle.
LockupDisplay ist das Feld, dass in der DBLookupCombobox angezeigt werden soll.

Hierbei handelt es sich um die Daten aus der "Nachschlagtabelle".

D. H.: Die hier ausgewählten Werte werden in die Zieltabelle übernommen.

Nehmen wir an, wir haben als Zieltabelle einer Mitarbeiterverwaltung die Tabelle Mitarbeiter mit Z. B. Name, Vorname, Angestelltenverhältnis ...

Die DBLookupCombobox soll für das Angestelltenverhältnis genutzt werden.

Das unterschiedlichen Möglichkeiten der Angestelltenverhältnis stehen in der Tabelle AngestelltenArten mit den Spalten ID und Text.

Die Zuweisung für die DBLookupCombobox könnte dann sinngemäß ungefähr so aussehen:
Delphi-Quellcode:
DBLookupCombobox.DataSource := Mitarbeiter;
DBLookupCombobox.DataField := Angestelltenverhältnis;
DBLookupCombobox.LockupSource := AngestelltenArten;
DBLookupCombobox.LockupField := ID;
DBLookupCombobox.LockupDisplay := Text;

Khanysha 28. Mär 2017 12:29

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
Danke erstmal für deine Antwort. Ich versuche deine Antwort auf mein Problem zu Münzen und schreibe nochmal, wenn es fehlgeschlagen ist oder funktioniert hat. Habe das Gefühl, dass sich da was verknotet hat :D

Khanysha 29. Mär 2017 07:35

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
Okay, das mit dem ummünzen funktioniert nicht so recht, beziehungsweise nachdem ich es aufgemalt habe weiß ich nun was was sein sollte. LookupSource, -Display und -Field gebe ich im Quelltext an oder finde ich das im Objektinspektor?

Das Ding ist halt ich finde in der Codevervollständigung LookupSource und so nicht. Hatte eben schon... oh... mir ist grad was aufgefallen, dass meine Cbb eine TcxDBLookUpCbb ist und die kann anscheinend was anderes als die "normale" DBLookUpCbb.... Entschuldige.

Edit:
Ich bin schon mal ein Stück weiter und bekomme immerhin (MEMO) statt dem ausgewählten Text angezeigt, es fühlt sich zumindest so an, als wenn ich n Stück weiter wäre :D

Jumpy 29. Mär 2017 11:11

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
Das Problem mit dem (MEMO) ist doch wahrscheinlich der Datentyp des Feldes in der dahinter stehenden Tabelle. Wenn das irgendwas großes ist, CLOB, LONG o.ä., dann kann ein Edit und auch das Edit der Combobox das ggf. nicht anzeigen und dann kommt dieses (MEMO), oder (VARBYTES) hab ich auch schon gesehen.

Khanysha 29. Mär 2017 12:42

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
Japp, es stellte sich raus das es ein Problem beim Mapping gibt, da SQLite kein String kennt sondern nur Text. Da ich aber meinen Text nicht auf x Zeichen begrenzt habe ging es wohl davon aus das ein Text in der Größe eines Memos reinkommt. So hab ich das nun verstanden. Ich habe dann beim Data type Mapping gesagt das Text = String ist.

Das mit dem Databinding und Listsource ist nun auch offensichtlich. Nun setze ich mich daran das Ausgewählte beim Beenden zu speichern *schnuuf*

Danke für die Antworten :thumb:

haentschman 29. Mär 2017 13:13

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
Hallöle...:P
Zitat:

Ich bin mal wieder dabei mit einer Datenbank zu spielen(spielen kann man fast nimmer sagen, da es diesmal ernst wird).
[immer wieder meine Meinung]
Lass die Finger von den datensensitiven Controls. :warn: Auch wenn es einen schnellen Erfolg verspricht...die Nachteile heben das nicht auf. :?
Zitat:

es stellte sich raus das es ein Problem beim Mapping gibt, da SQLite kein String kennt sondern nur Text
Wenn ein Control vom Datentyp der entsprechenden Spalte des DBMS abhängig ist ist imho was faul. :?

Du tust du dir selbst einen Gefallen die Daten klassisch mit verschiedenen Querys aus der DB zu holen (TDataSet oder TObjectList) und in klassischen Controls darzustellen. :wink: Spätestens wenn du über die DB Normalisierung, was zwingend zu einer vernüftigen DB gehört, nachdenkst, hast du keine Chance mehr datensensive Controls zu benutzen. Wenn dir die Controls nicht mehr gefallen kannst du sie auch nicht einfach austauschen...usw. Auch wenn es klassisch mehr Arbeit erscheint, du bist flexibler. :thumb:
Stichworte:
https://de.wikipedia.org/wiki/Normal...ng_(Datenbank)
https://de.wikipedia.org/wiki/SQL#Ab...pften_Tabellen

...wenn du eh schon anfängst, mache es gleich zukunftssicher...nämlich richtig... :thumb:

[/immer wieder meine Meinung]

Khanysha 3. Apr 2017 10:05

AW: DBLookUpComboBox Datensatz auswählen und anzeigen
 
Meine DB ist normalisiert, auf dem Papier, hatten wir ja grad im Turnus. Das Projekt soll nachher nicht mit anderen DBMS funktionieren, es ist ein internes Projekt, welches zeitgleich mein Abschlussprojekt ist. Wir haben mit SQLite angefangen und bringen es damit auch zuende, also muss ich mit solchen Sachen wie: SQLite kann kein Datum und dreht bei Strings und Texten durch, eben leben.

Gefühlt verzweifel ich an den DBLUcbb, weil ich wirklich schleppend vorankomme(Ja speichern geht, aber hab schon wieder das nächste). Eine Funktion mehr funktioniert und bei der Nächsten bin ich schon wieder knappsen und muss sogar Seite 4 bei Google besuchen...

*zuviel Kaffee trinkt und wieder abdampft* :|

LG Lizz


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 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