こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access フォームの入力について

アクセス初心者です。

フォームA(メインとなる画面)でコマンドボタンをクリックすると
フォームBが開くように設定しました。

フォームAでレコード1を入力時にコマンドボタンをクリックすると
フォームBのレコード1に
フォームAのレコード5を入力時にコマンドボタンをクリックすると
フォームBのレコード5に移動してデータを入力できるようにすることは可能でしょうか?可能であればどのようにしたらよいでしょうか?

具体的には
テーブル
社員NO、氏名・・・、希望地域(yes/no型)があります。

フォームA
・社員NO
・氏名など

フォームB
・希望地域(チェックボックスでチェックする。複数選択可)

フォームAを入力時にフォームBを開いて希望地域にチェックできる
というようにしたいのですが、
フォームAからフォームBに移動するといつもレコード1が表示されてしまいます。

自分なりに試行錯誤しているのですがどうしてもできません。
よろしくお願いします。

投稿日時 - 2007-12-04 19:58:32

QNo.3571025

すぐに回答ほしいです

質問者が選んだベストアンサー

<社員名簿>

ID__社員No__氏名_________希望地域_ID
01__________1__鈴木 一郎__[四国]
02__________2__中村 主水__[九州]

[]=コンボボックス表示

<地域一覧>

ID__地域名
01__四国
02__九州
03__中国

>フォームAを入力時にフォームBを開いて希望地域にチェック
これ、初心者中級コースの課題でしょうね。

<希望地域参照 クエリ>

SELECT 社員名簿.ID, 社員名簿.氏名, 社員名簿.希望地域_ID
FROM 社員名簿 LEFT JOIN 地域一覧 ON 社員名簿.希望地域_ID = 地域一覧.ID;

このクエリを元に単票フォームを作成。

・レコードセレクタ=いいえ
・移動ボタン=いいえ

こういう候補選択フォームでは、そもそも移動する必要がないので移動ボタンは非表示にします。

社員名簿.ID
社員名簿.氏名
社員名簿.希望地域_ID

だけのフォームじゃチェックボックス選択機能は提供できません。
そこで、フレームを配置します。
問題は、ここで候補地を埋め込まないでテーブル<地域一覧>を参照するようにすること。
これは、以下のVBAの役目です。

<ちょっとした仕掛け>

Private Sub Form_Load()
  Dim I     As Integer
  Dim N     As Integer
  Dim 希望地域() As String
  
  希望地域() = Split(DBSelect("SELECT 地域名 FROM 地域一覧"), ";")
  N = UBound(希望地域()) - 1
  For I = 0 To N
    Me.Controls("ラベル_" & I).Caption = 希望地域(I)
    Me.Controls("チェックボックス_" & I).Visible = True
  Next I
End Sub

フレームのコントロールソース=[希望地域_ID]にすれば、チェックボックスの選択が<社員名簿>に自動反映。

ここまで仕掛ければ、フォーム社員名簿から次のように候補選択フォームを開けばいいです。

Private Sub コマンド_候補選択フォームを開く_Click()
On Error Resume Next
  DoCmd.OpenForm "地域一覧", , , "[希望地域_ID]=" & Me![希望地域_ID]
End Sub

※おおよそ、満足いく回答であれば DBSelect関数を補足します。

投稿日時 - 2007-12-05 10:14:30

お礼

丁寧な回答ありがとうございました。
教えていただいたとおりに<社員名簿><地域一覧>・・・とテーブルを作成して試してみました。
>フレームの配置する。のところがわからず、
非連結オブジェクトフレームと連結オブジェクトフレームを配置して
ビルダから<ちょっとした仕掛け>を入力してみたのですが
エラー(イベントプロパティに指定した式読み込み時でエラーが発生しました。)
が出てしまいまったく機能しませんでした。
あれこれ試してみましたが、今の段階ではおっしゃっていることが
理解できていないように思います。
もう一度、勉強し直してから挑戦してみます。

ありがとうございました。

投稿日時 - 2007-12-06 10:15:44

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

概略項目だけの一覧フォームで対象を選択して
詳細入力用単票フォームを開きたいというようなときには

詳細入力用のフォームの主キーの抽出条件に
一覧フォームの主キーフィールドの値をわたすようにします

入力用フォームのソースをクエリデザインビューで開き
主キーフィールドの抽出条件欄に

=Forms!一覧フォーム!主キーフィールド名

投稿日時 - 2007-12-05 13:51:18

お礼

回答ありがとうございました。
何度も試してみるのですが
パラメーターが開いてしまいます・・・。

投稿日時 - 2007-12-06 10:22:03

ANo.1

BookMarkを使う手がありますが、
同じテーブルを別フォームで同時に開くのは、お勧めしません。
フォームが大きくなってしまうので、別フォームにしているなら、
フォームのページを切り替えるたり、タブを使うという手もあります。

投稿日時 - 2007-12-05 03:42:33

お礼

ありがとうございました。
今回、おこないたい操作とは違うようですが
今後の参考にさせていただきます。

投稿日時 - 2007-12-06 09:51:52

あなたにオススメの質問