Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit Access SQL Abfrage/ ADOQuery (https://www.delphipraxis.net/84111-probleme-mit-access-sql-abfrage-adoquery.html)

Dreamer 11. Jan 2007 14:33

Datenbank: Access mdb • Version: - • Zugriff über: ADO / SQL

Probleme mit Access SQL Abfrage/ ADOQuery
 
Hallo!

Ich habe folgendes Problem:

Ich möchte aus einer Access-Tabelle alle Strings geliefert haben, die mit -XY\ enden.
Der Code dafür ist folgender:

Delphi-Quellcode:
Land:=edt_sland.Text;
ADOQuery1.Active := false;
ADOQuery1.SQL.Text:= 'SELECT * FROM daten WHERE Pfad LIKE :Land';
ADOQuery1.Parameters.ParamByName('Land').Value:='%-'+edt_sland.text+'\';
ADOQuery1.Active := true;

Das funktioniert soweit auch. Allerdings liegen zwischen den richtig ausgefilterten Daten auch hin und wieder einige andere.

Beispiel:
Ich suche nach Strings die auf -DK\ enden. Ich bekomme sämtliche Strings, jedoch auch einen in dem das Wort "Feldkulturen" vorkommt.

Schreibe ich nun eine SQL-Abfrage in Access:
Code:

Delphi-Quellcode:
SELECT [bank].[daten]
FROM Christ
WHERE ((([bank].[daten]) Like "*-GB\"));
... dann funktioniert diese exakt so, wie es soll. Ausschließlich Pfade, die auf -GB\ enden.


Hat jemand Ideen oder eine Ahnung wie iman das beheben kann?

Gruß
Nik

mkinzler 11. Jan 2007 14:38

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Vergleich auf UPPER

Dreamer 11. Jan 2007 14:57

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Delphi-Quellcode:
ADOQuery1.Active := false;
ADOQuery1.SQL.Text:= 'SELECT * FROM Christ WHERE Pfad LIKE :Land';
ADOQuery1.Parameters.ParamByName('Land').Value:='%-(UPPER('+edt_sland.text+'))\';
ADOQuery1.Active := true;


...so? Das geht nicht...

mkinzler 11. Jan 2007 15:01

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Delphi-Quellcode:
ADOQuery1.SQL.Text:= 'SELECT * FROM Christ WHERE UPPER(Pfad) LIKE :Land';
ADOQuery1.Parameters.ParamByName('Land').Value:='%-'+UpperCase('+edt_sland.text;

Dreamer 11. Jan 2007 15:09

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Delphi-Quellcode:
      ADOQuery1.SQL.Text:= 'SELECT * FROM Christ WHERE UPPER(Pfad) LIKE :Land';
      ADOQuery1.Parameters.ParamByName('Land').Value:='%-'+UpperCase(edt_sland.text)+'\';

Das funktioniert leider auch nicht...

mkinzler 11. Jan 2007 15:10

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Welchen?

Dreamer 11. Jan 2007 15:29

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Wie "Welchen?"?

Der Code, den du gepostet hast, geht ja so nicht.
Also hab ich ihn umgeschrieben. Aber es ändert sich nichts.

mkinzler 11. Jan 2007 15:31

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Kommt ein Fehler? Kenn mich mit der detailsyntax von Access nicht so aus.

mikhal 11. Jan 2007 15:35

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Verwende statt UpperCase lieber AnsiUpperCase. UpperCase führt zu Problemen bei Umlauten und Sonderzeichen.

Delphi-Quellcode:
ADOQuery1.SQL.Text:= 'SELECT * FROM Christ WHERE UPPER(Pfad) LIKE :Land';
      ADOQuery1.Parameters.ParamByName('Land').Value:='%-'+AnsiUpperCase(edt_sland.text)+'\';
Access verwendet (zumindest intern) den Asterisk '*' als Allquantor statt dem '%', hast du es damit schon versucht? ADO verwendet zwar das Prozentzeichen...

Grüße
Mikhal

shmia 11. Jan 2007 18:03

Re: Probleme mit Access SQL Abfrage/ ADOQuery
 
Schon mal daran gedacht, ein eigenes Feld für die Länderkennung einzuführen?
ISO-3166 alphanum-2 (DE=Deutschland, FR=Frankreich) ist da gut geeignet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz