wwwdirk - Di 10.07.07 15:05
Titel: Filtereigenschaft des TADODataSet mit kombinierten AND / OR
Habe Probleme mit dem Filtern eines TADODataset des Typs cmdTable. Es handelt sich um einen clientseitigen Cursor.
Delphi-Quelltext
1: 2: 3:
| DM.DSUserQueries.Filter := format ('(OWNER=''%s'' or OWNER=''%s'') and (DATASET=''%s'')', [FOwner, 'SYSTEM', FDataSetName]); DM.DSUserQueries.Filtered := true; |
Das Setzen der Filtered-Eigenschaft führt zur folgenden Meldung:
"Arguments are of the wrong type, are out of the acceptable range, or are in conflict with one another."
Folgende Varianten funktionieren ohne Probleme:
Delphi-Quelltext
1:
| Filter := format ('(OWNER=''%s'') and (DATASET=''%s'')', FOwner, FDataSetName]); |
oder
Delphi-Quelltext
1:
| Filter := format ('OWNER=''%s'' and DATASET=''%s''', FOwner, FDataSetName]); |
oder
Delphi-Quelltext
1:
| Filter := format ('(OWNER=''%s'' or OWNER=''%s'')', [FOwner, 'SYSTEM']); |
Hat jemand einen Tipp?
wwwdirk - Mi 18.07.07 11:19
Ich hab jetzt noch einige Konstellationen ausprobiert. Die folgende funktioniert einwandfrei.
Delphi-Quelltext
1: 2:
| DM.DSUserQueries.Filter := format ('(OWNER=%s and DATASET=%s) or (OWNER=%s and DATASET=%s)', [QuotedStr (FOwner), QuotedStr (FDataSetName), QuotedStr ('SYSTEM'), QuotedStr (FDataSetName)]); |
Sehr merkwürdig :gruebel: !?! Für kompliziertere Filterstrings wahrscheinlich auch nicht praktikabel!