![]() |
Datenbank: DBISAM • Version: 4.21 • Zugriff über: Native
mit Comboboxen nach Datensätzen suchen
Moin Moin,
ich würde gerne mittels 2 Comboboxen Artikel aus einer Query suchen lassen können: Die erste Combobox soll quasi das Suchkriterium vorgeben (z.B. Artikelname; Artikelnummer; Artikelgruppe; etc.). Wenn der User eine Auswahl getroffen hat soll die 2. Combobox quasi eine vorsortierte Liste auf Basis der Auswahl der ersten Combobox "bereithalten". Hat jemand sowas schon mal gemacht oder nen Tipp wo ich was zum nachlesen finde? VG Emilio |
Re: mit Comboboxen nach Datensätzen suchen
Für diese Aufgabe würde sich eine TDBLookupConbobox o.ä. anbieten. Bei dieser Komponete kann sie Auswahlliste aus einer Datenbanktabelle stammen.
|
Re: mit Comboboxen nach Datensätzen suchen
@mkinzler,
äh, ja schon; nur sollten in der 1. Combobox die Suchkriterien (also quasi die Column-Names der query) aufgelistet sein. Wie man das macht und dann den Selektionsparameter für die 2. Combobox übergibt ist der primäre Teil der Fragestellung. Vielleicht seh ich ja den Wald vor Bäumen nicht oder Schlauch-steh oder sowas ... VG Emilio |
Re: mit Comboboxen nach Datensätzen suchen
Ich kenne mit DBISam nicht so aus, bei einer SQL-datenbank ist es kein Problem per SQL die Feldname einer Tabelle zu ermitteln. Wenn dies bei DBISam nicht geht, bleibt dir nichts anderes übrig als die Felder manuell (statisch oder dynamisch) in eine normale ComoBox einzutragen und in deren onChane den Query für die 2. Comobox dynamisch zu erstellen.
|
Re: mit Comboboxen nach Datensätzen suchen
Delphi-Quellcode:
Und dann einfach
// Quick and Dirty
procedure GetLookupList(const TableName, FieldName:string; list:TStrings); begin qry.SQL.Text := 'SELECT '+Fieldname+ ' FROM '+TableName; qry.Open; while not qry.eof do begin list.Add(qry.fields[0].AsString); qry.next; end; end;
Delphi-Quellcode:
GetLookupList('Kundenstamm', Combo1.Text, Combo2.Items);
|
Re: mit Comboboxen nach Datensätzen suchen
Wenn ich es richtig verstehe existiert eine beliebige bereits geöffnete Query, deren result set mit Hilfe der beiden ComboBoxen durchsucht werden soll. Der Code für das Ereignis AfterOpen() dieser Query kann die NameBox füllen:
Delphi-Quellcode:
Die Items der ValueBox können dann im Ereignis OnChange der NameBox initialisiert werden:
procedure TDemoForm.QueryAfterOpen(DataSet: TDataSet);
begin with Query do GetFieldNames(NameBox.Items); end;
Delphi-Quellcode:
Getippt und nicht getestet.
procedure TDemoForm.NameBoxChange(Sender: TObject);
var CurrentRecNo: Integer; s: TStringList; begin s := TStringList.Create; s.Sorted := true; s.Duplicates := dupIgnore; with Query do begin DisableControls; CurrentRecNo := RecNo; First; while not Eof do begin s.Add(Fields[Namebox.ItemIndex].AsString); Next; end; ValueBox.Items.Assign(s); RecNo := CurrentRecNo; EnableControls; end; s.Free; end; Grüße vom marabu |
Re: mit Comboboxen nach Datensätzen suchen
@all,
Danke für Eure Tipps; damit kann ich jetzt erstmal was anfangen - supi! @marabu, da Du mein erstes Projekt bisher nahezu vollständig begleitest, bin ich mir sicher, dass Du den Nagel auf den Kopf getroffen hast. Sofern es mir in diesem Leben gelingt, das DING mal fertig zu kriegen, wirst Du im "about" gewürdigt. :cheers: Vielen Dank für Deine Hilfe. VG Emilio |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz