Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   COLLATE DE_DE mit ParamByName funktioniert nicht (https://www.delphipraxis.net/158886-collate-de_de-mit-parambyname-funktioniert-nicht.html)

BlueStarHH 6. Mär 2011 20:50

Datenbank: Firebird • Version: 2.x • Zugriff über: IBDAC

COLLATE DE_DE mit ParamByName funktioniert nicht
 
Folgender Code bringt die folgende Fehlermeldung:

Delphi-Quellcode:
Abfrage.SQL.Text := 'select * from kunden where upper(Vorname) = upper(:Vorname COLLATE DE_DE)';
Abfrage.ParamByName('Vorname').AsString := 'Jörg';
Abfrage.Open;
Dieser Fehler erscheint:
Code:
Dynamic SQL Error
SQL error code = -804
Data type unknown.
Wenn ich es ohne ParamByName mache, also so, dann klappt es:
Delphi-Quellcode:
Abfrage.SQL.Text := 'select * from kunden where upper(Vorname) = upper(''Jörg'' COLLATE DE_DE)';
Abfrage.Open;
Wie kann ich COLLATE DE_DE mit ParamByName nutzen?

jobo 6. Mär 2011 21:05

AW: COLLATE DE_DE mit ParamByName funktioniert nicht
 
Vielleicht klappt es, wenn der Parameter auch einen Typ bekommt?

BlueStarHH 6. Mär 2011 21:12

AW: COLLATE DE_DE mit ParamByName funktioniert nicht
 
Zitat:

Zitat von jobo (Beitrag 1086298)
Vielleicht klappt es, wenn der Parameter auch einen Typ bekommt?

Und wie geht das?

jobo 6. Mär 2011 21:16

AW: COLLATE DE_DE mit ParamByName funktioniert nicht
 
Paramtertyp setzt man z.B. so:

Delphi-Quellcode:
Abfrage.Parameters.Items[0].DataType := ftString;
Ich weiß aber nicht, ob das das Firebirdproblem beseitigt.

mkinzler 6. Mär 2011 21:17

AW: COLLATE DE_DE mit ParamByName funktioniert nicht
 
SQL-Code:
select * from kunden where upper(Vorname) = upper(cast(:Vorname COLLATE DE_DE) as char(32));
oder
Delphi-Quellcode:
Abfrage.ParamByName('Vorname').DataType := ftString;

BlueStarHH 6. Mär 2011 21:26

AW: COLLATE DE_DE mit ParamByName funktioniert nicht
 
Zitat:

Zitat von mkinzler (Beitrag 1086303)
SQL-Code:
select * from kunden where upper(Vorname) = upper(cast(:Vorname COLLATE DE_DE) as char(32));
oder
Delphi-Quellcode:
Abfrage.ParamByName('Vorname').DataType := ftString;

Beides geht leider nicht. Beim ersten wird gesagt dass die ) Klammer nicht stimmt ?! Und beim zweiten wird es compiliert, aber die oben genannte Fehlermeldung erscheint trotzdem.

jobo 7. Mär 2011 18:48

AW: COLLATE DE_DE mit ParamByName funktioniert nicht
 
Ich bin kein Firebirdspezialist, aber zur Fehlermeldung mit der Klammer:

Setze die Klammer direkt hinter die Variable und mach damit das UPPER zu.


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