Access VBA質問箱 IV

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

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


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

【13168】access2000で作ったVBAを2010で動かして出るエラー @@@umekonbu 17/6/15(木) 17:18 質問[未読]
【13169】Re:access2000で作ったVBAを2010で動かして... 亀マスター 17/6/15(木) 19:26 発言[未読]
【13170】Re:access2000で作ったVBAを2010で動かして... @@@umekonbu 17/6/19(月) 11:44 質問[未読]
【13171】Re:access2000で作ったVBAを2010で動かして... @@@umekonbu 17/6/19(月) 11:58 質問[未読]
【13174】Re:access2000で作ったVBAを2010で動かして... 亀マスター 17/6/21(水) 23:18 発言[未読]
【13180】Re:access2000で作ったVBAを2010で動かして... @@@umekonbu 17/7/8(土) 11:57 質問[未読]
【13181】Re:access2000で作ったVBAを2010で動かして... hatena 17/7/8(土) 12:40 回答[未読]

【13168】access2000で作ったVBAを2010で動かして...
質問  @@@umekonbu  - 17/6/15(木) 17:18 -

引用なし
パスワード
   access2000で問題なく動いていたVBAを2010で動かすとエラーが出ます。
一覧表示の画面から選択して個別画面に遷移し、個別を閉じて一覧に戻るときに発生します。
最初から一つずつデバックするか、個別画面のform close()でブレイクポイント設定でいったん止めて流すとエラーになりません。一気に流すとエラーになります。

<個別の画面>
Private Sub Form_Close()

  Select Case inpmode

    Case 1, 2 '編集/検索
      Form_frm_結果一覧.Requery

ここから一覧へ飛ぶ

<一覧の画面>

Private Sub Form_Current()
 Me.txt_id = Me.txt_依頼ID  ←ここで止まるデバックで黄色く反転
 Me.txt_件数 = MyRecordCount
End Sub

上記の場所で
実行時エラー 2147352567(80020009)このフィールドに入力した値が正しくありません。
しばらくそのままにしておくと、
オブジェクトが正しくないか、現在設定されていません。
というエラーが出ます。

Me.txt_idは画面にあるテキストボックスで文字書式はテキスト形式です。
なお入れようとしている文字列に問題はありません。先述のとおり一端とめて一つずつ送っていくとエラーにならずに終了するのです。

どこを書き換えればよいものでしょうか。

【13169】Re:access2000で作ったVBAを2010で動かし...
発言  亀マスター  - 17/6/15(木) 19:26 -

引用なし
パスワード
   明確な答えにはならないですが、一覧フォームの再クエリが終わる前に
Me.txt_依頼ID を取得しようとするせいで、おかしなことになっている
のかもしれません。
1行ずつ実行していった場合は、Form_frm_結果一覧.Requery の後で
少し時間が空くので大丈夫だとか。

エラーメッセージでは、フィールド(に関連づけられた Me.txt_id)に
不正な値が入力されたということかなと思いますので、確認のために
Form_frm_結果一覧.Requery の直後にDebug.Print Me.txt_依頼ID とか
入れて、 Me.txt_依頼ID の状態がどうなっているか調べてみてはどうでしょうか。

【13170】Re:access2000で作ったVBAを2010で動かし...
質問  @@@umekonbu  - 17/6/19(月) 11:44 -

引用なし
パスワード
   ▼亀マスター さん:

回答ありがとうございます。

>Form_frm_結果一覧.Requery の直後にDebug.Print Me.txt_依頼ID とか
>入れて、 Me.txt_依頼ID の状態がどうなっているか調べてみてはどうでしょうか。


やってみましたが、ほしい値がちゃんとはいっています。

【13171】Re:access2000で作ったVBAを2010で動かし...
質問  @@@umekonbu  - 17/6/19(月) 11:58 -

引用なし
パスワード
   追加質問ですが


>Private Sub Form_Current()
> Me.txt_id = Me.txt_依頼ID  ←ここで止まるデバックで黄色く反転
> Me.txt_件数 = MyRecordCount
>End Sub

Me.txt_依頼IDにはほしい値がちゃんと入っているので、なぜエラーになるのかわからないのですが、とりあえずこれが原因なら回避すれば進むのかと思い、
強制的に 値を埋め込み
Me.txt_id = "2017060545001"
進めると、次の
> Me.txt_件数 = MyRecordCount
から下記に飛びますが、

Private Function MyRecordCount() As Long
  MyRecordCount = Me.RecordsetClone.RecordCount ←ここでエラー
End Function

※実行時エラー'7951':
 RecordSetCloneプロパティに対する不適切な参照を含む式を入力しました。

といわれます。

access2000のときレコードカウントをテキストボックスのプロパティで設定していましたが、2003?2007?だかでそれが使えなくなったということで上記の方法に書き換えたところです。

ですが、ここも一つずつデバックしていくとエラーになりません。流すとエラーになるのです。

【13174】Re:access2000で作ったVBAを2010で動かし...
発言  亀マスター  - 17/6/21(水) 23:18 -

引用なし
パスワード
   1行ずつ実行すると問題ないということなので関係ないかもしれませんが、
Me.text_依頼ID で入力されている値は、Me.txt_idに連結されたフィールドの
データ型とあってますよね?

あと、根本的解決にならないかもしれませんが、ブレークポイントを設定すれば
動くということなので、ブレークポイントを設定していた場所でSleep関数か何かを
入れて、意図的に時間を空けてみたらどうなるでしょうか。

【13180】Re:access2000で作ったVBAを2010で動かし...
質問  @@@umekonbu  - 17/7/8(土) 11:57 -

引用なし
パスワード
   ▼亀マスター さん:
>1行ずつ実行すると問題ないということなので関係ないかもしれませんが、
>Me.text_依頼ID で入力されている値は、Me.txt_idに連結されたフィールドの
>データ型とあってますよね?

はい。問題ありません。

回答いただきありがとうございます。
ですが解決できませんでした。

【13181】Re:access2000で作ったVBAを2010で動かし...
回答  hatena  - 17/7/8(土) 12:40 -

引用なし
パスワード
   >       Form_frm_結果一覧.Requery

これは、下記に書き換えてください。

Forms.frm_結果一覧.Requery

今回のエラーとは関係ないかもしれませんが、Form_フォーム名 という書き方はトラブルの元です。

>  Me.txt_件数 = MyRecordCount

これは、レコード件数を表示たいのですよね。
ならば、このコードは削除して、
txt_件数のコントロールソースに下記の式を設定してください。

=Count(*)

これだけでレコード件数は表示されます。

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