Ich versuche, eine Tabelle mit 2 verschiedenen Filtern zu filtern, so dass beim Drücken einer Schaltfläche nur die Datensätze mit einer bestimmten Job_ID und denen mit dem Typ 'angezeigt werden Privatgelände'. Ich habe den folgenden Code:Operator nicht anwendbar auf diesen Operandentyp Beim Filtern einer Tabelle
if CBSearchType.Text = 'Private' then
begin
DBTravel.DataSource.DataSet.DisableControls;
DBTravel.DataSource.DataSet.Filtered := False;
DBTravel.DataSource.DataSet.Filter := ('Job_ID = '+edtAddJobID.Text) AND ('Type = '+QuotedStr('Private'));
DBTravel.DataSource.DataSet.Filtered := True;
DBTravel.DataSource.DataSet.First;
DBTravel.DataSource.DataSet.EnableControls;
end;
aber wenn ich versuche, um die Fehlermeldung ‚Operator nicht anwendbar auf diese Operandtyp‘ zu kompilieren angezeigt wird, irgendwelche Vorschläge? danke
Job_ID scheint zu sein scheint zu sein, numerische und edtAddJobID ein Eingabefeld zu sein. Verwenden Sie für eine verbesserte Typsicherheit und Benutzereingabefehlerbehandlung die Zeichenfolge in Ganzzahlkonvertierung, und verwenden Sie dann den Integer-Wert in der Funktion Format mit% d: '(Job_ID =% d) UND ...' – mjn
nach dem gleichen Code folgende Änderung DBTravel.DataSource.DataSet.Filter: = Format ('(Job_ID =% s) AND (Modus =% s)', [edtAddJobID.Text, edtSearchMode.Text]); Bei Mode-Einträgen lautet die Zeichenfolge z. B. "Car", "Train". Aber wenn ich das Programm starte und den Modus betrete und die Taste drücke, sagt es, dass Argumente vom falschen Typ sind, was ist anders? – Alexjjsmith
Wenn Sie ein Zeichenfolgenfeld vergleichen, müssen Sie die zu vergleichende Zeichenfolge angeben: 'DBTravel.DataSource.DataSet.Filter: = Format ('(Job_ID =% s) UND (Mode =% s)', [edtAddJobID.Text, QuotedStr (edtSearchMode.Text)]); ' – RRUZ