DOBON.NET DOBON.NETプログラミング掲示板過去ログ

コードでリレーションシップを自動生成。

分類:[.NET]

いつもお世話になっております。

.mdb ファイルにおいて、新しく生成されたテーブルと前からあるテーブルの間にリレーションシップを作る方法なのですが..。
データベースダイアグラムかテーブルデザイナを使う以外には、
VB でコードを書いて、テーブル間に自動的にリレーションシップを作る方法はないのでしょうか?

以下がやりたいことです。

2つのテーブル "T TABLE1" と "T TABLE2" があり、それぞれ、
"T TABLE1"
"F NO1"
"F BOOLEAN11"
"T TABLE2"
"F NO2"
"F BOOLEAN21"
"F BOOLEAN22"
というフィールドがあります。
このとき、
"F BOOLEAN11" = TRUE かつ "F BOOLEAN21" = TRUE となっているレコードだけを抽出し、
"F BOOLEAN22" の値を True にしたいのです。

"T TABLE1" の "F NO1" と "T TABLE2" の "F NO2" との間にリレーションシップが作られていれば
これは簡単に達成できることだと思うのですが..。

あるいは、リレーションシップを作る以外に、同じことを実現する方法がありますでしょうか?
"T TABLE1" で条件を満たすレコードの "F NO1" の値を配列に格納し、
"T TABL"2" で "F NO2" の値が同じものについて "F BOOLEAN21" の値を調べていくという方法は
思いつきましたが.. (- -;

基本的なことだと思いますが、何卒ご教授お願いいたします。
一発で更新したければ
UPDATE T_TABLE2 SET T_TABLE2.BOOLEAN22 = True
WHERE (T_TABLE2.NO2 IN (SELECT T_TABLE2.NO2
FROM T_TABLE1 INNER JOIN T_TABLE2 ON T_TABLE1.NO1 = T_TABLE2.NO2
WHERE (T_TABLE1.BOOLEAN11=True) AND (T_TABLE2.BOOLEAN21=True)
));

抽出だけなら
SELECT T_TABLE1.NO1, T_TABLE1.BOOLEAN11, T_TABLE2.BOOLEAN22
FROM T_TABLE1 INNER JOIN T_TABLE2 ON T_TABLE1.NO1 = T_TABLE2.NO2
WHERE (T_TABLE1.BOOLEAN11=True) AND (T_TABLE2.BOOLEAN21=True);
fukuさん、ありがとうございました。
やはり、SQLの知識不足の問題でしたか...。

勉強してきます。ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板