DBGridにテーブルに存在しない項目を入れたいです。そのあと条件判定に用います。
もし、そのレコードの内容から格納データが決まるなら、計算項目を使用する方法がありそうですが、いかがですか?
igyさんありがとうございます。レコードの内容からはデータが決まらないため計算項目は使えないと思ってました。
イメージとしては、テーブルに存在しない項目を作る→ほかのプロシージャーなどでデータを格納していく感じです。
格納したいデータ用に別のテーブルを用意し、Queryを利用して2つのテーブルからDBGridに表示するか、
DBGridをやめて、StringGridを使って表示するなど、考えられますが、いかがでしょうか?
//TCustomDBGrid = class(TCustomGrid)
TCustomDBGrid = class(TStringGrid)
でコンパイルしなおせば DBGrid でも Cells は使えるようになる
Queryを使いました。
DBGridに表示されたレコードに一括で処理をかける方法はありますか?
> Queryを使いました。
> DBGridに表示されたレコードに一括で処理をかける方法はありますか?
格納したいデータ用に別のテーブルを用意したのであれば、
そのテーブルに対し、Updateを使ったSQL文を実行するというのは、いかがですか?
TDBGrid は,基本的にデータセットのデータをグリッド状に表示します.
そのためには TxxTable, TxxQuery などにその項目が必要です.
そのことを示唆しているのが igy さんのレスです.
現在は SQL 文を使用するのが一般的と言えます.
SQL を使用すれば,計算項目も,他の表の項目のデータも,少し面倒ですが,他のデータベースの表のデータも項目として追加できます.
TxxQuery のイベントで SQL で取得する (した) データを処理できます.
計算項目であれば,例えば OnCalcFields というイベントがありますが,イベントの種類にこだわる必要はありません.データが取得処理できさえすれば AfterXXX などのイベントも使えます.
また,ちょっと複雑になりますが,イベントを使用しないで SQL 文だけでも処理できます.
も,SQL に詳しくないのであれば,例えば次のような参考書で勉強されることをお勧めします.
※ SQL を使用しなければならないと言うことではありません.
> [ はじめての SQL ― 基礎からはじめるデータベース操作 ]
旧版も新版も持っていますが,個人的には旧版の方がいいと思っています.
ツイート | ![]() |