TADOQuery ParamByNameにて文字列を保存する場合

解決


Sara  2014-10-24 18:36:30  No: 46794  IP: [192.*.*.*]

Windows8.1 Update(Pro)
Delphi XE5 Pro
Postgresql

TADOQueryにて文字列をDBに保存(更新)するにあたり、

Query.Parameters.ParamByName('Name').DataType := ftString;
Query.Parameters.ParamByName('Name').Value := Name.Text;
等としてQuery.ExecSQLを実行すると・・・

文字列が短い場合は正常に動作するのですが、長い文字列を保存しようとすると、
「Identifier must be less than 64 characters」と表示されて更新されません。

DataTypeをいろいろ変えてみたり、Sizeを渡してみたりしましたが、
状況は変わらないようです。

どのようにすれば、保存できるでしょうか?

もちろん、Parameters.ParamByNameを使わずに すべて文字として
Query.SQL.TextにSQL分を渡せば問題なく更新できますし
SQL文をある程度簡単に構築するため関数も作っているので
Parameters.ParamByNameを使わなくても実害は無いのですが
Parameters.ParamByNameを使って出来ないはずないですよね?

今までParameters.ParamByNameを使っていなかったので・・・(^^;
気になって質問をしてみました。

ご教示頂けると幸いです。

編集    削除
Sara  2014-10-28 17:50:47  No: 46795  IP: [192.*.*.*]

みなさん  こんにちは。

その後、ZeosLibを使って同じことを行ってみました。

その結果、ZeosLibのParamByNameをであれば、問題なく動作することが解りました。

と、いう事は、TADOQueryの問題ということですかね・・・
もしくは、どこか設定する項目が足りないか・・・

ところで、このZeosLibですが、テーブルの名称とか項目名とかに日本語名を使っていると(^^;
SQL.TextにSQL文を放り込むだけで例外エラーになる・・・
まぁ日本語記述してある部分をすべてダブルクォーテーションで括ってあげると
正常動作しますが・・・  その点はADOQueryはそのまま動作するので、ありがたい。
(ダブルクォーテーションで括るのは面倒だ・・・)

そんなわけで、ADOQueryでParamByNameを使わない方向でやっていきます(^^;

一応、解決としますが、何か情報があれば、教えてください。

よろしくお願いいたします。

編集    削除