Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Parameter geht nicht mit ParambyName (https://www.delphipraxis.net/150338-sql-parameter-geht-nicht-mit-parambyname.html)

stefan681 14. Apr 2010 09:02

Datenbank: Advantage • Version: 9.10 • Zugriff über: Advantage Komponeten

SQL Parameter geht nicht mit ParambyName
 
Hallo,

ich habe folgendes Problem:

Seit dem Umstieg auf Delphi 2010 funktioniert der Zugriff mit Parameter bei einer SQL-Abfrage nicht mehr mit 'ParambyName'.

Hier der Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Query : TADSQuery;
begin
   Query := TADSQuery.Create(self);
   Query.DatabaseName := AdsConnection1.Name;

   Query.SQL.Clear;
   Query.SQL.Add('SELECT * FROM Benutzer WHERE LOGINNAME = :PName');
   Query.ParamByName('PName').Value := 'Programmierung';
   Query.Active := true;

   Label1.Caption := Query.FieldByName('Passwort').AsString;

   Query.Active := false;
   Query.Free;
end;
Die Fehlermeldung lautet:

The field namend 'PName' has a DataType that is not supported.

In Delphi 7 hat das alles noch funktioniert.

Auch wenn ich schreibe:
Delphi-Quellcode:
   Query.ParamByName('PName').asString := 'Programmierung';
bringt keine Veränderung.

Die Datenbank ist eine Advantage 9.1.

Hat jemand schon einen ähnlichen Fehler gehabt?

Gruss

Stefan

stho 14. Apr 2010 09:05

Re: SQL Parameter geht nicht mit ParambyName
 
Versuch es mal mit:
Delphi-Quellcode:
Query.Parameters.ParamByName('XYZ').AsString := 'BlaBlaBla';
// oder
Query.Params.ParamByName('XYZ').AsString := 'BlaBlaBla';
ich hab die komponente leider nicht in meinem delphi drinne. Probier es einfach mal aus ;-)

stefan681 14. Apr 2010 09:08

Re: SQL Parameter geht nicht mit ParambyName
 
Hallo,

funktioniert auch nicht. Der Fehler bleibt.

stho 14. Apr 2010 09:10

Re: SQL Parameter geht nicht mit ParambyName
 
ist denn die "AdsConnection1" überhaupt aktiv?
Vielleicht kann der Fehler ja daran liegen... (Ich bin kein experte... Ich prüfe nur verschiedene Möglichkeiten)
Hast du versucht mit den Standard-Komponenten (Wenn das geht) oder anderen Komponenten auf diese DB zu zu greifen?

stefan681 14. Apr 2010 09:11

Re: SQL Parameter geht nicht mit ParambyName
 
Ja, die Connction ist aktiv.

Leider kann man auf diese Datenbank nur mit diesen Komponeten zugreifen.

stho 14. Apr 2010 09:17

Re: SQL Parameter geht nicht mit ParambyName
 
kannst du bitte mal kennzeichnen in welcher zeile der fehler genau kommt?
Beim "Query.Active := True" nehme ich an, oder?
Welchen Datentyp hat die Spalte "LOGINNAME" ?
Oder Probiere mal anstatt der "=" ein "like" aus.
"[...] WHERE LOGGINNAME like :PName"
(Das hat bei meinem SQLite auch geklappt... "=" wollte das mistding nicht...

stefan681 14. Apr 2010 09:22

Re: SQL Parameter geht nicht mit ParambyName
 
Ja, der Fehler tritt auf, wenn die Query auf Active gesetzt wird.

Auch das 'Like' geht nicht.

Seltsam ist halt, das der gleiche Code in Delphi 7 funktioniert.

Es müsste ein Fehler in den Komponenten sein, der Herstellter sagt aber, bei ihm würde das so funktionieren.

stho 14. Apr 2010 09:32

Re: SQL Parameter geht nicht mit ParambyName
 
Och menno... :cry:
Ich hätte dir wirklich gerne geholfen aber gegen Fehler in der Komponente ( :x ) kann ich nix machen...
Ist zwar nicht so schön aber ich glaube du musst den Usernamen manuell einbauen...

tut mir leid :(

DeddyH 14. Apr 2010 09:36

Re: SQL Parameter geht nicht mit ParambyName
 
Sind die Komponenten evtl. nicht unicodefähig? Gibt es eine aktuellere Version?

stho 14. Apr 2010 09:51

Re: SQL Parameter geht nicht mit ParambyName
 
Zitat:

Zitat von DeddyH
Sind die Komponenten evtl. nicht unicodefähig? Gibt es eine aktuellere Version?

Hat das denn etwas mit dem Zuweisen von Parametern zu tun? :gruebel:
Ich dachte das ist der unterstützte Zeichensatz (Bitte korregiere mich wenn ich falsch liege)

mkinzler 14. Apr 2010 09:52

Re: SQL Parameter geht nicht mit ParambyName
 
In D2010 ist string = UnicodeString in den Komponenten u.U. AnsiString
Unterstützen die Komponenten .asAnsiString?

joachimd 14. Apr 2010 10:14

Re: SQL Parameter geht nicht mit ParambyName
 
Zitat:

Zitat von stefan681
Seit dem Umstieg auf Delphi 2010 funktioniert der Zugriff mit Parameter bei einer SQL-Abfrage nicht mehr mit 'ParambyName'.
...
Die Fehlermeldung lautet:
The field namend 'PName' has a DataType that is not supported.

Die Suche in der Advantage Developer Zone bringt auf die Schlagwörter delphi 2010 gleich im ersten Treffer die Lösung

DeddyH 14. Apr 2010 10:18

Re: SQL Parameter geht nicht mit ParambyName
 
Hab ich es doch geahnt :zwinker:

stho 14. Apr 2010 10:38

Re: SQL Parameter geht nicht mit ParambyName
 
ansonsten könnte man das denn nicht hiermit machen?
Delphi-Quellcode:
  Utf8ToAnsi()
  AnsiToUtf8()

mkinzler 14. Apr 2010 10:42

Re: SQL Parameter geht nicht mit ParambyName
 
Nein weil UnicodeString nicht UTF-8 sondern UTF-16

stho 14. Apr 2010 10:51

Re: SQL Parameter geht nicht mit ParambyName
 
Zitat:

Zitat von mkinzler
Nein weil UnicodeString nicht UTF-8 sondern UTF-16

und jetzt hab ich wieder was gelernt :zwinker:


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