Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi dbLookUpComboBox + DBGrid (https://www.delphipraxis.net/163982-dblookupcombobox-dbgrid.html)

fanavity 24. Okt 2011 14:36

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:
procedure TForm2.Button2Click(Sender: TObject);
var
 ...
 ...
 ...
   Tabellenname, Nummer, Datum, Datum2, Test, Test2 : string;

begin
   
    Test:= TestErmitteln(Datum2);
    SQLBSTATEMENTS(Tabellenname, Nummer, Datum, Test, Test2);
 ...
 ...
 ...
Da werden die Prozeduren aufgerufen

TestErmitteln:

Delphi-Quellcode:
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;
SQLBSTATEMENTS ist ja unwichtig :)

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!

DeddyH 24. Okt 2011 14:38

AW: dbLookUpComboBox + DBGrid
 
Hat denn die dbLookUpComboBox kein OnChange-Ereignis?

fanavity 24. Okt 2011 14:44

AW: dbLookUpComboBox + DBGrid
 
Leider nicht.. Ausserdem wüsste ich dann auch nicht, wie ich die ganzen Variablen zur weiterverarbeitung an diese Prozedur übertragen sollte..

DeddyH 24. Okt 2011 14:48

AW: dbLookUpComboBox + DBGrid
 
Dann versuch es mal OnCloseUp.
Zitat:

Mit einer Ereignisbehandlungsroutine für OnCloseUp können Sie auf das Schließen der Lookup-Liste reagieren. Beim Schließen der Liste wird dem Tabellenfeld der ausgewählte Lookup-Wert zugewiesen. Die Liste kann vom Benutzer oder mit der Methode CloseUp geschlossen werden.

fanavity 24. Okt 2011 14:51

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 ^^

DeddyH 24. Okt 2011 14:57

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?

fanavity 24. Okt 2011 15:00

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 :)

DeddyH 24. Okt 2011 15:17

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.

Jumpy 24. Okt 2011 15:24

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