Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2226 / 2272 ツリー ←次へ | 前へ→

【3340】フォーム上で別のテーブルのデータを表示して、保存する方法 お初 04/8/26(木) 19:02 質問[未読]
【3341】Re:フォーム上で別のテーブルのデータを表示... こもれび 04/8/27(金) 2:24 回答[未読]
【3343】Re:フォーム上で別のテーブルのデータを表示... クロ 04/8/27(金) 10:24 回答[未読]
【3345】Re:フォーム上で別のテーブルのデータを表示... お初 04/8/27(金) 14:09 質問[未読]
【3346】Re:フォーム上で別のテーブルのデータを表示... クロ 04/8/27(金) 14:27 回答[未読]
【3352】Re:フォーム上で別のテーブルのデータを表示... お初 04/8/28(土) 15:16 質問[未読]
【3363】Re:フォーム上で別のテーブルのデータを表示... クロ 04/8/29(日) 5:09 回答[未読]
【3364】Re:フォーム上で別のテーブルのデータを表示... お初 04/8/29(日) 11:11 お礼[未読]
【3347】Re:追伸 クロ 04/8/27(金) 14:28 回答[未読]

【3340】フォーム上で別のテーブルのデータを表示...
質問  お初  - 04/8/26(木) 19:02 -

引用なし
パスワード
   こんばんは。
お初です。
何度も申し訳ありません。
ご質問があります。

現在テーブルがA・Bと2つあり、
Aのテーブルに連結したAフォームがあり、
Bのテーブルの一部のデータをAフォームに表示してその内容を保存したいのですが、やり方がわかりません。
どなたかご教授お願い致します。
例:
商品テーブル(A)
日付 商品名 入荷チェック
2004/08/02 みかん 1
2004/08/02 ぶどう 1
2004/08/02 なし  1
2004/08/04 みかん 1
2004/08/04 みかん 2

単価テーブル(B)
商品名 単価1 単価2
みかん 300  250
ぶどう 200  180
なし  150  120

とあり、Aフォーム上では
日付 商品名 入荷チェック(オプションボタン「済み(1)」「未(2)」) 単価(テキストボックスで表示)

とあった時、Aフォームの単価の項目には入荷チェックが「1」の時単価1を自動表示し、「2」の時単価2を自動表示して、尚且つAのテーブルに保存(反映)できるようにしたいのですが、そのようなことは可能でしょうか?

たびたび申し訳ありませんが、よろしくお願い致します。

【3341】Re:フォーム上で別のテーブルのデータを表...
回答  こもれび  - 04/8/27(金) 2:24 -

引用なし
パスワード
   こもれびです

>とあり、Aフォーム上では
>日付 商品名 入荷チェック(オプションボタン「済み(1)」「未(2)」) 単価(テキストボックスで表示)
>
>とあった時、Aフォームの単価の項目には入荷チェックが「1」の時単価1を自動表示し、「2」の時単価2を自動表示して、尚且つAのテーブルに保存(反映)できるようにしたいのですが、そのようなことは可能でしょうか?

商品テーブル(A)には単価を入れるフィールドもあるわけですね?
そして、自動表示とテーブルに保存ということでAフォームを開いた
時には作業が完了しているということでよろしいのでしょうか?

もし、お初様の想定されているものが上記のものでしたら可能です。
「自動表示とテーブル保存」のソースコードをForm_Open
イベントプロシージャに記述すれば完了です。

サンプルで想定されていると思われるAccessファイルを作成してみました。
Aフォーム上に配したリストボックスに単価テーブル(B)を表示させています。
商品テーブル(A)には単価を入れるフィールドの他、「単価入力済み」の
マークを入れるフィールドも設けました。
ご希望でしたら、メール添付でファイルをお送りします。

【3343】Re:フォーム上で別のテーブルのデータを表...
回答  クロ  - 04/8/27(金) 10:24 -

引用なし
パスワード
   商品テーブルに単価フィールドを追加して、フォームAの単価テキストボックスを
連結(コントロールソースに「単価」)にしてください。

その1
商品名(テキストボックス)の更新後処理のイベントで
DLookupで単価を引いてくる方法
If Me.入荷チェック = 1 Then
 Me.単価 = Dlookup("[単価1]","単価テーブル","[商品名] ='" & Me.商品名 & "'"
Else
 Me.単価 = Dlookup("[単価2]","単価テーブル","[商品名] ='" & Me.商品名 & "'"
End If

その2
商品名をコンボボックスに変更して
集合値タイプ:テーブル/クエリ
値集合ソース:
SELECT [単価テーブル].[商品名], [単価テーブル].[単価1], [単価テーブル].[単価2] FROM [単価テーブル]
列数:3
列幅:2.54cm;0cm;0cm
連結列:1
リスト行数:8  ※あるいは適宜に
リスト幅:2.54cm ※あるいは適宜に

商品名コンボの更新後処理のイベントに
If Me.入荷チェック = 1 Then
 Me.単価 = Me.商品名..Column(1)
Else
 Me.単価 = Me.商品名..Column(2)
End If

ではどうですか?

【3345】Re:フォーム上で別のテーブルのデータを表...
質問  お初  - 04/8/27(金) 14:09 -

引用なし
パスワード
   ▼クロ さん:
>商品テーブルに単価フィールドを追加して、フォームAの単価テキストボックスを
>連結(コントロールソースに「単価」)にしてください。
>
>その1
>商品名(テキストボックス)の更新後処理のイベントで
>DLookupで単価を引いてくる方法
>If Me.入荷チェック = 1 Then
> Me.単価 = Dlookup("[単価1]","単価テーブル","[商品名] ='" & Me.商品名 & "'"
>Else
> Me.単価 = Dlookup("[単価2]","単価テーブル","[商品名] ='" & Me.商品名 & "'"
>End If
>
>その2
>商品名をコンボボックスに変更して
>集合値タイプ:テーブル/クエリ
>値集合ソース:
>SELECT [単価テーブル].[商品名], [単価テーブル].[単価1], [単価テーブル].[単価2] FROM [単価テーブル]
>列数:3
>列幅:2.54cm;0cm;0cm
>連結列:1
>リスト行数:8  ※あるいは適宜に
>リスト幅:2.54cm ※あるいは適宜に
>
>商品名コンボの更新後処理のイベントに
>If Me.入荷チェック = 1 Then
> Me.単価 = Me.商品名..Column(1)
>Else
> Me.単価 = Me.商品名..Column(2)
>End If
>
>ではどうですか?

クロさんへ
ご回答ありがとうございます。
その1のイベントで
閉じカッコ)が必要だと思いますが、おっしゃるとおり入力したのですが、
なにも表示されませんでした。
その2で試した所、こちらもイベントで
角かっこが必要ですとエラーが表示されます。

私としてはできれば、その1タイプで行いたいと思っております。
よろしくお願い致します。

【3346】Re:フォーム上で別のテーブルのデータを表...
回答  クロ  - 04/8/27(金) 14:27 -

引用なし
パスワード
   >なにも表示されませんでした。
>>商品名(テキストボックス)の更新後処理のイベントで
としてあるので「商品名」が更新された後ということです。

※これから入力するものとして考えてました。既に入力されているものは
 更新クエリでやっちゃえばどうでしょうか?

UPDATE 商品テーブル INNER JOIN 単価テーブル ON 商品テーブル.商品名 = 単価テーブル.商品名 SET 商品テーブル.単価 = IIf([入荷チェック]="1",[単価1],[単価2]);

を実行すればいいかと

>閉じカッコ)が必要だと思いますが
If Me.入荷チェック = 1 Then
 Me.単価 = Dlookup("[単価1]","単価テーブル","[商品名] ='" & Me.商品名 & "'")
Else
 Me.単価 = Dlookup("[単価2]","単価テーブル","[商品名] ='" & Me.商品名 & "'")
End If
でしたね。スミマセン...m(. .)m


>角かっこが必要ですとエラーが表示されます。

If Me.入荷チェック = 1 Then
 Me.単価 = Me.商品名.Column(1)
Else
 Me.単価 = Me.商品名.Column(2)
End If

「.」が余計でした...重ねてスミマセンm(_ _)m

【3347】Re:追伸
回答  クロ  - 04/8/27(金) 14:28 -

引用なし
パスワード
   If Me.入荷チェック = 1 Then
のところはテキスト型でしたよね
If Me.入荷チェック = "1" Then
と読み替えてください。

【3352】Re:フォーム上で別のテーブルのデータを表...
質問  お初  - 04/8/28(土) 15:16 -

引用なし
パスワード
   ▼クロ さん:
クロさんへ
できました(~o~)!ありがとうございます!!
助かりました。

>※これから入力するものとして考えてました。既に入力されているものは
> 更新クエリでやっちゃえばどうでしょうか?
>
おっしゃるとおり、これから入力するものをご質問しておりました。
私の質問が悪かったようです。すみません。

あつかましいようですが、今までの質問に関連した内容を追加で
ご質問させていただきます。

今までのは商品名を入力・変更しない限りは単価も変更にならない状態ですが、
商品名はそのまま(一切手をつけず)で入荷済みチェック(1,2)のみを変更すると単価が変わるとしたいのですが、可能でしょうか?

すみませんが、ご教授よろしくお願い致します。

【3363】Re:フォーム上で別のテーブルのデータを表...
回答  クロ  - 04/8/29(日) 5:09 -

引用なし
パスワード
   >今までのは商品名を入力・変更しない限りは単価も変更にならない状態ですが、
>商品名はそのまま(一切手をつけず)で入荷済みチェック(1,2)のみを変更すると単価が変わるとしたいのですが、可能でしょうか?

入力済みチェックの更新後処理イベントに同様のIf文の処理を書かれればいいのでは?
このときタブコントロール(入力順)が「商品名」→「入荷チェック」でなければなりません。
「商品名」の空欄チェック/レコードの有無チェックが必要なら...

If Len(Nz(Me.商品名,"")) = 0 Then
 MsgBox "商品名が入力されていません"
 Me.商品名.SetFocus
ElseIf DCount("*","単価テーブル","[商品名]='" & Me.商品名 &"'") = 0 Then
 MsgBox "入力された商品名はありません"
 Me.商品名.SetFocus
Else
 If Me.入荷チェック = 1 Then
  Me.単価 = Dlookup("[単価1]","単価テーブル","[商品名] ='" & Me.商品名 & "'")
 Else
  Me.単価 = Dlookup("[単価2]","単価テーブル","[商品名] ='" & Me.商品名 & "'")
 End If
End If

【3364】Re:フォーム上で別のテーブルのデータを表...
お礼  お初  - 04/8/29(日) 11:11 -

引用なし
パスワード
   ▼クロ さん:
クロさんへ
ご丁寧にありがとうございます。
大変、参考になり勉強になりました。
これからも日々勉強していきます。

2226 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078325
(SS)C-BOARD v3.8 is Free