AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX
Thema durchsuchen
Ansicht
Themen-Optionen

FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

Ein Thema von news2swen · begonnen am 17. Nov 2015 · letzter Beitrag vom 19. Nov 2015
Antwort Antwort
news2swen

Registriert seit: 7. Nov 2008
36 Beiträge
 
Delphi XE4 Enterprise
 
#1

FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

  Alt 17. Nov 2015, 14:05
Hallo zusammen

Ich habe eben erst mit FireMonkey begonnen, daher sind dies auch meine ersten Versuche mit Bindings zu arbeiten.
Grund für den wechsel von VCL zu FMX ist der Glaube meines Chefs, dass dies die Zukunft sein wird und außerdem die Oberflächen schöner aussehen (letzteres stimmt)

Ich stehe nun vor folgendem Problem (bei VCL ist es keines):
Ich habe 2 Datasets über Master/Detail miteinander verknüpft. Die Daten habe ich in 2 Stringgrids umgeleitet. Wechsel ich nun im Grid des Masters einen Datensatz, so werden mir die verknüpften DS im Detailgrid angezeigt. So war es im VCL mit den DB-Komponenten ja auch.
Jetzt möchte ich aber nicht mit Grids hantieren, sondern lieber ComboBoxen nehmen. Sprich, ich wähle in CB1 einen DS aus und der Inhalt der LookUpData in CB2 aktualisiert sich entsprechend.
Ich weiß nur nicht, wie das gehen soll. Ich habe zwar die Eigenschaft Item.Text der Detail-Box mit meinem DB-Feld verknüpft (es werden sogar Daten angezeigt), aber wenn ich mich durch den MasterGrid bewege, ändert sich am Inhalt der Combobox nichts. Wie bekomme ich das aktualisiert? Mein erster Gedanke war, die Synch-Eigenschaft der Box an meine BindingSourceDB zu hängen, aber da hängt sich das Programm beim Versuch einen Master-Datensatz auszuwählen auf.

Ich hoffe ihr habt da ein paar gute Hinweise

VG
Swen
Swen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

  Alt 17. Nov 2015, 14:09
Notfalls über den AfterScroll-Event des Master DataSet den Filter auf das Detail DataSet setzen.
Markus Kinzler
  Mit Zitat antworten Zitat
news2swen

Registriert seit: 7. Nov 2008
36 Beiträge
 
Delphi XE4 Enterprise
 
#3

AW: FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

  Alt 17. Nov 2015, 14:37
Das bringt leider auch nichts. Ich habe die Master-Detail-Beziehung aufgelöst und setze den Filter vorübergehend per Button. Ist SYNCH gebunden, so hängt sich das Programm auf, ist es nicht gebunden, werden die Daten in der ComboBox nicht gefiltert.
Swen
  Mit Zitat antworten Zitat
news2swen

Registriert seit: 7. Nov 2008
36 Beiträge
 
Delphi XE4 Enterprise
 
#4

AW: FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

  Alt 19. Nov 2015, 09:22
Hat wirklich keiner eine Idee, wie ich die Combobox update, wenn sich der Inhalt der Lookup-Datenquelle ändert?
Swen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

  Alt 19. Nov 2015, 10:05
Hat wirklich keiner eine Idee, wie ich die Combobox update, wenn sich der Inhalt der Lookup-Datenquelle ändert?
Was ändert sich denn jetzt genau?
  1. Der Inhalt der Mastertabelle?
  2. Der Datensatzzeiger der Mastertabelle?
  3. Der Inhalt der Subtabelle?
  4. Der Datensatzzeiger der Subtabelle?
Als Lookup-Tabelle bezeichnet man normalerweise (falls man diesen Begriff überhaupt verwendet) die Subtabelle, also jene Tabelle, deren PrimaryKey mit dem entsprechenden Foreign-Key der Master-Tabelle korrespondiert. Geht es also um eine Änderung des Inhalts der Subtabelle, mußt du einfach den Einlesevorgang – also jene Methode, mit der du die Combobox befüllst – wieder aufrufen. Geht es jedoch darum, innerhalb der Combobox einen Eintrag auszuwählen, dann sei dir die Methode IndexOf empfohlen:

Combo.ItemIndex := Combo.Items.IndexOf('Suchwort'); War es vielleicht das, was du gesucht hattest? Dann wäre die Frage gewesen: Wie ermittle ich bei einer ComboBox den Index eines bestimmten Eintrags? Das hätte vermutlich jeder sofort verstanden. So aber hast du erstmal keine Antworten erhalten, weil niemand weiß, was genau du willst und nicht jeder so wie ich Zeit und Muse hat, da groß herumzuraten ...

Geändert von Perlsau (19. Nov 2015 um 10:07 Uhr)
  Mit Zitat antworten Zitat
news2swen

Registriert seit: 7. Nov 2008
36 Beiträge
 
Delphi XE4 Enterprise
 
#6

AW: FireMonkey Problem bei Nachempfinden einer DBLOOKUPCOMBOBOX

  Alt 19. Nov 2015, 11:14
Hallo Perlsau

ich versuchs nochmal:
Ich habe 2 Tabellen, welche über Master-Detail verknüpft sind. Ziel ist es, für eine nachfolgende Funktion Parameter aus diesen beiden Tabellen zu bestimmen. Scrolle ich durch den Master (im Augenblick sind nur die Grids eingebunden), ändern sich logischerweise der Datensatzzeiger der Mastertabelle und der Inhalt der Deatiltabelle. Nun wähle ich in der Detailtabelle einen beliebigen DS aus und starte meine Funktion mit Übergabe des ausgewählten Datenfeldes (subqry.fieldbyname('id').asstring).
Da das optisch/platztechnisch nicht der Stein der Weisen ist, möchte ich die Grids durch ComboBoxen ersetzen. Dazu habe ich zuerst eine Combobox für die Subtabelle eingefügt (Grids sind zur Kontrolle der Daten noch da). Binde ich die Combobox an die Tabelle (ohne SYNCH zu binden), so werden nur die DB-Einträge der Subtabelle angezeigt, welche mit dem ersten Datensatz der Mastertabelle verknüpft sind. Bewege ich mich nun durch den Master, so wird zwar das Detailgrid aktualisiert, nicht aber der Inhalt der Combobox. Binde ich SYNCH an die Detailabfrage (weil ich vermute, dass dadurch die Daten aktualisiert werden) und versuche mich anschliessend in der Mastertabelle zu bewegen, so hängt sich das Programm auf.

In der VCL (ohne dem Livebinding) funktionierte das alles wunderbar. Habe ich im Master einen neuen DS ausgewählt, so wurde der "lookup" des Detail-DBlookupcombobox automatisch aktualisiert.

Ich hoffe, dass mein Problem nun klarer rüber gekommen ist.

Gruß
Swen
Swen
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:11 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