AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TADODataSet.Filter Syntax Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

TADODataSet.Filter Syntax Fehler

Offene Frage von "omata"
Ein Thema von hmb · begonnen am 7. Okt 2010 · letzter Beitrag vom 8. Okt 2010
Antwort Antwort
hmb

Registriert seit: 24. Jul 2007
12 Beiträge
 
#1

TADODataSet.Filter Syntax Fehler

  Alt 7. Okt 2010, 15:34
Datenbank: SQLServer • Version: 2000 • Zugriff über: dbGo
Hallo,
habe ein Problem mit der TADODataSet Komponente im speziellen
mit dem Syntax des Filters:
Dieses Phänomen ist leicht zu reproduzieren:
Man nehme:
1. eine beliebige Tabelle mit diversen Integer - Spalten hier X,Y und Z
2. formuliere einen Ausdruck wie
Code:
(X > 10) AND (Y > 10 OR Z > 100)
2.1 alternativ
Code:
(X > 10) AND ((Y > 10) OR (Z > 100))
Es kommt der Fehler: Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereiches oder sind miteinander Unvereinbar!
3. Verändert man den Ausdruck nach
Code:
(X > 10) AND (Y > 10) OR (Z > 100)
ist das OK, jedoch stimmt dann das Ergebnis nicht mehr.
4. Das Problem taucht auf bei BCB5, RAD Studio 2007 C++ Builder und Delphi

5. Das Workaround, am SQL-Ausdruck den WHERE-Bereich zu erweitern ist nicht so toll, da im Fall wo es produktiv auftritt die Performance dann in die Knie geht. So werden die Daten ein mal geladen und dann lokal der Filter gesetzt...


Irgend eine Idee?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: TADODataSet.Filter Syntax Fehler

  Alt 7. Okt 2010, 18:21
Wie wäre es, wenn du in deinem DataSet ein neues Feld (boolean) einfügst und über das Calc-Ereignis deine Formel hinterlegst und dann im Filter nur dieses eine neue Feld verwendest?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: TADODataSet.Filter Syntax Fehler

  Alt 7. Okt 2010, 18:32
Die Abfrage im Filter darf eine gewisse Komplexität nicht überschreiten ... das packt der halt nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Andreas Schilling

Registriert seit: 6. Sep 2006
106 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: TADODataSet.Filter Syntax Fehler

  Alt 8. Okt 2010, 06:05
Ich arbeite immer mit OnFilterrecord bei TADODataset
Delphi-Quellcode:
procedure TForm1.TADODataset1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  accept := ((TADODatasetx.asinteger > 10)and ((TADODatasety.asinteger > 10)
                                               or (TADODatasetz.asinteger > 100)));
end;
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: TADODataSet.Filter Syntax Fehler

  Alt 8. Okt 2010, 18:47
Schöner ist allerdings...
Delphi-Quellcode:
procedure TForm.TADODatasetFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  accept := ( (Dataset.FieldByName('x').AsInteger > 10)
             and ( (Dataset.FieldByName('y').AsInteger > 10)
                  or (Dataset.FieldByName('z').AsInteger > 100)));
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 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