こんにちわ。delphi4 oracle8iを使っています。
2つのテーブルがデータベース上にあり、Aテーブルにはプライマリーキーがかかっている顧客IDと個人情報・Bテーブルには、プライマリーキーがかかっている商品IDとその商品を購入したか人の情報(この情報の中には、TableAの顧客IDが含まれていて、TableBではプライマリーキーがかかってなく、重複可能です。)が載っています。tableAの顧客IDを検索した際、その内容がフォームに表示され(ここまではできてます。)、同時にその顧客IDをつかって、tableBでもその顧客IDをもとにデータが抽出する方法(
DBGridに表示)を教えていただけないでしょうか?さらに、TableBに同じ顧客IDをもつ、テーブルAのデータがある際には、TableAの1つの項目(purchased)に、フラグが立つ方法を教えていただけないでしょうか?
ちなみに、tableBのdataset,query2はtableAとは別のフォームにあります。
現在、試しているのは、
まず、sql.add('select * from tableA where ID = :value....
dbgridに表示
同じボタンクリック処理の中で、
with query 2 do(←抽出のみの場合)
begin
close;
with sql do
begin
add('select * from tableB where tableA.ID = tableB.ID');
end;
open;
end;
with query 2 do(フラグを立てる場合)
begin
close;
with sql do
begin
add('update tableA set purchased = '1' where tableA.ID = tableB.ID');
end;
open;
end;
よろしくお願いいたします。
Query1のSQLに
Select ID,Name
From TableA
を設定します。
Datasorce1のDatasetをQuery1にします。
Query2のSQLに
Select *
From tableB
Where ID = :ID
として、
Query2のParamsを選択して、右端の[...]をクリックして、ParamsにIDを追加します。
Query2のDatasorceをDatasorce1にします。
これで、Query1をマスターにして
Datasorce2のDatasetをQuery2にします。
DBGrid1のDatasorceをDatasorce1にします。
DBGrid2のDatasorceをDatasorce2にします。
これで、Query1,Query2をOpenします。
以上で2つのテーブルの連携が出来ます。
DBGrid1のレコードを動かすと、DBGrid2の内容は、選択したIDのレコードを表示します。
HOtaさん、ちなみにこれは、私が書いた命令文のあるボタンのonclickのところに書けば、ボタンをクリックしたときだけ、上記のような処理ができますか?また、updateでフラグを1つの項目に立てることは可能でしょうか?
何も試されずに質問されているようですが、試してみましたか?
可能です。
ツイート | ![]() |