Access VBA質問箱 IV

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

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


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

【11710】実行時エラー'2467'指定した式で、閉じているかまたは存在しない・・・・・ pon 10/7/8(木) 14:43 質問[未読]
【11711】Re:実行時エラー'2467'指定した式で、閉じ... pon 10/7/8(木) 17:51 発言[未読]
【11712】Re:実行時エラー'2467'指定した式で、閉じ... 247b 10/7/8(木) 19:01 発言[未読]
【11718】Re:実行時エラー'2467'指定した式で、閉じ... pon 10/7/9(金) 10:49 質問[未読]

【11710】実行時エラー'2467'指定した式で、閉じて...
質問  pon  - 10/7/8(木) 14:43 -

引用なし
パスワード
   こんにちは 

わかりにくいと思いますが、よろしくお願いいたします


配布前テストで数人に試してもらったところ
ログイン者によって
実行時エラー'2467'指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。
が出ます

構成は
ファイルサーバーにDT.mdb:セキュリティ設定でアクセス権設定
ローカルPCのFRM.mdb を配布
  データシート形式のフォームに、DT.mdbのレコードを表示させる 
しています

同じ、FRM.mdb を 渡しているのに、Nさんだけエラーが出ます

色々試した結果、セキュリティのアクセス権がないと同じ症状が出ることは確認出来ましたが
アクセス権はちゃんと設定してあります


やむを得ず、NさんのログインIDとパスワードを借りて
動作確認してみましたが同じ症状となりました


不具合の再現1

FRM.mdbをWクリックで起動すると

1.エラー
実行時エラー '2467':
指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。
で終了

2.アクションの実行エラー
マクロ名:Autoexec
条件 true
アクション名:プロシージャの実行
引数:OPEN_MF01_JOB選択F()

となってしまうので


不具合の再現2

OPEN_MF01_JOB選択F()
にブレークポイントを設けて
1)マクロ名:Autoexec を クリック

2)下記が走って
Public Function OPEN_MF01_JOB選択F() As Integer




      DoCmd.OpenForm "MF01_JOB選択F"

End Function

3)下記が走る
フォームモジュール MF01_JOB選択F
Private Sub Form_Open(Cancel As Integer)




  Me!T02_PJ_DT.Form.RecordSource = set_sql  '20100708 ←ここで止まる

End Sub

'20100708 ←ここで止まる

実行時エラー'2467'指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。
が出ます
となってしまいます


set_sqlが悪いのかと思い下記試しました
クエリにSQLを貼り付け、データシートビューにするとちゃんと表示されます
つまりアクセス権は問題ないと

そこで

Me!T02_PJ_DT.Form.RecordSource
をイミディエイトウインドウで確認してみました

?[Forms]![MF01_JOB選択F]![T02_PJ_DT].NAME
T02_PJ_DT

?[Forms]![MF01_JOB選択F]![T02_PJ_DT].form.name
実行時エラー '2467':
指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。

となってしまいます


不具合の発生しないログインID パスワードでは

?[Forms]![MF01_JOB選択F]![T02_PJ_DT].name
T02_PJ_DT

?[Forms]![MF01_JOB選択F]![T02_PJ_DT].form.name
sF_T02_PJ_DT

となります


つまり
?[Forms]![MF01_JOB選択F]![T02_PJ_DT].form.name
実行時エラー '2467':
指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。

Me!T02_PJ_DT.Form.RecordSource = set_sql
実行時エラー '2467':
指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。

で同じ原因かと思いますが
ここから先どうすればいいのかわかりません

アドバイスよろしくお願いいたします

【11711】Re:実行時エラー'2467'指定した式で、閉...
発言  pon  - 10/7/8(木) 17:51 -

引用なし
パスワード
   追記です


>配布前テストで数人に試してもらったところ

都港区会社A-同じ建物 同一部署 3人
都多摩会社B 1人
での作業環境でした

昨日 多摩の人が上記不具合発生,今朝も同じ不具合確認
本日 こちらで多摩の人のIDで試してみて不具合が再現しました
   コード上不具合は見つからず先ほどの書き込みになったのですが
   いつのまにか、エラーが無くなってしまいました
   そこで、多摩の人に昨日と同じファイルで動作確認してもらうと
   エラーは出ませんでした

良く分かりませんが、アクティブデイレクトリの不具合?みたいな
ような気もしますが良く分かりません

サポート部署に聞きましたが要領を得る答えは聞けませんでした

アドバイス有りましたらよろしくお願いいたします

【11712】Re:実行時エラー'2467'指定した式で、閉...
発言  247b  - 10/7/8(木) 19:01 -

引用なし
パスワード
   こんばんわ。

経験談ですが。
フォームのオープン時イベント内で、そのフォームのコントロール等にアクセスしようとすると、
 閉じているかまたは存在しないオブジェクトを参照しています。
というメッセージが表示されることがあります。
MDBファイルを開き、最初にフォームを開いた時に、フォームオブジェクトが生成され、Formsコレクションに追加されるという動作を裏でしているようなのですが、フォームオブジェクトの生成が、マクロ処理のスピードに追いつけない時にこの問題が発生するらしい、と解釈しています。

このため、対処法としては、Open、Loadイベントは使用せず、OpenFormした後に、フォームに定義したPublicイベントを呼び出すという方法をとっています。この方法だと、オブジェクトの生成後の呼び出しになるため、問題が発生しません。
多分、こんな感じです

Public Function OPEN_MF01_JOB選択F() As Integer
  Dim frm As Form_MF01_JOB選択F
  DoCmd.OpenForm "MF01_JOB選択F"
  Set frm = Forms("MF01_JOB選択F")
  frm.Init
End Function

Public Sub Init()

  Me!T02_PJ_DT.Form.RecordSource = set_sql  '20100708 ←ここで止まる

End Sub

余談ですが上記の問題はクラスモジュールでも発生します。
クラスモジュールのPublicスコープで、例えば以下のような変数定義を行い、
 Dim x As New DAO.Recordset
Initializeプロシージャ(Class_Initialize())でx変数を使用しようとすると、稀にエラーになります。
ご参考。

【11718】Re:実行時エラー'2467'指定した式で、閉...
質問  pon  - 10/7/9(金) 10:49 -

引用なし
パスワード
   247b さん おはようございます

>実行時エラー'2467'指定した式で・・・
で「ググってはみたのですが、あまり情報は見つかりませんでした。

>経験談ですが。
貴重かつ詳細なアドバイスありがとうございます
勉強になります

>多分、こんな感じです
組み込ませて頂きたいと思います
ありがとうございました


>余談ですが上記の問題はクラスモジュールでも発生します。
>クラスモジュールのPublicスコープで、例えば以下のような変数定義を行い、
> Dim x As New DAO.Recordset
>Initializeプロシージャ(Class_Initialize())でx変数を使用しようとすると、稀にエラーになります。
>ご参考。


うう

実はもう1つ不具合が発生しています 

場所的に多摩から
ファイルサーバーにDT.mdbへのレコード更新が何故か出来ません


頂いた ご参考 と関係しているような気もしますが理解が足りていません


別途
LANでのWithEventsは無謀ですか
www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=11717;id=access
をQしました。

こちらにもアドバイス有ればよろしくお願いいたします


追記です

247b さん

【11601】MDBの分離 と レコード操作 pon 
www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=11601;id=access
でも お世話になりました ありがとうございました


本来は あちらの方法で実行したかったのですが

理解と時間が足らず
上記 LANでのWithEventsは無謀ですか
の方法となってしまいました

とても残念な思いですが、時間を作ってチャレンジするつもりです

上記での書き込みテスト結果ですが
連続する3レコードに一斉書き込み(1,2,3 ポッチ)ですが不具合は出ていません
トランザクションでのエラーが有ればこの辺もう少し調べてみたいと思っているのですが
遭遇しないので・・・みたいなです (^-^;)


そんなこんなで、
【11601】MDBの分離 と レコード操作 pon 

247b  - 10/4/23(金) 20:18 -
に、ご返事したいなと思いつつ

継続Qが有りそうなのでと思っているうちに 放置状態みたいな形になっていて
申し訳ありませんでした

この状態がまだ当分続いてしまうような気もしますが
申し訳ないですがよろしくお願いいたします

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