Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Data type unknown (https://www.delphipraxis.net/92215-data-type-unknown.html)

mkinzler 23. Mai 2007 20:40

Re: Data type unknown
 
Zitat:

Weise Deinem Parameter doch mal nicht einfach nur den Namen, sondern QuotedStr(SuchName) zu.
Bei Parametern nicht nötig

daddy 23. Mai 2007 21:23

Re: Data type unknown
 
Also ich hab es inzwischen mal ausprobiert. Mein Vorschlag mit "QuotedStr" brachte tatsächlich nichts. Bei ähnlichen Befehlen, wie Du sie beschrieben hast, erhielt ich ebenfalls die Meldung "DataType unknown". Es funktioniert allerdings, wenn man statt parametrisierter Abfragen, das SQL-Statement selber zusammenbaut und dem SQLQuery zuweist. Also etwa in der Art:

Delphi-Quellcode:
procedure MeineSuche;
var Suchname : String;
begin
  Suchname := ...;
  SQLQuery.Clear;
  SQLQuery.Add('Select ''' + SuchName + ''', Name from Adressen '
               + 'where ReduceChar(Name) = ReduceChar(''' + SuchName + ''')'
  SQLQuery.Open;
  ...
end;
wobei in der Variablen "Suchname" natürlich der von Dir zum Vergleich gesuchte Name steht.

Gruß Daddy

smudo 25. Mai 2007 07:24

Re: Data type unknown
 
Danke daddy cool :lol:

Die von dir angesprochene letzte Lösung ist auch das, was ich momentan verwende. Abfragen mit Parametern sind aber normalerweise performanter, deswegen interessiert mich die Verwendung derselben für UDFs. Wie's aussieht, scheint aber niemand eine Lösung dafür zu kennen, evtl gibts diese gar nicht.
Wieder ein Grund mehr, endlich auf Firebird umzustellen.

daddy 25. Mai 2007 11:53

Re: Data type unknown
 
Ich bin mir nicht sicher, ob Firebird das Problem lösen würde. Zumindest habe ich meine Tests unter Firebird durchgeführt und hatte ja ebenfalls den von Dir beschriebenen Effekt. Ich habe eher den Eindruck (habe das aber nicht näher untersucht), dass man generell über Parameter keine Spaltennamen (und evtl. auch keine Tabellennamen etc.) zuweisen kann.

Gruß Daddy

smudo 25. Mai 2007 12:27

Re: Data type unknown
 
Also, ich glaub ich schriebs schon:
Unter Firebird (2.0) funktionieren Parameter für UDFs problemlos.
Und für Spaltennamen muss man erst einen Cast auf den gewünschten Datentyp machen, dann gehts auch.

daddy 25. Mai 2007 12:45

Re: Data type unknown
 
Na ja, aber es ist ja ein Unterschied, ob ich meinem Query
Delphi-Quellcode:
'Select * from MyTable where lower(MyTable.SpalteX) = lower(:P0)'
zuweise und dann per Parameter einen String auswerten lasse oder ob ich
Delphi-Quellcode:
'Select * from MyTable where lower(:P0) = lower(''mein Suchtext'')'
zuweise und dann per Parameter versuche einen Spaltennamen zu übergeben.

Funktioniert das Letztgenannte denn tatsächlich auch? Ich habe einiges in der Richtung versucht und hatte keinen Erfolg damit. Ich war generell nicht in der Lage, einen Spaltennamen erst per Parameter festzulegen. Auch ein Cast half da nicht weiter. Zeig doch noch mal eine konkrete Zuweisung, mit der es bei Dir klappte.

Gruß Daddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr.
Seite 2 von 2     12   

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