過去ログ

                                Page     380
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼配合展開の自己回帰型サブフォームのリンクの仕方  やまざき 03/9/17(水) 8:52
   ┣Re:配合展開の自己回帰型サブフォームのリンクの仕方  やまざき 03/9/18(木) 16:07
   ┗Re:配合展開の自己回帰型サブフォームのリンクの仕方  やまざき 03/9/19(金) 5:48
      ┗Re:配合展開の自己回帰型サブフォームのリンクの仕方  YU-TANG 03/9/19(金) 21:40
         ┗Re:配合展開の自己回帰型サブフォームのリンクの仕方  やまざき 03/9/20(土) 6:37

 ───────────────────────────────────────
 ■題名 : 配合展開の自己回帰型サブフォームのリンクの仕方
 ■名前 : やまざき
 ■日付 : 03/9/17(水) 8:52
 -------------------------------------------------------------------------
   配合展開で、以下のようなテーブル設計をしています。

テーブル名     使用明細

フィールド名    データ型
リンク商品番号   テキスト
商品番号      テキスト
使用量       数値

商品マスターから商品番号を指定すると、リンク商品番号に合致するレコードが配合表になるように設計しました。配合表入力を簡素化するため、ネスティングの深さによってサブフォームに表示されるフォームを作りたいのですが、上手くいきません。
サブフォームの親フィールド、子フィールドの設定で、親フィールドのところにサブフォームのフィールド指定が出来ません。仕方なく以下の様なコードを書きましたがフォームを開いたときからエラーが出てしまいます。ご指導ください。

Private Sub Form_Current()  
  If Me.NewRecord = False Then
    Forms!商品1!使用明細のサブフォーム1.Form.RecordSource = "SELECT * FROM 使用明細 WHERE リンク商品番号='" & Me!商品番号 & "'"
    Forms!商品1!使用明細のサブフォーム1.Form.Requery
  End If
End Sub

使用明細のサブフォームのレコード移動時のイベントに設定しています。Meは使用明細のサブフォームということになります。宜しくお願いします。

 ───────────────────────────────────────  ■題名 : Re:配合展開の自己回帰型サブフォームのリンクの仕方  ■名前 : やまざき  ■日付 : 03/9/18(木) 16:07  -------------------------------------------------------------------------
   説明が下手で申し訳ありません。再度質問いたします。
配合表とか展開表とか呼ばれるものを作成しております。現在まで作成した設計は以下の通りです。

商品テーブル
フィールド名  データ型   内容
商品番号    テキスト型  キー
商品名     テキスト型  商品名

使用明細テーブル
フィールド名  データ型   内容
リンク商品番号 テキスト型  商品テーブルの商品番号にリンクして配合表を引き出し               てくる
商品番号    テキスト型  配合に使用されている材料の商品番号
使用量     数値型    商品番号の商品の使用量

商品には配合表のあるものとないものがあります。配合表があるものは商品テーブルの商品番号で使用明細テーブルのリンク商品番号を検索することで配合表が引き出されます。更に使用明細テーブルの商品番号でリンク商品番号を検索すればこの商品に配合表があるかどうか検索され使用明細に登録されている配合表が出てきます。この処理の連続で無限に配合表が登録されてゆきます。
この使用明細登録のため、商品登録フォームを作成しましたが、登録の際一つ一つ登録してゆくとわかりにくいので、サブフォームを並べてネストの深さによって登録できるようなフォームを作りたいのです。
その結果サブフォーム1の商品番号で、サブフォーム2の配合表を表記できるようなフォームを作ろうとしましたが、結果としてエラーになってしまいます。現在のコードは

Private Sub Form_Current()  
  If Me.NewRecord = False Then
    Forms!商品1!使用明細のサブフォーム1.Form.RecordSource = "SELECT * FROM 使用明細 WHERE リンク商品番号='" & Me!商品番号 & "'"
    Forms!商品1!使用明細のサブフォーム1.Form.Requery
  End If
End Sub

というコードが第一段階の使用明細のサブフォームに書かれています。
何か間違いがあればご指導ください。

 ───────────────────────────────────────  ■題名 : Re:配合展開の自己回帰型サブフォームのリンクの仕方  ■名前 : やまざき  ■日付 : 03/9/19(金) 5:48  -------------------------------------------------------------------------
   申し訳ありませんが、質問内容がわかりにくいのか、あるいは他に問題があるのかどなたかレスいただけませんでしょうか。

 ───────────────────────────────────────  ■題名 : Re:配合展開の自己回帰型サブフォームのリンクの仕方  ■名前 : YU-TANG  ■日付 : 03/9/19(金) 21:40  ■Web : http://www.f3.dion.ne.jp/~element/msaccess/  -------------------------------------------------------------------------
   > 申し訳ありませんが、質問内容がわかりにくいのか、あるいは
> 他に問題があるのかどなたかレスいただけませんでしょうか。

たぶん、エラーが出ると言っているにもかかわらず、どんなエラーか
まったく情報を提示していないからではないでしょうか。
「体調が悪いんです」と言うだけで肝腎の具体的な症状を一言も口に
しない患者の話を聞くだけでは、おそらくブラックジャックですら
何の診断も出来ないのでは。

ま、それは措いといて。

> サブフォームの親フィールド、子フィールドの設定で、親フィールド
> のところにサブフォームのフィールド指定が出来ません。仕方なく
> 以下の様なコードを書きましたがフォームを開いたときからエラーが
> 出てしまいます。ご指導ください。

これはメインフォームにサブフォーム 1 と 2 が有って、サブフォーム 1
のリンク親フィールドにサブフォーム 2 のフィールドを指定したいが
出来ない、という話ですか?
であれば、メインフォーム上に非可視のテキストボックスを配置して、
コントロールソースに

=[サブフォーム コントロール 2].[Form].[フィールド]

と設定しておいて、サブフォーム 1 のリンク親フィールドに、このテキスト
ボックスの方を指定しておけば、連動しますよ。
現場で良く使う手です(ワシだけか?)。
それで済むならそもそもコードを書く必要は無いでしょうし、コードが
エラーの発生元であれば、それが何であれ、コードが無くなればエラーも
一緒に無くなるのでは。

 ───────────────────────────────────────  ■題名 : Re:配合展開の自己回帰型サブフォームのリンクの仕方  ■名前 : やまざき  ■日付 : 03/9/20(土) 6:37  -------------------------------------------------------------------------
   ▼YU-TANG さん
アドバイスありがとうございます。

>たぶん、エラーが出ると言っているにもかかわらず、どんなエラーか
>まったく情報を提示していないからではないでしょうか。
>「体調が悪いんです」と言うだけで肝腎の具体的な症状を一言も口に
>しない患者の話を聞くだけでは、おそらくブラックジャックですら
>何の診断も出来ないのでは。

エラーの内容は

エラーコード 2455
指定した式に、Form/Reportプロパティに対する不正な参照が含まれます。

ということです。私は勝手にForms!商品1!使用明細のサブフォーム1.Formというところだろうと思っています。

>> サブフォームの親フィールド、子フィールドの設定で、親フィールド
>> のところにサブフォームのフィールド指定が出来ません。仕方なく
>> 以下の様なコードを書きましたがフォームを開いたときからエラーが
>> 出てしまいます。ご指導ください。
>
>これはメインフォームにサブフォーム 1 と 2 が有って、サブフォーム 1
>のリンク親フィールドにサブフォーム 2 のフィールドを指定したいが
>出来ない、という話ですか?
>であれば、メインフォーム上に非可視のテキストボックスを配置して、
>コントロールソースに
>
>=[サブフォーム コントロール 2].[Form].[フィールド]
>
>と設定しておいて、サブフォーム 1 のリンク親フィールドに、このテキスト
>ボックスの方を指定しておけば、連動しますよ。

早速やってみました。ビルダーからだとテーブルのフィールド名しか出てこなかったんですが、名前をプロパティボックスに入力したら動きました。解決しました。ありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 380