Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
新規入力フォームであらかじめ社員番号を表示していたい
投稿日時: 21/04/29 11:00:36
投稿者: DIVAA

いつもお世話になっております。
表題の件ですが、親フォームの単票フォーム内に新規入力ボタンをつくりクリックすると子フォームが立ち上がりそこでデータを入力したいです。
 
単票フォームで開いている社員番号のデータを新規で追加したいだけなので、新規入力画面では該当する社員番号を開いた時点で呼び出しておきたいです。
 
説明不足で申し訳ありませんが宜しくお願い致します。

回答
投稿日時: 21/04/30 13:35:12
投稿者: hatena
投稿者のウェブサイトに移動

子フォームの社員番号のテキストボックスの規定値プロパティを下記のように設定しておくといいでしょう。
 
=Forms!単票フォーム名!社員番号
 
子フォームが他のフォームから呼び出されることもあるなら、VBAで規定値を設定するようにします。

投稿日時: 21/05/04 14:53:48
投稿者: DIVAA

hatena様
 
回答ありがとうございます。
また返信が遅くなり申し訳ございません。
 
hatena様の方法でちゃんと表示されたのですが、登録しようとすると「フィールドは更新できません」というエラーが出てエンターを押すと表示されていた社員番号が消えてしまいます。
 
メインフォームのクエリはAテーブル(1)Bテーブル(多)となっており、一対多の関係にあります。
Aテーブルからは社員番号に対する氏名とその他情報をクエリに入れており、Bテーブルからは社員番号の他メインフォームでの主情報をクエリに入れております。これをCクエリとします。
 
メインフォームにある社員番号も、子フォームの社員番号もCクエリからテキストボックスで配置しているのですが、子フォームのエラーが出て社員番号が空白のまま保存ボタンを押してみると「実行時エラー:3314 Aテーブル.社員番号フィールドに値を入力してください」と表示されてしまいます。
 
Aテーブルの社員番号は使ってないはずなのにどうして出るのでしょうか・・・
Aテーブルは重複できないようにしているのでこのエラーが出るのはわかるのですが・・・
 
最初の質問から離れているかもしれませんが教えて頂けたら嬉しいです。

回答
投稿日時: 21/05/04 17:09:44
投稿者: hatena
投稿者のウェブサイトに移動

説明を読む限りは問題なさそうですが、
とりあえず、CクエリのSQL文を提示してもらえますか。

回答
投稿日時: 21/05/05 07:44:17
投稿者: hatena
投稿者のウェブサイトに移動

親要素の方で新規レコード入力後レコード保存していないのが原因かも。
 
子フォームを呼び出す前にレコード保存するようにしたらどうでしょう。
 
 
DoCmd.RunCommand acCmdSaveRecord
 
または、
 
Me.Refresh
 
でレコード保存できます。

投稿日時: 21/05/05 11:24:53
投稿者: DIVAA

hatena様
 
回答ありがとうございます。
 
最初は既定値プロパティで設定していましたが、呼び出す前にレコードを保存するとのことでしたのでじぶんなりにVBAを考えましたがうまく作動しませんでした。
アドバイスを頂けると嬉しいです。
 
Private Sub 新規cmd_Click()
 
    DoCmd.RunCommand acCmdSaveRecord
 
    DoCmd.OpenForm "子フォーム"
    DoCmd.GoToRecord acDataForm, "子フォーム", acNewRec
  
 Forms![メインフォーム]![メインフォーム内のサブフォーム].[form]!社員番号 = Me!社員番号
End Sub
 
子フォームは開くのですが、社員番号が入力されないままでした・・・
 
初心者で申し訳ありませんが宜しくお願い致します。

回答
投稿日時: 21/05/05 14:33:00
投稿者: hatena
投稿者のウェブサイトに移動

親フォームから子フォームを開いて、その子フォームの社員番号を親フォームの社員番号にしたいという質問ですよね。
 

Forms![メインフォーム]![メインフォーム内のサブフォーム].[form]!社員番号 = Me!社員番号

 
突然サブフォームが出てきたのですが、このサブフォームは何なのでしょうか。
 
このメインフォームというのは、最初の質問の親フォームのことでしょうか。それとも子フォームでしょうか。それともまた別にフォームがあるのでしょうか。
 
現状の状況をもう少し詳細に、可能なら実際のフォーム名を提示して説明しなおしてもらえませんか。

投稿日時: 21/05/05 15:35:28
投稿者: DIVAA

hatena様
 
混乱させるような書き方になってしまい、誠に申し訳ございません。
 
分かりやすいように親フォーム、子フォームとしたのですがかえって分かりづらくなってしまいました、、
 
親フォーム・・・管理フォーム(検索できるテキストボックスなどを配置したりしています)
子フォーム・・・入力フォーム
管理サブフォーム・・・管理フォーム内にあり、Cクエリの情報を表示させています。
 
 

引用:
突然サブフォームが出てきたのですが、このサブフォームは何なのでしょうか。

 
サブフォーム内に社員番号があるのでVBAコードにサブフォームを出しました。
親フォームとサブフォームを一緒のように考えてしまったためこのような表現になり申し訳ございませんでした。

回答
投稿日時: 21/05/06 09:48:43
投稿者: hatena
投稿者のウェブサイトに移動

 

引用:
子フォームは開くのですが、社員番号が入力されないままでした・・・

 
一度は私の回答(規定値プロパティの設定)で表示されたのですよね。
それは変更してませんか。
 
 
引用:
親フォーム・・・管理フォーム(検索できるテキストボックスなどを配置したりしています)
子フォーム・・・入力フォーム
管理サブフォーム・・・管理フォーム内にあり、Cクエリの情報を表示させています。

それぞれのフォームのレコードソースはすべてCクエリですか。
 
だとすると、それぞれのフォームの役割はどのようなものですか。

トピックに返信