TDBGridを使用して項目の内容を表示させるには


km  2020-11-30 18:33:12  No: 149419

 先日はどうもありがとうございました。大変恐縮ですが、改めて質問させて
いただきたく、書かせていただきます。

 開発環境は、Delphi10.3.3+Windows10Home+SQLite+FireDacの環境です。

 現在、TFDQueryに任意のSQL(Select文)を設定してOpenで開き、その結果
をTDataSource経由でTDBGridに表示させるということをやろうとしています。
一応、動作自体はするのですが、TEXT型のフィールドの場合、DBGrid上では
一律「WIDEMEMO」と表示されてしまい、中身が表示されません。

 ネットなどで検索すると、TFDQueryを右クリックしてフィールドエディタを
出し、各フィールドのDisplayValueをdvFullなどにするとよい、という解決方法
が出ていましたが、今回自分がやりたいのは、Select文をどんなものに変えても、
その内容がきちんとDBGridに表示されるようにすることです。

 ついては、任意のSQLの実行後、上記のDisplayValueをコードで実行する方法、
または上記の方法を使わなくてもきちんと内容が表示されるような方法をご教示
いただけますでしょうか。何卒よろしくお願いいたします。


lactone  2020-12-01 22:39:04  No: 149429

RADプログラマーの為のデータベースの構築方法.pdf
に提案されています。
FDConnection1オプションで
1)継承したルールを無視
2)dtWideMemoを
3)dtWideStringに手動セット
で実現できそうです。


km  2020-12-01 22:53:57  No: 149430

書き込みありがとうございます。
それらしいオプションやイベントなどを探したり、検索をしたりしていましたが、結局行きつかずに難儀しておりました。
明日、環境に触れる時間になりましたら、オプションのところをもう一度見てみたいと思います。


km  2020-12-02 21:52:33  No: 149434

 先程試してみました。
表示はうまくいくこともありますが、文字列のサイズが32727バイト?32727文字?のような長い文字列の格納されているフィールドをselectに含めると、FDConnection1から文字列が長すぎるとのエラーが出るようになりました。
他の方に明示的に変換すれば良いのか、もう少し試してみたいと思います。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加