Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO Table Filtern (zeichenweise) (https://www.delphipraxis.net/61569-ado-table-filtern-zeichenweise.html)

Christian18 23. Jan 2006 11:13

Datenbank: Access • Version: 2000 • Zugriff über: ADO

ADO Table Filtern (zeichenweise)
 
Hallo,

hat jemand eine Idee, warum mein Filter in meiner ADO Tabelle nicht funktioniert???

Hier mein Quellcode:

Delphi-Quellcode:
DM.TKunden.Filter:='KundenID = ' + QuotedStr(Edit1.Text + '*');
Mit freundlichen Grüßen

Christian18

mikhal 23. Jan 2006 11:15

Re: ADO Table Filtern (zeichenweise)
 
Versuch's mal mit 'LIKE' statt '='

Grüße
Mikhal

Christian18 23. Jan 2006 11:16

Re: ADO Table Filtern (zeichenweise)
 
Hallo,

meinst du so:
Delphi-Quellcode:
DM.TKunden.Filter:='KundenID LIKE ' + QuotedStr(Edit1.Text + '*');
MFG Christian18

mikhal 23. Jan 2006 11:25

Re: ADO Table Filtern (zeichenweise)
 
Ja!

Grüße
Mikhal

Jelly 23. Jan 2006 12:03

Re: ADO Table Filtern (zeichenweise)
 
Filter kennen kein "like", meines Wissens. Zumindest nicht bei der BDE.

2 Lösungen:
entweder den SQL Select direkt anpassen
oder
Delphi-Quellcode:
Filter = 'KundenID >= ' + QuotedStr(Edit1.Text);
wobei erser Vorschlag der eleganere ist.

marabu 23. Jan 2006 12:14

Re: ADO Table Filtern (zeichenweise)
 
Wieso BDE, hier geht es doch um ADO - oder?

ADO kennt den Operator LIKE, allerdings mit der Einschränkung auf '*' resp. '%' als wildcard, wobei aber nur prefix search unterstützt wird.

Grüße vom marabu

Jelly 23. Jan 2006 12:20

Re: ADO Table Filtern (zeichenweise)
 
Zitat:

Zitat von marabu
Wieso BDE, hier geht es doch um ADO - oder?

Ja, nur hab ich den Filter früher nur bei der BDE benutzt, und da klappte der like Operator nicht. Deshalb meinte ich nur, dass das allg. nicht klappt... Sorry, mein Fehler.

Ferber 23. Jan 2006 12:35

Re: ADO Table Filtern (zeichenweise)
 
Hi !
Also ich denke diese Frage passt zu diesem Thread.
Wie 'handeln' ADOQuery und ADOTabel einen Filter intern ?
Wird da eine neue Query abgesetzt oder werden alle Datensätze durchlaufen ?
Ist eine StoredProc mit dem Suchkriterium als Parameter nicht schneller ?
Danke im Vorraus :)

marabu 25. Jan 2006 07:34

Re: ADO Table Filtern (zeichenweise)
 
Hallo Otto,

nach meinem Kenntnisstand wird die ADO Filter property dazu benutzt records aus einem bereits berechneten recordset auszublenden. Dass eine parametrisierte SP generell die wirtschaftlichere Lösung ist, möchte ich bezweifeln. Es gibt da bestimmt ein Skalierungsproblem. Bei geringer Kardinalität ist der Filter für eine eingrenzende Suche sicher optimal, aber ich kann keinen break even point nennen.

Grüße vom marabu

Elvis 25. Jan 2006 07:41

Re: ADO Table Filtern (zeichenweise)
 
Zitat:

Zitat von Ferber
Ist eine StoredProc mit dem Suchkriterium als Parameter nicht schneller ?
Danke im Vorraus :)

Eine SP, die eine simple Abfrage ausführt wird generell langsamer sein, als ob du die Abfrage direkt ausführst. Damit du die Datensätze in der Ergebnismenge siehst müssen sie ja erst herumgeschobn werden.
Bei komplexen Abfragen hat man den Vorteil, dass das DBMS den Query plan, sowie Sicherheitsprüfungen nur einmal zur Kompilierungszeit bestimmen muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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