AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi D7 Table filter mit Substring
Thema durchsuchen
Ansicht
Themen-Optionen

D7 Table filter mit Substring

Ein Thema von beanbear6 · begonnen am 9. Sep 2015 · letzter Beitrag vom 15. Sep 2015
Antwort Antwort
Seite 1 von 2  1 2      
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#1

D7 Table filter mit Substring

  Alt 9. Sep 2015, 02:38
Datenbank: dBase • Version: f. Windows • Zugriff über: BDE
Hi zusammen,
ich such seit Stunden im Internet, aber alle Angebote bringen nur Fehlermeldungen.
Ich möchte ganz einfach z.B. in einem DBGrid nach Substring *test* filtern. Mit Filter z.B: Table1.Filter:='DFName=''PC*'''; funktionierte, aber warum nicht mit Table1.Filter:='DFName=''*PC*''' ?? Ich möchte ganz einfach nach Substring filtern können. Kann mir bitte jemand helfen?
Vielen Dank für jede Tip...
Gruß beanbear
Reiner
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 03:29
Zwar kenne ich Dbase nur vom Hörensagen, weiß aber dennoch, daß Datenbanken nicht den Asterix * als Platzhalter verwenden, sondernd das Prozentzeichen % als Platzhalter dient. Zudem wird eine Suche mit Platzhalter nicht über das Gleichheitszeichen = eingeleitet, sondern über das Schlüsselwort like.

All das könntest du selbst herausfinden, wenn du dich mit den Grundlagen von SQL ein wenig näher befassen wolltest.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 09:35
[OT] Asterisk <> Asterix [/OT]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 10:00
In dBASE selbst nutzt man (wenn ich mich nur halbwegs recht erinnere) den * als [OT] Asterisk <> Asterix [/OT] -> Platzhalter für eine beliebige Anzahl von Zeichen und das ? für ein einzelnes Zeichen. Zumindest steht das im Der Data Becker Führer - dBASE IV (von 1989) so.

Aber das funktioniert (meines Wissens) nicht in Filtern.
Da klappt (meist) nur die nach rechts offenen Suche.

Zur BDE gehört die Localsql.hlp, da steht alles drin, was an SQL über die BDE möglich ist (für dBASE und Paradox) und laut dieser Hilfedatei wird % als Platzhalter genutzt.

Auch wenn dBASE die erste relationale Datenbank für PCs war, die mit SQL arbeitete, so war das (zumindest anfangs) doch nur ein Subset von SQL. Da ist es sinnvoller, sich mit der Doku zu dBASE auseinander zu setzen, als sich den "SQL-Standard" reinzuziehen, es mag Übereinstimmungen geben, aber die sind nicht zwingend.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 10:48
[OT] Asterisk <> Asterix [/OT]
Obelisk <> Obelix.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 11:15
..Mit Filter z.B: Table1.Filter:='DFName=''PC*'''; funktionierte, aber warum nicht mit Table1.Filter:='DFName=''*PC*''' ??
Das korrespondiert mit dem Hilfetext von TDataset.Filteroptions:
Zitat:
Wenn ein String in einem Filter mit einem Sternchen endet (*), lassen sich auch Teil-Strings suchen.
Im BDEDataset steht es allerdings so wieder nicht.
Mein Tip ist, dass es entweder nicht geht oder kein Treffer gefunden wird (wenn bspw. * = beliebige Zeichen <> kein Zeichen).
Gruß, Jo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 11:29
Manche Datenzugriffskomponenten haben neben den Attributen Filter und Filtered auch noch das Attribut FilterOptions.

Hier kann gewählt werden:
foCaseInsensitiv True / False
foNoPartialCompare True / False
Damit die rechtsoffene Suche funktioniert muss der zweite Wert auf True stehen, ein Platzhalter ist dann nicht erforderlich.

Das Verhalten scheint insgesamt aber auch abhängig von der Implementierung der Komponente zu sein. Die Filter funktionieren ja auch bei solchen Komponenten, die zwar wie Datenbankzugriffskomponenten arbeiten, aber bei denen keine Datenbank im Hintergrund liegt (z. B.: tkbmMemTable). Ebenso scheinen die Filter nicht unbedingt ein entsprechendes SQL zu generieren, die Syntax bei den Filtern mag ähnlich der von SQL sein, ist aber nicht zwingend in vollem Umfang mit den Möglichkeiten von SQL identisch.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 17:23
foCaseInsensitiv True / False
foNoPartialCompare True / False
Damit die rechtsoffene Suche funktioniert muss der zweite Wert auf True stehen, ein Platzhalter ist dann nicht erforderlich.
Laut Hilfe ermöglicht dieser Switch das Suchen nach dem Wildcardzeichen selbst. Sprich der Filter wird 1 zu 1 angewendet.
foNoPartialCompare =False wäre demnach PartialCompare, das Wildcardzeichen '*' wird als Platzhalter interpretiert.
Gruß, Jo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 17:56
foCaseInsensitiv True / False
foNoPartialCompare True / False
Damit die rechtsoffene Suche funktioniert muss der zweite Wert auf True stehen, ein Platzhalter ist dann nicht erforderlich.
Laut Hilfe ermöglicht dieser Switch das Suchen nach dem Wildcardzeichen selbst. Sprich der Filter wird 1 zu 1 angewendet.
foNoPartialCompare =False wäre demnach PartialCompare, das Wildcardzeichen '*' wird als Platzhalter interpretiert.
Da bin ich mir aber nicht so ganz sicher, meine praktische Erfahrung ist, dass bei foNoPartialCompare = false, also letztlich PartialCompare eine rechtsoffene Suche stattfindet, quasi ein impliziter * rechts angefügt, die Angabe des * ist dabei nicht erforderlich. Bei foNoPartialCompare = True wird der * nicht geduldet, bzw. wird als Teil des Suchbegriffes angenommen.
Das man den * an beliebiger Stelle als Wildcard nutzen kann, ist mir bei Filtern bisher noch nicht aufgefallen bzw. hat noch nicht zum gewünschten/erwarteten Ergebnis geführt. Aber das mag auch abhängig von der genutzten Komponente bzw. der darunterliegenden Datenbank sein.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#10

AW: D7 Table filter mit Substring

  Alt 9. Sep 2015, 18:13
Ich möchte ganz einfach z.B. in einem DBGrid nach Substring *test* filtern.
in DBase bzw Xbase gibt es den $-Operator:
Table1.Filter:='"test" & DFName';
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:25 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