質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

10714閲覧

【access】#nameエラーについて教えてください。

jennieruby

総合スコア11

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/08/05 02:51

フォームに設定したテキストボックスが#nameエラーになります。
必ずエラーが起こるかというそうではなく、どうやらあるチェックボックスを触るとエラーになるようです。

そのチェックボックスというのは、メインフォームには社員が表示されているのですが退職社員含む全社員表示するのか
今いる社員だけ表示するのかどうかを判定するチェックボックスです。(チェックが外れていると今の社員だけ)

そのチェックボックスにチェックを入れたり、外したりするとそれまで表示されていたテキストボックスが#nameエラーに変わってしまいます。

ちなみにチェックボックスの更新後処理は
Private Sub チェック64_AfterUpdate()

If Me!チェック64 = True Then
Me.RecordSource = "社員マスタ"
Else
Me.RecordSource = "社員マスタ クエリ"
End If

End Sub

になります。

表示したいテキストボックスのコントロールソースは社員マスタではなく、違うテーブルから引っ張っています。

情報不足でしたら教えてください。
原因解明のご協力をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mdj

2020/08/05 02:58

#nameになる条件でデバッグしてください。コントロールソースが変わったか、存在しないか、何か起きていますよね
hatena19

2020/08/05 03:03

> 表示したいテキストボックスのコントロールソースは社員マスタではなく、違うテーブルから引っ張っています。 どのように引っ張ってきていますか。そのコントロールソースの設定を提示してください。
jennieruby

2020/08/05 04:01

mdj様 チェックボックスのVBAは作動するのでここは問題ないと思います・・・ テキストボックスはVBAなど何もしていないのですがデバッグはどう行うのでしょうか?
jennieruby

2020/08/05 04:03

hatena19様 既存のフィールドの追加→利用可能なフィールド→入れたいフィールドをダブルクリックでテキストボックスを設定しています・・・
guest

回答1

0

ベストアンサー

表示したいテキストボックスのコントロールソースは社員マスタではなく、違うテーブルから引っ張っています。

既存のフィールドの追加→利用可能なフィールド→入れたいフィールドをダブルクリックでテキストボックスを設定しています・・・

チェック64_AfterUpdate でレコードソースを書き換えているので、
フォームデザイン時のには存在したフィールドが書き換えたレコードソースに存在していないのでしょう。

"社員マスタ" 以外のテーブルのフィールドを参照しているなら、 そのテーブルと"社員マスタ"を含むクエリを作成してそれをレコードソースにするようにしましょう。

投稿2020/08/05 04:39

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jennieruby

2020/08/05 06:46

クエリを作成し、それをレコードソースとしたら表示されました! しかし、ある特定のテキストボックスだけ#Nameエラーが出ます・・・ テキストボックスのフィールドはしっかりクエリに入っているのになんででしょうか(-_-;) そして、クエリをレコードソースにするとメニューからメインフォームを開いたとき表示されていたはずのテキストボックスが#nameとなり、チェックボックスにチェックを入れたりすると通常に戻ります。。 色々とバグのようなものが出ているので困っています(´;ω;`)
hatena19

2020/08/05 09:53

#name エラーは設定してるフィールドなりコントロールが見つからないということなので、どこかでそうなるような処理をしているはずです。 ちゃんと参照しているものが存在しているのに#name エラーとなるというのは聞いたことがないです。
jennieruby

2020/08/05 23:34

回答ありがとうございます。 色々と触ってみると少しは改善したのですが、やはりあるテキストボックスだけは#nameエラーのままです・・・ チェックボックスを外すと表示されているのに、チェックを入れると#nameエラーになります・・・ 原因はきっとチェックボックスにあるとおもうのですが。。。 コードをPrivate Sub チェック64_AfterUpdate() If Me!チェック64 = True Then Me.RecordSource = "社員マスタ" Else Me.RecordSource = "クエリ1" ←作り直したクエリ End If に変えてみてもうまくいきません・・・ やはり改善は困難でしょうか(´;ω;`) End Sub
hatena19

2020/08/06 00:39

#nameエラー になるのは、 Me.RecordSource = "社員マスタ" のときですか、それとも、 Me.RecordSource = "クエリ1" のときですか。
jennieruby

2020/08/06 01:48

Me.RecordSource = "社員マスタ" のときエラーになってしまいます・・・
hatena19

2020/08/06 01:52

「社員マスター」に#nameエラーが出るコントロールのコントロールソースに設定してあるフィールドはありますか。
jennieruby

2020/08/06 02:10

社員マスタにはありませんが、テーブルAにエラーが出るコントロールのフィールドがあります。 社員マスタとテーブルAはリレーションシップで結んでおり、2つのクエリをフォームのレコードソースとしています。 上のコードでMe.RecordSource = "クエリ1"に変更したと書きましたがこれに変更してしまうと、チェックボックスでの抽出がうまくいきませんでした・・・。
hatena19

2020/08/06 03:01

レコードソースを「社員マスタ」に変更したら、そこにないフィールドは参照できませんので、当然、#nameエラーになります。そこことを何度も言葉を変えて説明してきたつもりですが、伝わってなかったのでしょうか。 結局、なんのためにレコードソースを書き換えているのでしょうか。
jennieruby

2020/08/06 04:19

お手数をおかけしました。 最後までお付き合いいただきありがとうございました。
hatena19

2020/08/06 04:24 編集

もし、レコードソースを書き換える目的が抽出(フィールターをかける)ということなら、レコードソースを書き換えるのではなく、Filterプロパティを設定するという方針に変更しましょう。そうすればこのようなトラブルは発生しません。 Filterの使い方|FilterOn|複数条件の設定方法|日付抽出|解除方法 - Access VBA入門 https://www.feedsoft.net/access/guide-vba/guide18.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問