Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi select wird case sensitive behandelt? (https://www.delphipraxis.net/160260-select-wird-case-sensitive-behandelt.html)

defede 5. Mai 2011 08:06

Datenbank: AS/400 • Version: V5R2M0 • Zugriff über: ADO

select wird case sensitive behandelt?
 
Hallo Community,
ein Problem an dem ich bereits verzweifle.

Kurzfassung:
Programm soll von BDE auf ADO umgestellt werden. Aufgrund der extremen grösse
wäre eine Anpassung aller Select/StoredProcs usw nur Wahnsinn.

Das Problem:
Was bei BDE selbstverständlich funktionierte war die Tatsache das ein select,
auf eine Spalte, die Gross und Kleinschreibung ignoriert. So sollte es doch bei
ADO doch auch sein? Oder?

Ein Beispiel:
SELECT WERT FROM FARBEN WHERE FARBE = 'Silber'
BDE liefert mir ein Ergebnis, ADO nicht.

Wenn ich aber nun die Werte anders vergleiche so zb:
SELECT WERT FROM FARBEN WHERE UPPER(FARBE) = 'SILBER'
Dann bekomme ich zwar meine Ergebnisse aber es ist einfach
zuviel Umbau erforderlich um diese Linie durchdas Programm zu drücken.

Hier mal der Connection String von ADO. Ich vermute/hoffe das es
eine Einstellung ist. Bislang aber noch nichts gefunden dazu.

Provider=IBMDA400.DataSource.1;
Password=<CODE>;
Persist Security Info=True;
User ID=<ID>;
Data Source=<SERVER>;
Initial Catalog=<DB>;
Force Translate=0;
Default Collection=<SCHEMA>;
Convert Date Time To Char=FALSE;
Catalog Library List=<SCHEMA>;
Add statements to SQL package=False;
Data Compression=True;
Hex Parser Option=0;
Library List=<SCHEMA>;
Naming Convention=0;
Keep Trailing Blanks=False

Hoffe irgendwer kann mir Helfen?

PAB 5. Mai 2011 08:21

AW: select wird case sensitive behandelt?
 
Hallo defede,

das wird mit der Collation zusammenhängen. Evtl. reicht es, den Parameter "Default Collation" auf eine case insensitive umzustellen. Andernfalls musst du das bei den einzelnen Textspalten anpassen.

Gruss Philipp

himitsu 5. Mai 2011 08:23

AW: select wird case sensitive behandelt?
 
In MySQL bestimmt die COLLATION der Tabellen, bzw. der einzelnen Collumns, wie deren Werte verglichen werden.

z.B.: latin1_german1_ci vergleicht z.B. nach deutschem Schema (inkl. Umlaute) und ohne Beachtung der Groß-/Kleinschreibung,
wärend latin1_general_cs auf die Großkleinschreibung achtet.

[edit]
man, bin ich langsam :schlaf:

Bernhard Geyer 5. Mai 2011 08:25

AW: select wird case sensitive behandelt?
 
Zitat:

Zitat von defede (Beitrag 1098954)
Was bei BDE selbstverständlich funktionierte war die Tatsache das ein select,
auf eine Spalte, die Gross und Kleinschreibung ignoriert. So sollte es doch bei ADO doch auch sein? Oder?

Das ist eine Einstellung auf DB-Ebene/Tabellen bzw. Spaltenebene. Sollte die BDE das immer ignoriert haben so hat die BDE hier immer die Einstellungen entsprechend gesetzt. Kannst du mit einem Profiler schauen was die BDE-Anwendung so beim Verbindungsaufbau so zum Server schickt. Das müsstest du evtl. beim Verbindungsaufbau nachimplementieren.

defede 5. Mai 2011 10:33

AW: select wird case sensitive behandelt?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
erstmal danke für das Interesse.

Soweit ich das Festgestellt habe ist das bereits alles "Deutsch (A)"
Spalten sind mit CCSID 273 angelegt wurden. Klick mich: Anhang 34106

Ein übergeben des Parameters "Default Collation" (im ConnectionString)
ist leider in ADO wohl nicht vorgesehen. Zumindest find ich hier gar nichts dazu.

ConncetionString Parameter: 'Force Translate=273;' habe ich dazu auch mal umgestellt
jedoch ohne Erfolg. Laut IBM (Hilfe zu Parametern) sollte das so gehen,
habs auch mal mit 0 versucht - auch ohne Erfolg.

Was ich noch interessant finde, das iNavigator kommt per JDBC rein. Hat dort auch
eine eigene Config und Paramter (fast gleich zur BDE). Jedenfalls bringt mir der iNavigator ebenfalls das richtige Ergebnis.

Nur ADO fällt hier scheinbar ausm Rahmen?
Mit Profiler geht leider auch nicht.

Hat denn jemand noch eine Idee dazu? :pale:

PAB 5. Mai 2011 11:58

AW: select wird case sensitive behandelt?
 
Hallo defede,

"Default Collation" ist natürlich Unsinn, da hab ich mich in deiner Auflistung verlesen :oops:

Hast du schon mal den Parameter "Sort Sequence" = 2 (aus deinem Link zur IBM Parameterübersicht) ausprobiert (evtl. musst du dann "Sort Language ID" angeben)?

Gruss Philipp

defede 5. Mai 2011 13:18

AW: select wird case sensitive behandelt?
 
Hallo PAB,
also erstmal vielen vielen Dank für deine Hilfe!
Das Problem lag wirklich an "Sort Sequence" und "Sort Language ID" !
Nun funkt es so wie es sein soll :-D

Vielen Dank nochmals :thumb: you save my Day!


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