AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit DBLookupLisBox
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit DBLookupLisBox

Ein Thema von Tom70 · begonnen am 19. Jul 2005 · letzter Beitrag vom 19. Jul 2005
Antwort Antwort
Tom70

Registriert seit: 11. Mär 2005
33 Beiträge
 
#1

Problem mit DBLookupLisBox

  Alt 19. Jul 2005, 08:56
Datenbank: Firebird • Version: 1.5 • Zugriff über: FibPlus
Huhu,

ich habe auf einem Formular eine DBLookupLisBox, welche von einer DB-Abfrage mit Werten gefüllt wird.
Weiterhin befülle ich alle anderen Controls auf diesem Formular mit Daten einer DB-View. Nun enthält die View einen Wert, der beim Aufruf des Formulars in der DBLookupLisBox selektiert werden soll.

Wie stelle ich das am besten an? Wie kann ich das passende Item selektieren? Wie kann ich den Wert der View an die LisdtBox übergeben und diesen markieren?

Viele Grüße,
Tom
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Problem mit DBLookupLisBox

  Alt 19. Jul 2005, 18:13
Wenn ich das richtig interprätiere hast du eine Datasource an der ein paar Datensensitive Steuerelemente.
Du möchtest eine DBLookupCombobox hinzufügen, in der du die Datensätzen bequem wechseln kannst.


Wenn das so ist, nimm einfach eine DBLookupkombobox, trage die Datasource, die du für die anderen Controls verwendest, in der Eigenschaft "ListSource" der DBLookupkombobox ein.

Dann wählst du ein aussagekräftiges Feld (z.B. "Bezeichnung" o.Ä.) als ListField und
ein eindeutiges Feld (z.B. "ID" oder "lfdNr") als KeyField.

Die Eigenschaften "DataSource" und "DataField" bleiben bei der DBLookupkombobox in diesen Fall LEER.

Das wars dann auch schon.
  Mit Zitat antworten Zitat
Tom70

Registriert seit: 11. Mär 2005
33 Beiträge
 
#3

Re: Problem mit DBLookupLisBox

  Alt 19. Jul 2005, 19:42
Hm, ich glaube du hast meine Frage falsch verstanden.

Die ListBox ist mit einer Datenmenge verbunden, das Key Field ist der PK, und das ListField ist ein TextFeld.
Es wird auch alles angezeigt wie es soll. Mit einer DataSource+DataField ist die ListBox nicht verbunden.

Nun gibt es auf dem Formular ein DBGrid, in welchem eine Spalte vorhanden ist, die einen Wert enthält, der auch in der ListBox ist.
Das Grid wird mit einer DB-View gefüllt. Die DB-View ist nicht aktualisierbar, und liefert nur die Daten, die auf dem Formular per Edit´s und einer SP geändert werden können.

Wenn ich nun im Grid auf einen DS gehe, möchte ich, daß der Wert aus der Betreffenden Spalte in der ListView selektiert wird.

Die ListView und das Grid kann ich nicht über eine DataSource verbinden, da die Daten im Grid eingachränkt sind. Ich muß also den Wert im Grid mit den Werten in der ListView vergleichen, und die Übereinstimmung in der ListView selektieren.
Wie kann ich das lösen?

Hab schon alles Mögliche rumprobiert, hat aber alles nicht funktioniert *grübel*

Ich hoffe, daß meine Frage einigermaßen verständlich ist

Grüße,
Tom
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: Problem mit DBLookupLisBox

  Alt 19. Jul 2005, 21:15
ist es nun ein ListView oder eine DBListbox ?

Lt. deiner Beschreibung würde ich eher auf die DBListBox tippen.

Wenn die DBListBox und das DBGrid an zwei unterschiedlichen Datenquellen hängen, dann kannst du beide Datenquellen via LOOKUP miteinander verbinden.

Angenommen die Datenquelle deines DBGrids hat eine Spalte "Bezeichnung" und Datenquelle der DBListbox hat ebenfalls eine Spalte die Bezeichnungen enthält (z.B. 'Artikelbezeichnung'), dann kannst du das wie folgt lösen...

Da beim Wechseln des aktuellen Datensatzes im DBGrid ebenfalls der Datensatz-Zeiger dessen Datenmenge (ich nenne diese mal "qry_DBGrid") verschoben wird, kannst du die Datensatz-Positionierung der "DBListbox-Datenmenge" (die nenne ich mal tbl_ListBox) im onAfterScroll von "qry_DBGrid" erledigen.

Delphi-Quellcode:
procedure TForm1.qry_DBGridAfterScroll(DataSet: TDataSet);
begin

  // Hier Abbrechen, falls folgende Bedingungen erfüllt sind
  if (NOT tbl_ListBox.Active) OR // Die Datenmenge der DBListBox ist nicht aktiv
     (NOT Form1.Visible) OR // Das Formular wird nicht angezeigt
     (NOT DBGrid.Focused) OR // Das DBGrid hat nicht den Focus
     (Loading) THEN // benutzerdef. private boolsche Variable, die gesetzt werden kann, wenn z.B.
                                   // Massenänderungen, Lookups usw. auf der Datenmenge ausgeführt
                                   // werden, bei denen eine Positionierung der DBListBox unnötig ist
  begin
    // mach einfach nichts
    exit;
  end
  else begin
    // versuche den Inhalt von "qry_DBGrid->Bezeichnung" in "tbl_ListBox->ArtikelBezeichnung" zu finden
    if tbl_ListBox.locate('ArtikelBezeichnung',Dataset.Fieldvalues['Bezeichnung'],[]) then
       ShowMessage('Gefunden, der aktive Datensatz in der DBListBox ist gesetzt') else
       ShowMessage('In der DBListBox gibt es keinen Datendatz mit der Artielbezeichnung '+Dataset.FieldByName('Bezeichnung').AsString );
  end;

end;
Falls ich dich immernoch falsch verstanden habe mach doch mal bitte einen Screenshot und beschreibe die Datenmengen sowie wie betroffenen Felder etwas näher. Sonst wird das hier eher ein Ratespiel ...


Schöne Grüße,
Jens

  Mit Zitat antworten Zitat
Tom70

Registriert seit: 11. Mär 2005
33 Beiträge
 
#5

Re: Problem mit DBLookupLisBox

  Alt 19. Jul 2005, 21:58
Hallo Jens,

super, das isses
An Locate hab ich garnicht gedacht. Natürlich meinte ich eine ListBox, bin eben schon etwas gaga vom ewigen rumprobieren.

Vielen Dank!

Viele Grüße,
Tom
  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 04:49 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