Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADS locate - Zeichen ignorieren? (https://www.delphipraxis.net/62843-ads-locate-zeichen-ignorieren.html)

Grolle 10. Feb 2006 11:58

Datenbank: ADS Local • Version: 7.1 • Zugriff über: TDataSet

ADS locate - Zeichen ignorieren?
 
Hallo!

Ich durchsuche mit locate eine bestimmte Spalte der Tabelle. Ist es dabei möglich
bestimmte Zeichen im String zu ignorieren?
Bsp.: AdsTable1.Locate('Telefon',02309561054,[]). In der Datenbank ist die Nummer
aber so gespeichert: 02309/561054 . Also soll locate das / ignorieren.

Viele Grüße...

Union 10. Feb 2006 12:05

Re: ADS locate - Zeichen ignorieren?
 
Das geht dann wohl nur mit einer while-Schleife. Oder Du verwendest SQL für die Abfrage und springst dann über den PK im DataSet auf den richtigen Satz. Alternativ könntest Du auch Daten und Maskenzeichen separat speichern (Ähnlich wie die Telefonnummerneinträge bei den MS-DFÜ-Verbindungen)

Grolle 11. Feb 2006 15:02

Re: ADS locate - Zeichen ignorieren?
 
Hi!
Danke für deine Antwort erstmal.
Zitat:

Das geht dann wohl nur mit einer while-Schleife.
Wie umsetzen? Die Datensätze müssen noch zugeordnet werden können.

Die anderen beiden Vorschläge kommen nicht in Frage, da man für
SQL die TQuery braucht (hab nur eine Tabelle) und bei der Lösung
wie bei der DFÜ-Verbindung sind zwei verschiedene Edit-Felder nötig.
Ich habe jetzt überlegt einfach eine neue Spalte anzulegen wo ich die
Nummern ohne Sonderzeichen hineinkopiere.

Viele Grüße...

Grolle 16. Feb 2006 23:21

Re: ADS locate - Zeichen ignorieren?
 
Hallo!
Ich muss das Thema nochmal hochholen. So wie ich es vorhatte klappt es nicht (zusätzliches Feld in DB).
Gibt es da noch eine Möglichkeit (wie war das mit der Schleife gemeint?)?

Viele Grüße...

marabu 17. Feb 2006 09:52

Re: ADS locate - Zeichen ignorieren?
 
Hallo Stefan.

Wenn die Rufnummern grundsätzlich in der Form Ortsnetzkennzahl/Teilnehmer gespeichert sind, dann könntest du dir mit einer Query erstmal die Vorwahl besorgen:

SQL-Code:
select TOP 1 * from TABLE1 where TELEFON < :NUMMER order by TELEFON
Der Wert des Feldes TELEFON vor dem Slash ist die Vorwahl. Wenn sie nicht mit den ersten Stellen deiner gesuchten Nummer übereinstimmt, dann wirst du die Nummer nie finden. Andernfalls hast du sie vielleicht schon gefunden. Wenn doch nicht, dann kennst du ja jetzt die Stelle, an der du den Slash in deinen Suchstring einfügen musst um mit Locate() oder einer weiteren Query zum Ziel zu kommen.

Grüße vom marabu

Grolle 21. Feb 2006 22:22

Re: ADS locate - Zeichen ignorieren?
 
Hallo Marabu!
Zitat:

Wenn die Rufnummern grundsätzlich in der Form Ortsnetzkennzahl/Teilnehmer gespeichert sind
Sind sie leider nicht. Andere Sonderzeichen können bzw. dürfen (bis jetzt) auch vorkommen.

Viele Grüße...

marabu 23. Feb 2006 18:49

Re: ADS locate - Zeichen ignorieren?
 
Hallo Stefan,

du hast zwar geschrieben, dass du kein zusätzliches Feld an die Tabelle anhängen kannst, aber hast du schon erwogen eine zusätzliche Tabelle (1:1 lookup table) zu generieren? Die muss nur den PK der Originaltabelle als FK, sowie die normierte Telefonnummer enthalten.

Grüße vom marabu

Grolle 23. Feb 2006 19:21

Re: ADS locate - Zeichen ignorieren?
 
Hi Marabu!
Ne, daran habe ich noch nicht gedacht. Hab's auch noch nie gemacht. Die Frage ist, ob es sich lohnt bei
nur einer Tabelle, die ich da habe?!? Werde ich mich mal dransetzen.

Viele Grüße...

Union 23. Feb 2006 20:07

Re: ADS locate - Zeichen ignorieren?
 
Zitat:

Gibt es da noch eine Möglichkeit (wie war das mit der Schleife gemeint?)?
So in etwa
Delphi-Quellcode:
while not tabelle.eof do
begin
   if VergleichsFunktion(TabelleTelefonNummernFeld.AsString, EditSuche.Text) then
      break;
   tabelle.next;
end;
Damit findest Du aber natürlich nur den ersten Treffer. Überleg Dir doch nochmal, ob Du nicht doch vielleicht TAdsQuery einsetzen möchtest.

Grolle 23. Feb 2006 21:08

Re: ADS locate - Zeichen ignorieren?
 
Hi Union!
Das werde ich mal testen mit der Schleife. Danke für den Denkanstoss. Ich brauche
auch lediglich den ersten Treffer.

Viele Grüsse...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.
Seite 1 von 2  1 2      

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