![]() |
Datenbank: Firebird • Version: 2.x • Zugriff über: IBDAC
COLLATE DE_DE mit ParamByName funktioniert nicht
Folgender Code bringt die folgende Fehlermeldung:
Delphi-Quellcode:
Dieser Fehler erscheint:
Abfrage.SQL.Text := 'select * from kunden where upper(Vorname) = upper(:Vorname COLLATE DE_DE)';
Abfrage.ParamByName('Vorname').AsString := 'Jörg'; Abfrage.Open;
Code:
Wenn ich es ohne ParamByName mache, also so, dann klappt es:
Dynamic SQL Error
SQL error code = -804 Data type unknown.
Delphi-Quellcode:
Wie kann ich COLLATE DE_DE mit ParamByName nutzen?
Abfrage.SQL.Text := 'select * from kunden where upper(Vorname) = upper(''Jörg'' COLLATE DE_DE)';
Abfrage.Open; |
AW: COLLATE DE_DE mit ParamByName funktioniert nicht
Vielleicht klappt es, wenn der Parameter auch einen Typ bekommt?
|
AW: COLLATE DE_DE mit ParamByName funktioniert nicht
Zitat:
|
AW: COLLATE DE_DE mit ParamByName funktioniert nicht
Paramtertyp setzt man z.B. so:
Delphi-Quellcode:
Ich weiß aber nicht, ob das das Firebirdproblem beseitigt.
Abfrage.Parameters.Items[0].DataType := ftString;
|
AW: COLLATE DE_DE mit ParamByName funktioniert nicht
SQL-Code:
oder
select * from kunden where upper(Vorname) = upper(cast(:Vorname COLLATE DE_DE) as char(32));
Delphi-Quellcode:
Abfrage.ParamByName('Vorname').DataType := ftString;
|
AW: COLLATE DE_DE mit ParamByName funktioniert nicht
Zitat:
|
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