過去の桐井戸端BBS (桐ver.9)
25896 メイン&サブフォームでメインフォームの表の行削除はできるがサブフォームの表の該当レコードの削除ができない katsuyoshi 2004/04/16-09:42
度々お世話になります。
WinXP V9-2004です。
メイン&サブフォームの行削除について教えて下さい。

メインフォーム 申込M.wfm=申込M.tbl
サブフォーム  申込S.wfm=申込S.tbl

メインフォームは申込者の情報で
[受注No] [申込者名]等の項目があります。

サブフォームは申込み内容です。
[受注No] [品名No] [品名] [数量] [単価] [金額]等です。

[受注No]でリンクしています。

メインフォームのヘッタ部分にコマンドボタンを作っています。
コマンドボタン 行削除
機能名  行削除 指定行
パラメータ 確認しない

メインフォームのコマンドボタンで削除しても申込M.tblの
行削除はできますが申込S.tblの該当受注Noの行削除ができません。

どのようにやったらできるのか教えて下さい。

25898 Re:メイン&サブフォームでの行削除について うにん 2004/04/16-11:42
記事番号25896へのコメント
ヘルプの「参照整合性の定義」を読んでみてください。

25899 Re:メイン&サブフォームでの行削除について アックン(=^・^=) 2004/04/16-13:54
記事番号25896へのコメント
katsuyoshiさん、こんにちは。
サンプルをアップロードしました
解凍方法はご存じですか? わからないときは、ここで聞いてください。

(ダウンロードページは、当掲示板の[ツリー表示] [番号順表示] [タイトル&コメント] 各ページの下の方、
[補完BBS(文章のみではうまく伝わらないときのために)]をクリックしてください。)

サンプルには削除ボタンを付けていません。
メニューからマニュアル操作で行削除してください。

さて、こういうときは、”実表を更新する結合表”を使うのがいいと思います。
多少制限事項はあるものの、イベントも不要で、自動的に確実にやってくれます。

以下、簡単な説明だけ書きますが、定義内容についてはサンプルを参考にしてください。

>メインフォーム 申込M.wfm=申込M.tbl
>サブフォーム  申込S.wfm=申込S.tbl

この構成を少し変更します。
メインフォームの編集対象表を、結合表にします。
この結合表は、申込M.tblと申込S.tblを結合したものです。

最初にkatsuyoshiさんの申込M.tblを(必ず)定義画面から開き、メニューの
「属性」→「主キー定義」で、主キーを[受注No]に設定します。

次ぎに、申込S.tblも定義画面から開き、メニューの「属性」→「参照整合性定義」を設定します。
ここで外部キーを[受注No]に設定します。

これによって、申込M.tblと申込S.tblが 1:n の関係でリンクします。

次ぎに、結合表を新規作成します。
使う表は、申込M.tblと申込S.tblです。
定義内容はサンプルを参考にしてもらうとして、
定義画面の図のように 1:n の線で各表の項目をつなぐには、申込M.tblの項目名[受注No]から、
申込S.tblの項目名[受注No]項目名に向かってドラッグアンドドロップします。
出来た線をダブルクリックすると、設定画面が出ます。

最後に、メイン&サブフォームのメインフォームの編集対象表を変更します。
メイン&サブフォームを作成するとき、「すでに異なる排排他制御で使われています」
(だったかな?)というようなエラーメッセージが出たときは、
フォームを定義画面で開くときに共有を ON にしてください。

以上、katsuyoshiさんのファイルに変更を加えるときは、念のためにコピーするか、
バックアップをとってからにしてください。
25900 Re:メイン&サブフォームでの行削除について アックン(=^・^=) 2004/04/16-13:58
記事番号25899へのコメント
>これによって、申込M.tblと申込S.tblが 1:n の関係でリンクします。

これによって、申込M.tblの[受注No]と、申込S.tblの[受注No]が 1:n の関係でリンクします。
と書くのが正確でしょうね。訂正しておきます。m(__)m

25909 Re:メイン&サブフォームでの行削除について katsuyoshi 2004/04/17-10:47
記事番号25898へのコメント
うにんさんありがとうございました。

主キーを設定することで解決ができました。

日々勉強です。これからもよろしくお願いします。


25910 Re:メイン&サブフォームでの行削除について katsuyoshi 2004/04/17-11:04
記事番号25899へのコメント
アックン(=^・^=)さんありがとうございました。

質問の件はうにんさんから教えていただいた参照整合性で
主キーを設定することで解決しましたが今回のアックンさんの
推奨される実表を更新できる結合表にも取組んで勉強したいと思い、内容の変更をしました。
そこでまた勉強です。

1.メインフォームにつけた新規入力ボタン(コマンドボタン)
  機能名  行追加
  パラ   なし
 のボタンが押せなくなり、新規追加ができません。

2. 行削除をコマンドボタンで実行したいのですが
   機能名 行削除_指定行
   パラ  確認する
  のボタンも押せません。
 
 申し訳ありませんがもう少し教えてください。
 お願いします。 
25928 Re:メイン&サブフォームでの行削除について アックン(=^・^=) 2004/04/19-09:58
記事番号25910へのコメント
katsuyoshiさん、こんにちは。
結合表定義で「単一化」ON、または「グループ選択」ONに設定していると思いますが、
その場合は実表更新しないですね。すみません。(^^;

戻る