度々お世話になっております。
現在、ADO + Access2000を用いてプログラムを作っているのですが、
最後の山場で躓きました。
問題のテーブル構成は、親フォームが受注テーブルです。
受注コードや顧客名、発注日などが入っています。
そして、サブフォームがその日に販売した商品のリストが現れます。
ここでは受注コード、商品コード、商品名、数量、単価、明細金額
が、クエリにて作られております。
それはAccessなら簡単に実現できるサブフォームがなかなかVBでは
実現に至っていないということです。現在までにクリアした内容は、
1.親フォームのIDと同じIDをサブフォームのIDに代入する
2.きちんと商品登録はできる(まだ、IDを入れるだけでスパッと
でる仕組みにはしておりません)
問題となっているのは、サブフォームのあるレコードを削除すると
商品マスターのレコードまで削除される現象です。親フォームのレ
コードを削除したときには特に何も問題はないのですが、こいつだ
けがクリアできていません。
コードは
Dim mysql As String
mysql = "SELECT 受注明細.`受注コード`, 受注明細.`商品コード`, `商品マスター`.商品名, 商品区分.区分名, `商品マスター`.単価, 受注明細.数量, 単価 * 数量 AS 明細金額 FROM 受注明細, `商品マスター`, 商品区分 WHERE 受注明細.`商品コード` = `商品マスター`.`商品コード` AND `商品マスター`.`区分コード` = 商品区分.`区分コード` AND 受注明細.`受注コード` = " & txt受注コード.Text
With rssub
.ActiveConnection = cn
.CursorLocation = adUseServer
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Properties("IRowsetIdentity") = True
.Open mysql, , , , adCmdText
End With
total = 0
Set grdsub.DataSource = rssub
こんな感じでデータグリッドに結果を投げています。
どのようなSQLを書いたら、サブフォームのレコードを
削除しても商品マスターまで消えたりはしないですか?
ソースコードは全て出せます。どうか助けてください。
ここが最後の山で困っています。
問題は、解決したでしょうか?
SQL部分の問題点ですが、
「データグリッドに各テーブルからの検索値を当てはめてるだけ」
ということがあげられるのではないでしょうか?
検索しただけのデータを削除しようとすると当然、商品マスタや、他のテーブルの元となるレコードも削除されてしまうと思います。
そこで、まず、検索したレコードを「明細テーブル」へ落とし、編集するといったやり方がいいのではないでしょうか?
問題が解決していれば、いいのですが・・・