Einzelnen Beitrag anzeigen

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