Autor Beitrag
tortom1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: So 23.04.06 21:40 
Hallo,
kennt jemand eine Möglichkeit, wie man bei einer DBLookupComboBox,welche mit einer Tabelle verbunden ist, einen Wert zur Anzeige vorauswählen/angeben kann.

DBLookupComboBox1.text:='Eintrag1'; -> das funzt leider nicht....

Hintergrund: Ich möchte quasi zwei DBLookupComboBox'en miteinander "synchronisieren", die auf zwei unterschiedlichen Formularen sind, so das, wenn ein Wert bei der ersten DBLookupComboBox angewählt wurde, dieser auch bei der zweiten DBLookupComboBox angewählt ist.
Beste Grüße
Tortom
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Mo 24.04.06 10:34 
Moin :-)
wenn beide DBLookupComboboxen die selbe Datenquelle benutzen, dann wird eine Synchronistaion automatisch erfolgen..
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Mo 24.04.06 11:42 
Hi, das ist schon klar.
Aber:
Meine DBLookupComboboxen dienen der Filterung einer anderen Tabelle. Setze ich nun in der einen DBLookupCombobox einen Filter, so ist die Datenmenge, welche in einem Grid angezeigt wird, gefiltert. Nun befinde ich mich auf einem anderen Formular und greife auf die gleiche, immer noch gefilterte Datenmenge zu. Da wäre es doch schön, in der dortigen DBLookupCombobox (Box2) den gesetzten Filter angezeigt zu bekommen, denn sonst weiß man ja nicht, ob und wenn ja welcher Filter vorher in Box1 gesetzt wurde.
Da die DBLookupComboboxen jedoch nicht miteinander synchronisiert sind, zeigt die erste
DBLookupCombobox den Filter zwar richtig an, die zweite DBLookupCombobox jedoch den Startzustand dieser DBLookupCombobox bzw. den letzten in dieser Box2 gesetzten Filter.
Jetzt ist es ja ein leichtes, den Filter der Box1 auszulesen, jedoch gelingt es mir nicht, diesen in der Box 2 zur Information über den Filterzustand einzustellen.... that's my problem
Grüße
Tortom
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Di 25.04.06 11:16 
Moin :-)
Also...ich versuch das mal zu kapieren ;-) :
1.DBLookupCombobox1 zeigt 'Filterausdrücke' für TabelleXYZ an, auf welche die TAbelleXYZ gefiltert werden kann.
Okay...
In einem weiteren Formular wird auf die gefilterte TabelleXYZ zugegriffen, der BEnutzer soll den Filter 'erkennen' können -> wie wäre es mit einem Label, in dem der über DBLookupComboBox1 eingestellte Filterausdruck angezeigt wird?
Was soll die DBLookupCombobox2 auf dem 2.Formular bewirken bzw. aus welcher Quelle wird diese bedient? Soll mit der 2.Box die gefilterte TAbelle wiederum anders gefiltert werden? :gruebel:
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Di 25.04.06 21:10 
Hi,
schön das Du dir die Mühe machst, mein "Problem" zu erkennen.
Klar geht das mit 'nem Label, aber mal ehrlich:
Wenn man mittels einer Combobox im Programm Filter setzen soll/kann, dann möchte ich als User nicht mittels irgendwelcher Label den Filterzustand einer Tabelle erfahren, sondern natürlich schon der Einfachheit halber von der Combobox selber, welche ich zum filtern verwende. Also alles an einem Punkt auf einen Blick.
Z.B.:
Stell dir mal bitte eine Tabelle Telefonbuch vor. Diese wird nun nach z.B. Schreinern über eine nach Namen sortierte Combobox gefiltert, welche z.B. als mögliche Filterbegriffe verschiedene Berufsbezeichnungen in fachlicher Reihenfolge enthält.
Habe ich nun den Filterbegriff "Schreiner" in der einen Combobox ausgewählt, werden alle Schreiner angezeigt. Den verwendeten Filterbegriff "Schreiner" sehe ich auf dem Formular
in der Combobox praktischerweise selbst. Nun öffne ich irgendwann ein zweites Formular, also möchte ich in der dortigen Combobox den verwendeten Filter der Tabelle ebenfalls sehen und mich nicht an einem Label orientieren müssen, nur weil der Entwickler es nicht besser hingekriegt hat. Ferner brauche ich, um den Filter zu ändern, nicht groß zu suchen, steht doch praktischerweise z.B. neben Schreiner in der Cobobox gleich Zimmermann, Tischler und so weiter, da ja die Reihenfolge der Filtereinträge so gewählt ist.
Mach ich's über ein Label, steht der erste Filterbegriff in der Combobox, und wenn Schreiner zufällig einer der letzten Einträge ist, muss ich nun in der Combobox mühsam nach unten scrollen, um z.B von Schreiner nach Tischler die Tabelle umzufiltern.

Viele Grüße
Tortom
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Di 25.04.06 22:23 
Moin tortom :-)
aaaaha, das Beispiel ist einleuchtend und so langsam kapiere ich, worauf Du hinaus willst/möchtest.

Also für diesen Zweck ist die DBLookupCombobox imho schlecht geeignet, weil die geforderte gegenseitige Abhängigkeit nicht hersgestellt werden kann. DBLookupComboBox ist nur dann sinnvoll, wenn in einer Tabelle nur Werte aus einer Vorgabetabelle eingetragen werden dürfen...

Ich empfehle den Einsatz einer Combobox sowohl in Form1 als auch in Form2; die Vorgabe(Filter)Werte/Items musst Du dann allerdings aus der Vorgabetabelle eintragen :-( Wie, das dürfte klar sein ;-)
So, die Combobox1 steht auf irgeneinem Item, auf was die eigentliche Tabelle gefiltert werden soll.Nun rufst Du Form2 auf und im OnCreate setzt Du den Index von Combobox2 auf den Index von Combobox1 -> Combobox2.ItemIndex:=TForm1.Combobox1.ItemIndex;
Da in Form2 ebenfalls die Combobox geändert werden kann, sollte beim 'Rücksprung' sprich Schließen der Form2 umgekehrt natürlich die Combobox1(auf Form1) auf den gleichen Wert gestellt werden wie auf der Form2->
TForm1.Combobox1.ItemIndex:=Combobox2.ItemIndex;, am besten bei Form2.FormDeactivate..

Ich hoffe, dass das dein ''Problem'' beseitigt :roll:
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Di 02.05.06 11:52 
Hi raiguen,
vielen Dank nochmal, das Du dich mit meinem Problem
beschäftigt hast. Ich habe deinen Lösungsansatz nun
auf mein Programm entsprechend umgesetzt und bin sehr
zufrieden damit.
Viele Grüße
Tortom
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Do 04.05.06 12:06 
Hallo Tortom,
jo, keine Ursache... gern geschehen :-)
Somit dürfte das Thema erledigt sein...