AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TDBLookupComboBox... items

Ein Thema von JRichmann · begonnen am 7. Feb 2015 · letzter Beitrag vom 7. Feb 2015
Antwort Antwort
JRichmann

Registriert seit: 8. Dez 2009
Ort: Pattensen
57 Beiträge
 
Delphi XE5 Architect
 
#1

TDBLookupComboBox... items

  Alt 7. Feb 2015, 20:51
Hallo zusammen,

ich habe eine vermutlich sehr einfache Frage:

Ich habe eine TDBLookupComboBox welche derzeit ganz einfach gefüllt wird.

"Select id, Name from Tabelle"

In der Tabelle sind (als Beispiel) 3 Einträge

id: Name
1: rot
2: grün
3: gelb

Der User kann einen der 3 Einträge wählen.


mein Problem / Frage ist nun folgende:

In dem Datensatz in welchem die TDBLookupComboBox verwendet wird gibt es ein weiteres Feld.
Anhand von diesem Feld wird bestimmt welche der der 3 Einträge zu Auswhal zur Verfügung stehen.

Anders formuliert: Das Feld besagt, das der User nicht eins der 3 Items wählen kann, sondern nur 2 vorgeschalgen werden dürfen.

Wie kann man das machen ?

In UI ist es so, dass der User zunächst das Feld füllt, welches bestimmt was er wählen darf (im gleichen Record).
Dann klickt er auf die TDBLookupComboBox...

...und jetzt muss die TDBLookupComboBox gefiltert werden, da nicht mehr alle Einträge erlaubt sind.

Wie kann man so etwas machen ?


Grüße und Danke...


...Jörg
Jörg Richmann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 21:07
Diese Bedingung mit in das select-Statement mit aufnehmen.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 22:21
@JRichmann:

Wenn ich dich richtig verstanden habe, möchtest irgendwie in der DB speichern, welche Einträge deiner Subtabelle für jeden Eintrag in der Haupttabelle zur Auswahl stehen dürfen. Um das zu erreichen, gibt es meiner Erfahrung nach zwei Wege:

1. CSV-String in Spalte
Du könntest in einer zusätzlichen Spalte deiner Haupttabelle angeben, welche Einträge verfügbar sind. Der String sähe dann z.B. so aus: '1;3'

2. Du legst eine 1:1-Tabelle an
In dieser Verknüpfungstabelle speicherst die Id des Haupttabellen-Records und die Id der Farbentabelle. Dort steht dann z.B.:

Id_MainId_Farbe
11
13

Im zweiten Fall würde es sich anbieten, ein View (Sicht, vordefiniertes Select mit Join) in der DB zu hinterlegen, so daß du dieses View ganz leicht in mit einer TDBLookupComboBox darstellen kannst. Ich selbst verwende vorwiegend die zweite Lösung und biete dem Benutzer, der die verfügbaren Subeinträge (hier: Farben) auswählen können soll, eine TCheckListBox an, mit der er die 1:1-Tabelle bearbeiten kann. Alternativ legst du ein Lookup-Feld in der TQuery an, die deine 1:1-Tabelle enthält. Beim Scrollen der Haupttabelle (AfterScroll) setzt du dann den Filter für deine 1:1-Tabelle und gut ist.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 22:27
@Perlsau

Ich glaube den TE so zu verstanden haben, dass er weiß welche Daten und wie die zusammengehören. Es fehlt ihm bei "Wie sage ich das jetzt der ComboBox"
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 22:35
Aber genau das erkläre ich ihm doch!

Wenn er alle Einträge der Farben-Tabelle in der ComboBox haben wollte, wär's einfach. Aber genau das will er ja offenbar nicht. Er will, soweit ich ihn verstanden habe, für jeden Eintrag in der Haupttabelle festlegen, welche Farben überhaupt möglich sind. Bei drei Farben können also 1 bis drei Einträge notwendig sein, um festzulegen, welche Farbe für den jeweiligen Record der Haupttabelle überhaupt erlaubt ist. Mit der ComboBox will er am Ende ja nur einen Eintrag auswählen können, aber eben nicht aus allen verfügbaren, sondern nur aus allen erlaubten Farben. Wie würdest du das lösen?

Und weil ich dich grad "an der Strippe" habe: Wie ging das nochmal mit der Tabellendarstellung im BBCode? In der Hilfe steht nur, wie man eine Tabelle beginnt und beendet, nicht jedoch, wie man gleich breite Spalten festlegt ...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 22:41
Er schreibt ja, dass er da ein Feld hat, an dem er das festmachen kann welche Einträge in die Combobox müssen, also impliziere ich mal auf der Datenseite ist er fertig. Wie Markus gesagt hat, er muss diese Bedingung in den Select für die ComboBox-Daten aufnehmen und natürlich noch einen Refresh.

Bzgl. der Tabelle:

Einfach diesen Beitrag hier zitieren, dann siehst du den Code
Id_MainId_Farbe
11
13
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 7. Feb 2015 um 23:56 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 22:53
Naja, ich weiß nicht, was in diesem Feld der Haupttabelle, das die erlaubten Einträge beinhaltet, genau steht, denn dieses Feld hat er nicht näher umschrieben. Doch davon ist die Lösung eigentlich schon abhängig. Stehen da Ziffern (z.B. 1;3), Farben (Rot;Blau), Kürzel (R;B) oder was kryptisches? Wenn er ins Select der Combobox aufnehmen will, welche Farben erlaubt sind, benötigt er den PK der gewünschen Farbeneinträge. Mir ist nicht so recht klar, was du hier kritisierst

Weil mir ähnliche Problemstellungen schon öfters begegnet sind, habe ich eine aus meiner Sicht grundsätzliche Lösung gepostet. Was ist daran auszusetzen?

Danke für die BBCode-Tabellen-Nachhilfe, habs für spätere Verwendung gesichert
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#8

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 23:09
Wie Uwe gesagt hat
Hat Markus einen zweiten Vornamen?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: TDBLookupComboBox... items

  Alt 7. Feb 2015, 23:56
Wie Uwe gesagt hat
Hat Markus einen zweiten Vornamen?
Ihr seid auch nicht irgendwie verwandt? - Scheint wohl ein Fehler in der Matrix zu sein
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:58 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