|
>以前はマクロで値の代入があったと思うのですが、Access2010では無くなってしまったのでしょう
>か?
2010は持っていませんし、マクロは全くわからないのですが、こんなページがありました。
ht tp://answers.microsoft.com/ja-jp/office/forum/office_2010-access
/%E3%83%9E%E3%82%AF%E3%83%AD%E5%80%A4%E3%81%AE
/170e06e9-aacd-40bd-bb5d-36e741ca9459?auth=1
>1対1で結合しています。
余計なお世話ですが、本当に一対一結合でいいんでしょうか。
一対一結合だと、1人の顧客について1回の発送しかデータを格納できない
ことになってしまいます。
テーブル名から見ると、T顧客名とT発送テーブルとは一対多ではないかと
思うんですが。
>両方のテーブルを基にF顧客名とF発送フォームを作成し、同時に両方のフォームを開いてF顧客
>名フォーム内にある顧客番号テキストに値を代入すると、F発送フォーム内の顧客番号テキストボ
>ックスに同じ値を代入したいのですがうまくいきません。
第一の方法です。
フォームを1つだけにしてしまう方法です。2つのフォームを同時に
開くよりも、フォームは1つだけにした方が入力しやすいと思います。
まず、T顧客名とT発送テーブルとを、顧客番号フィールドで結合するクエリを作ります。
次に、フォームのレコードソースに、上記のクエリを設定します。
次に、このフォームに各種コントロールを配置していきますが、
顧客番号のテキストボックスは1個だけ設けます。
そして、顧客番号テキストボックスのコントロールソースに、
T発送テーブルの顧客番号フィールドを設定します。
こうしておけば、「顧客番号」テキストボックスに入力すると、
両テーブルの顧客番号フィールドに入力されます。
第二の方法です。
F顧客名とF発送フォームと同時に開いて入力する場合です。
F顧客名の顧客番号テキストボックスのAfterUpdateイベントで、
F発送フォームの顧客番号テキストボックスに
F顧客名の顧客番号テキストボックスの値を代入します。
Private Sub 顧客番号_AfterUpdate()
If SysCmd(acSysCmdGetObjectState, acForm, "F発送フォーム") <> 0 Then
Forms!F発送フォーム!顧客番号.Value = Me!顧客番号.Value
End If
End Sub
なお、上記のSysCmdメソッドですが、
上記コード実行時にF発送フォームが開いていないと、エラーになるため、
F発送フォームが開いているかをチェックします。
|
|