2016-07-21 24 views
0

als Filter in Lazarus verwendet werden kann, ich habe 2 Tabellen: 1. Projekte, 2. Article_Weights. Tabelle Die Projekte sind mit der ersten DBLookUpCombobox DBLkpCbo_Projects verbunden. Es hat eine Spalte Projekt, die vierstellige Zahlen enthält. (1001, 1004, 1008, ...)Wie zwei DBLookUpComboboxes zu verbinden, die

Tabelle Article_Weights enthaltende Säulen Projekt, Article_Number, Article_Weights usw. Diese Tabelle mit DBLookUpCombobox DBLkpCbo_Articles verbunden ist.

Was ich erreichen möchte, ist, wenn ich aus der ersten Combobox ein Projekt auswähle, zeigt die zweite Combobox nur die Artikelnummer an, die zu diesem Projekt gehört. Wenn ich dann eine Artikelnummer aus der zweiten Combobox auswähle, werden Informationen zu diesem Artikel in DBGrid angezeigt.

Filterung funktioniert. Ich bin am letzten Punkt fest. Wenn ich eine Artikelnummer wählen, erhalte ich Fehler „Datentypen in dem Ausdruck Kriterien stimmen nicht überein“

Dies ist mein Code:

procedure TMainForm.DBLkpCbo_ProjectSelect(Sender: TObject); 
begin 
    if DBLkpCbo_Project.ItemIndex <> -1 then begin 
    SQLQuery2.Active:=true; 
    //SQLQuery1.ApplyUpdates(); 
    SQLTransaction1.Commit(); 
    SQLQuery2.Close; 
    SQLQuery2.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Project = '+DBLkpCbo_Project.Text+''; 
    SQLQuery2.Open; 
    end; 
end; 


procedure TMainForm.DBLkpCbo_ArticleChange(Sender: TObject); 
begin 
    if DBLkpCbo_Article.ItemIndex <> -1 then begin 
    //DBGrid1.Enabled:=true; 
    SQLQuery3.Active:=true; 
    //SQLQuery1.ApplyUpdates(); 
    SQLTransaction1.Commit(); 
    SQLQuery3.Close; 
    SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='+DBLkpCbo_Article.Text+''; 
    SQLQuery3.Open; 
    end; 
end; 

Vielen Dank für jede Antwort

Antwort

0

Ist Article_Number ein Textfeld oder (wie der Name schon sagt) ein numerisches Feld? Wenn es eine Zahl ist, ist DBLkpCbo_Article.Text tatsächlich numerisch (d. H. Eine Zeichenfolge, die eine gültige Zahl enthält)? Wenn man, wie ich vermute, Article_Number ein Textfeld ist, haben Sie die Anführungszeichen weggelassen:

SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='''+DBLkpCbo_Article.Text+''''; 
+0

Article_Number in MS Access als Kurztext gesetzt und Beispiel sieht wie folgt aus: 1004.001.0020. Ich habe Ihren Vorschlag versucht, aber eine Fehlermeldung erscheint: "Vergewissern Sie sich, dass keine ungültigen Zeichen oder Satzzeichen vorhanden sind". Als ich versuchte, es in "10040010020" umzubenennen, bekam ich den Fehler "Zu wenige Parameter". – Revan31

+0

Sorry - ich habe doppelte Anführungszeichen anstelle von einzelnen verwendet - war eine Weile her, seit ich SQL benutzt habe. Jetzt korrigiert. – Dsm

+0

Es funktioniert wirklich! :) Ich habe so viel Zeit damit verbracht, dieses Problem zu lösen. Vielen Dank. – Revan31