|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"DBGrid上の複数のコンボでデータ抽出"
Title: DBGrid上の複数のコンボボックスによる、データ抽出について
nifty:FDelphi/MES/7/#10945 以降で謎の全知師さんに教えてもらいました。
[例] 2つのマスター(Dai,Syo)を使った家計簿(Kakei)入力
DaiNameの項目をComboBoxで選択し、SyoNameの項目の参照ボタンを開くと
SyoはDaiで選択された物だけを表示し、選択可能となる。
(一つのDBGridで下記のような入力・修正画面を作成する場合)
---------------------------------------------
| Date | DaiName | SyoName | Tanka |
---------------------------------------------
1| 98/04/22 | Dai-1 ▼| Syo-11 [...]| \200 |
---------------------------------------------
2| 98/04/21 | Dai2 | Syo-21 | \100 |
---------------------------------------------
(入力) (選択) (入力) (表示) (入力)
[データ構造]
テーブル:Kakei テーブル : Dai テーブル : Syo
Date : DateTime Dai : Integer Dai : Integer
Dai : Integer DaiName : String Syo : Integer
Syo : Integer SyoName : String
Tanka : Currency
[サンプルデータ]
[テーブル : Dai ] [テーブル : Syo]
Dai DaiName Dai Syo SyoName
------------------- '-------------------
1 Dai-1 1 1 Syo-11
2 Dai-2 1 2 Syo-12
2 1 Syo-21
2 2 Syo-22
[テーブル:kakei]
Date Dai Syo Tanka
-----------------------------
98/04/22 1 1 200
98/04/21 2 1 100
[作成例]
1)DaiNameは、tblKakei(TTable)の項目設定ダイアログを表示して、
参照項目として、KeyFieldsとLookupKeyFiewldsに Daiを設定する。
2)SyoNameは、tblKakei(TTable)の項目設定ダイアログを表示して、
参照項目として、KeyFieldsと LookupKeyFiewldsにDai;Syoを設定する。
3)DBGridのカラムの設定ダイアログを表示して、すべての項目の追加を
行った後、Syo_Nameを表示している項目を選択して、
オブジェクトインスペクタで、ButtonStyleをcbsEllipsisに変更する。
4)Syoのテーブルの一覧を表示するフォーム(frmSyo)を別途作る。
5)DBGridのOnEditButtonClickイベントに、frmSyoで選択したSyoを
Kakeiにセットするようなコードを記述する。
frmSyo := TfrmSyo.Create( Application );
try
if frmSyo.ShowModal = mrOK then
Begin
If not (Kakei.State in [dsEdit, dsInsert]) Then
Kakei.Edit;
DBGrid1.Columns[3].Field.Assign(
frmSyo.DBGrid2.Columns[1].Field);
finally
frmSyo.free;
end;
※ frmSyoを頻繁に呼び出す場合は、自動作成にしてMainFormのClose時に
Free にした方がよい。
---
秀之@呉,広島 tico.tanaka@nifty.ne.jp http://member.nifty.ne.jp/TICO/
[Pan ML] [Delphi] [AutoCAD LT] [Access] [BackTo '60s]
Original document by 秀之 氏 ID:(PXL12416)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|