![]() |
Datenbank: Oracle • Version: 10 • Zugriff über: BDE/ODBC
dbLookUpComboBox + DBGrid
Hallo,
ich habe eine dbLookUpComboBox,ein DBGrid und einen Button auf meiner Form. Nun möchte ich, das wenn man den Button anklickt, sich die dbLookUpComboBox füllt. Das klappt auch ohne Probleme. Nur weiß ich nicht, wie ich meinen Code umstellen kann, damit er "wartet" bis auch eine Auswahl gemacht wurde! Denn sobald eine Auswahl gemacht wurde, soll sich das DBGrid füllen. Hier mal ein Quellcode Beispiel:
Delphi-Quellcode:
Da werden die Prozeduren aufgerufen
procedure TForm2.Button2Click(Sender: TObject);
var ... ... ... Tabellenname, Nummer, Datum, Datum2, Test, Test2 : string; begin Test:= TestErmitteln(Datum2); SQLBSTATEMENTS(Tabellenname, Nummer, Datum, Test, Test2); ... ... ... TestErmitteln:
Delphi-Quellcode:
SQLBSTATEMENTS ist ja unwichtig :)
function TestErmitteln(Datum2: String): String;
var Test: string; begin Try Form1.Query1.Close; Form1.Query1.Sql.Clear; Form1.Query1.Sql.Add('SELECT Test'); Form1.Query1.Sql.Add('FROM TestTabelle '); Form1.Query1.Sql.Add('WHERE Name= ''Test'' '); Form1.Query1.Sql.Add('AND Datum= :Datum'); Form1.Query1.Params.ParamByName('Datum').AsString := Datum2; Form2.DBLookupComboBox1.ListField:= 'Test'; Form2.DBLookupComboBox1.KeyField:= 'Test'; Form2.DBLookupComboBox1.ListSource := Form1.DataSource1; Form1.Query1.Open; Test:= Form2.DBLookupCombobox1.KeyValue; except on E: Exception do begin ShowMessage(E.Message); end; end; result := Test; end; Wie kann ich es nun machen, das er SQLBSTATEMENTS erst aufruft, wenn in der dbLookUpComboBox eine Auswahl getätigt wurde ? Bin echt am verzweifeln.. Denn jetzt läuft er SQLBSTATEMENTS auch durch, gibt dann eine exception und erst wenn ich dann was auswähle und nochmal den button drücke, klappt es! |
AW: dbLookUpComboBox + DBGrid
Hat denn die dbLookUpComboBox kein OnChange-Ereignis?
|
AW: dbLookUpComboBox + DBGrid
Leider nicht.. Ausserdem wüsste ich dann auch nicht, wie ich die ganzen Variablen zur weiterverarbeitung an diese Prozedur übertragen sollte..
|
AW: dbLookUpComboBox + DBGrid
Dann versuch es mal OnCloseUp.
Zitat:
|
AW: dbLookUpComboBox + DBGrid
Nun habe ich aber ein Problem.Ich weiß nicht wie ich die ganzen Parameter in die OnClose Procedur bekomme, die ich benötige um die weiteren SQLSTATEMENTS auszuführen.. Sorry wenn ich mich ein bisschen doof anstelle. Ich lerne gerade erst Delphi ^^
|
AW: dbLookUpComboBox + DBGrid
Ich habe anscheinend noch nicht ganz mitbekommen, was überhaupt wo steht :gruebel: Du willst doch bei Änderungen des Wertes der LookUpComboBox diesen neuen Wert als Parameter für ein Statement verwenden, oder habe ich das falsch verstanden?
|
AW: dbLookUpComboBox + DBGrid
Das ist soweit richtig. Nur habe ich davor noch 6Functionen, wo ich Parameter für das Statement sammle. Und diese müssen auch mit rein!
Denn die werden zum Teil aus Dateien ausgelesen, werden eingegeben etc. Und die dbLookupComboBox zeigt dann automatisch nur noch die zutreffenden Felder an. Dort wählt man dann eines aus und anschließend sollen die SQLSTATEMENTS mit den vorhergesammlten 6 + dem dbLookupCombobox Parameter ausgeführt werden. Hui.. ich hoffe das war verständlich :) |
AW: dbLookUpComboBox + DBGrid
Dann schreib Dir doch einfach eine Methode mit einem parametrisierten Statement, der Du entweder den aktuellen Wert der LookupComboBox als Parameter übergibst oder die das intern selbst ausliest. Diese Methode rufst Du dann im OnCloseUp auf.
|
AW: dbLookUpComboBox + DBGrid
Alternativ kann man doch auch, die zuvor ermittelten Werte, die bereits zur Einschränkung der Ergebnismenge in der ComboBox gebraucht wurden und die auch weiterhin noch gebraucht werden erstmal in Variablen zwischenspeichern und dann im OnChange der Combobox diese auslesen und zusammen mit dem Wert in der combobox das Statement für das Grid generieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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