AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken COLLATE DE_DE mit ParamByName funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

COLLATE DE_DE mit ParamByName funktioniert nicht

Ein Thema von BlueStarHH · begonnen am 6. Mär 2011 · letzter Beitrag vom 7. Mär 2011
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#1

COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 6. Mär 2011, 19:50
Datenbank: Firebird • Version: 2.x • Zugriff über: IBDAC
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?
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 6. Mär 2011, 20:05
Vielleicht klappt es, wenn der Parameter auch einen Typ bekommt?
Gruß, Jo
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 6. Mär 2011, 20:12
Vielleicht klappt es, wenn der Parameter auch einen Typ bekommt?
Und wie geht das?
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 6. Mär 2011, 20:16
Paramtertyp setzt man z.B. so:

Abfrage.Parameters.Items[0].DataType := ftString; Ich weiß aber nicht, ob das das Firebirdproblem beseitigt.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 6. Mär 2011, 20:17
select * from kunden where upper(Vorname) = upper(cast(:Vorname COLLATE DE_DE) as char(32)); oder
Abfrage.ParamByName('Vorname').DataType := ftString;
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 6. Mär 2011, 20:26
select * from kunden where upper(Vorname) = upper(cast(:Vorname COLLATE DE_DE) as char(32)); oder
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.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: COLLATE DE_DE mit ParamByName funktioniert nicht

  Alt 7. Mär 2011, 17:48
Ich bin kein Firebirdspezialist, aber zur Fehlermeldung mit der Klammer:

Setze die Klammer direkt hinter die Variable und mach damit das UPPER zu.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:36 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