DBGridにテーブルに存在しない項目を入れたいです。


1278  2025-04-16 01:00:12  No: 151953  IP: 192.*.*.*

DBGridにテーブルに存在しない項目を入れたいです。そのあと条件判定に用います。

編集 削除
igy  2025-04-16 03:31:17  No: 151955  IP: 192.*.*.*

もし、そのレコードの内容から格納データが決まるなら、計算項目を使用する方法がありそうですが、いかがですか?

編集 削除
1278  2025-04-17 05:47:56  No: 151956  IP: 192.*.*.*

igyさんありがとうございます。レコードの内容からはデータが決まらないため計算項目は使えないと思ってました。
イメージとしては、テーブルに存在しない項目を作る→ほかのプロシージャーなどでデータを格納していく感じです。

編集 削除
igy  2025-04-17 06:13:38  No: 151957  IP: 192.*.*.*

格納したいデータ用に別のテーブルを用意し、Queryを利用して2つのテーブルからDBGridに表示するか、
DBGridをやめて、StringGridを使って表示するなど、考えられますが、いかがでしょうか?

編集 削除
AAAAA  2025-04-17 08:59:25  No: 151958  IP: 192.*.*.*

  //TCustomDBGrid = class(TCustomGrid)
  TCustomDBGrid = class(TStringGrid)
でコンパイルしなおせば  DBGrid でも Cells は使えるようになる

編集 削除
1278  2025-04-23 01:47:34  No: 151966  IP: 192.*.*.*

Queryを使いました。
DBGridに表示されたレコードに一括で処理をかける方法はありますか?

編集 削除
igy  2025-04-23 10:08:14  No: 151970  IP: 192.*.*.*

> Queryを使いました。
> DBGridに表示されたレコードに一括で処理をかける方法はありますか?

格納したいデータ用に別のテーブルを用意したのであれば、
そのテーブルに対し、Updateを使ったSQL文を実行するというのは、いかがですか?

編集 削除
Mr.XRAY  2025-04-28 04:08:28  No: 151979  IP: 192.*.*.*

TDBGrid は,基本的にデータセットのデータをグリッド状に表示します.
そのためには TxxTable, TxxQuery などにその項目が必要です.
そのことを示唆しているのが igy さんのレスです.

現在は SQL 文を使用するのが一般的と言えます.
SQL を使用すれば,計算項目も,他の表の項目のデータも,少し面倒ですが,他のデータベースの表のデータも項目として追加できます.
TxxQuery のイベントで SQL で取得する (した) データを処理できます.
計算項目であれば,例えば OnCalcFields というイベントがありますが,イベントの種類にこだわる必要はありません.データが取得処理できさえすれば AfterXXX などのイベントも使えます.
また,ちょっと複雑になりますが,イベントを使用しないで SQL 文だけでも処理できます.
も,SQL に詳しくないのであれば,例えば次のような参考書で勉強されることをお勧めします.

[ はじめての SQL ― 基礎からはじめるデータベース操作 ]
https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AESQL%E2%80%95%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%93%8D%E4%BD%9C-%E8%90%8C%E6%9C%A8-%E5%B0%A8/dp/4774103349?&camp=759&linkCode=wey&tag=mx0d-22&creative=3827

※ SQL を使用しなければならないと言うことではありません.
  

編集 削除
Mr.XRAY  2025-04-28 04:23:41  No: 151980  IP: 192.*.*.*

> [ はじめての SQL ― 基礎からはじめるデータベース操作 ] 

旧版も新版も持っていますが,個人的には旧版の方がいいと思っています.
  

編集 削除