2017-02-26 5 views
0

Mein Programm nimmt an, Ergebnisse in einer Listenansicht entsprechend dem ausgewählten Wert in den Comboboxen zu filtern. Problem: Listenansicht wird nach der Änderung des Parameters nicht aktualisiert.Aktualisierungsabfrage beim Ändern von Parametern zur Laufzeit

procedure TForm1.ComboBox1Change(Sender: TObject); 
begin 
    //FDQuery1.ParamByName('paramA').AsString:=Combobox1.Selected.Text; 
    FDQuery1.Params[0].AsString:= Combobox1.Selected.Text; 
    FDQuery1.open; 
end; 

Ich versuchte bereits FDQuery1.refresh ohne Erfolg.

Die Listview und Parameter funktioniert zur Entwurfszeit. Der ausgewählte Text existiert ebenfalls. Beim Ausführen des Programms wird keine Fehlermeldung angezeigt, nur keine Aktualisierung.

+1

Sie müssen die Elemente in Listenansicht neu zu laden, nachdem die Abfrage aktualisieren finden Sie unter: http: //stackoverflow.com/questions/16589670/tlistview-there-is-any-component-like-tlistview-but-with- DB-Zugriff. Oder verwenden Sie stattdessen DbGrid. –

+0

Ein DBGrid ist eine viel bessere Option. Sie können eine ListBox simulieren, indem Sie nur eine Spalte ohne Spaltenüberschrift anzeigen. Dann erhalten Sie die gesamte Funktionalität des zugrunde liegenden Datensatzes. Die andere Möglichkeit besteht darin, Code innerhalb des OnRefresh-Ereignisses zu schreiben, um Werte zu laden, aber es ist unordentlich. –

+0

Danke Jungs, mit DBGrid jetzt und funktioniert gut –

Antwort

1

etw so?

FDQuery1.Close; 
    try 
    ListBox1.Clear; 
    FDQuery1.ParamByName('Param1').AsString:= Combobox1.Selected.Text; 
    FDQuery1.Prepare; 
    FDQuery1.Open; 
    while not FDQuery1.Eof do 
    begin 
     ListBox1.Items.Add(FDQuery1.FieldByName('Field1').AsString); 
     FDQuery1.Next; 
    end; 
    finally 
    FDQuery1.Close; 
    end;