AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Locate findet nix

Ein Thema von wurzelsepp1 · begonnen am 19. Mär 2019 · letzter Beitrag vom 26. Mär 2019
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Locate findet nix

  Alt 25. Mär 2019, 06:31
Das SQL-Query in deinem Beispiel liefert nichts. Bei den SQL-Abfragen kriege ich nur Daten wenn ich keine Klausel angebe oder aber einen Platzhalter vorn und hinten, also "like '%1.2.3%'"
Mit anderen Worten, es steht vor und hinter dem Suchbegriff irgendetwas. Vermutlich Leerzeichen.
Ein Locate (mit loPartialKey) arbeitet meines Wissens nur korrekt, wenn der Suchbegriff am Anfang steht. Das ist aber hier ganz offensichtlich nicht der Fall. Daher kann das Locate auch nicht das gewünschte Ergebnis liefern. Die Daten sind schlicht falsch aufgebaut.
Peter
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Locate findet nix

  Alt 25. Mär 2019, 08:00
Zitat:
Mit anderen Worten, es steht vor und hinter dem Suchbegriff irgendetwas. Vermutlich Leerzeichen.
Diese Vermutung haben wir gegenüber ihm ja schon mehrmals geäussert und auch beschrieben, wie er das Problem lösen kann. Er glaubt uns aber anscheinend nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Locate findet nix

  Alt 25. Mär 2019, 08:12
Richtig, aber jetzt hat er sogar selbst den Beweise geliefert.
Deswegen habe ich das nochmal so deutlich geschrieben.
Peter
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.587 Beiträge
 
Delphi 7 Professional
 
#4

AW: Locate findet nix

  Alt 25. Mär 2019, 08:27
Delphi-Quellcode:
var
  i : Integer;
  k : Integer;
  sl : TStringList;
begin
  sl := TStringList.Create;
  for i := 1 to 10 do begin
    for k := 0 to IBTable.FieldCount - 1 do begin
      sl.Add(Format('%s: >>>%s<<<',[IBTable.Fields[k].FieldName, IBTable.Fields[k].AsString]));
    end;
    IBTable.Next;
    If IBTable.EoF then break;
  end;
  sl.SaveToFile('Tabellenausgabe.txt');
  sl.Free;
end;
Ungetestet, nur hingedaddelt.

Bitte mal in irgendeine Routine, auf 'nen ButtonClick oder so reinbauen, ausführen und das Ergebnis in der Textdatei hier posten oder analysieren.

Zwischen dem Inhalt einer Spalte und den >>> bzw. <<< sollten keine Leerzeichen oder sonstigen "kryptischen" Zeichen sein, sondern nur der reine Spalteninhalt. Ist dem nicht so, dann musst Du die Einleseroutine für die Daten überprüfen oder die Daten entsprechend in der Datenbank korrigieren.

Eine IP sollte in der Textdatei in der Form zu finden sein:
Code:
ip_idx: >>>1.2.3.4<<<
Jegliche andere Ausgabe weist auf Fehler in den Daten hin bzw. die Daten liegen in der Tabelle in anderer Form vor als erwartet,
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Locate findet nix

  Alt 25. Mär 2019, 08:31
Hallo,

Zitat:
Richtig, aber jetzt hat er sogar selbst den Beweise geliefert.
korrekt

Zitat:
Das SQL-Query in deinem Beispiel liefert nichts. Bei den SQL-Abfragen kriege ich nur Daten wenn ich keine Klausel angebe oder aber einen Platzhalter vorn und hinten, also "like '%1.2.3%'"
Jetzt müsste der TE (Thread-Ersteller) auch mal die vorgeschlagenen Sachen durchführen und die Ergebnisse posten.
Heiko

Geändert von hoika (25. Mär 2019 um 08:56 Uhr)
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#6

AW: Locate findet nix

  Alt 25. Mär 2019, 09:31
Zitat:
Mit anderen Worten, es steht vor und hinter dem Suchbegriff irgendetwas. Vermutlich Leerzeichen.
Diese Vermutung haben wir gegenüber ihm ja schon mehrmals geäussert und auch beschrieben, wie er das Problem lösen kann. Er glaubt uns aber anscheinend nicht.
Moin Jungs,

Nur zur Klarstellung: Ich glaube euch alles und bin auchnsehr dankbar für eure Unterstützung. Da ich seit fastb20 Jahren nix mehr mitbDelphi gemacht habe, bin ich - zugegeben - nicht mehr auf dem neuesten Stand.

Also zur Sache:

Ich kann in meinem SQL Tool nach einem Query auf die Gesamtdaten keine Zeichen am Anfang der Daten erkennen. Nur am Ende der Daten sindmvermeintlich Leerzeichen.
Deshalb konnte ich die These, dass da etwas am Anfang steht, nicht nachvollziehen.

Ichnwerde jetzt dem Vorschlag aufgreifen und dienDaten in einenTextdatei ausgeben und das Ergebnis hier nochmal posten.

Gibt es beinDelphinevtl. Andere Stringbehandlungs Probleme, wie in anderen Sprachen üblich, die zun den Problemen führen könnten?
In der Datenbank sind meine Suchfelder vom Typ vachchar und char. Beide liefern aber die selben Suchergebnisse (keine).

Danke euch & einen sonnigen Montag!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Locate findet nix

  Alt 25. Mär 2019, 09:45
Hallo,
ein VarChar(5) und ein Char(5) werden unterschiedlich behandelt.

Steht in dem Feld als Wert 'A', wird zurückgegeben:
beim Char(5) 'A____' (_ = Leerzeichen)
beim VarChar(5) ein 'A'

und auch einen sonnigen Montag
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Locate findet nix

  Alt 25. Mär 2019, 10:00
Ich kann in meinem SQL Tool nach einem Query auf die Gesamtdaten keine Zeichen am Anfang der Daten erkennen. Nur am Ende der Daten sind vermeintlich Leerzeichen.
Deshalb konnte ich die These, dass da etwas am Anfang steht, nicht nachvollziehen.
Das ist verständlich. Es gibt aber SQL-Tools, die führende Leerzeichen automatisch beim Visualisieren im Grid ausblenden. Wenn ich mich richtig erinnere, kann das auch eine Einstellung in der Datenbank sein, bzw. gibt es auch DB-Komponenten, die das als Voreinstellung so machen.

Wenn beim Select nur dein Wunsch-Ergebnis erreicht wird, wenn das like vorne ein "%" benötigt, ist das schon eindeutig.
Peter
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#9

AW: Locate findet nix

  Alt 25. Mär 2019, 11:06
Ich habe die Tabellenspalten nu in eine Textdatei ausgeben lassen und bekomme als Ergebnis ebenfalls keine führenden Leer- oder Sonstwiezeichen:

NET_IP: >>>1.0.0.0/24 <<<
GEO_ID: >>>2070667<<<
IP_IDX: >>>1.0.0.0/24 <<<
NET_IP: >>>1.0.1.0/24 <<<
GEO_ID: >>>1811017<<<
IP_IDX: >>>1.0.1.0/24 <<<

Sehr ich die Datei jedoch mit dem Hex-Editor an, kann ich am Anfang der beiden IP-Felder ein LF (!) erkennen.

Das wird wohl die Ursache des Problems sein - und die Erklärung dafür, warum ich das führende Zeichen nicht sehen konnte ..

Ich danke euch für den Tipp mit der Textdatei!

Nun zur Lösung: Gibt es eine Funktion bei IB mit der ich das erste Zeichen eines Feldes entfernen kann?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Locate findet nix

  Alt 25. Mär 2019, 11:12
Zitat:
Nun zur Lösung: Gibt es eine Funktion bei IB mit der ich das erste Zeichen eines Feldes entfernen kann?
Normlerweise TRIM() oder LTRIM() aus einer UDF-Bibliothek.
Oder SUBSTRING()
Markus Kinzler
  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 19:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz