2010/10/08

access2010 access2007 分割フォームのモジュール変数

質問に対しての回答というか対策方法。

データシート側で、モジュール変数を参照できない件について
基本的な対策としては、TempVarsを使用と考えられます。
Option Compare Database
Option Explicit

Private Const ConstVar = "Constvar"
Public PublicVar
Private PrivateVar

Private Sub ShowVars()
    Debug.Print "PublicConstVar:" & PublicConstVar
    Debug.Print "ConstVar:" & ConstVar
    Debug.Print "PublicVar:" & PublicVar
    Debug.Print "PrivateVar:" & PrivateVar
    Debug.Print "TempVar:" & TempVars("tVar")
End Sub

Private Sub Form_Close()
    TempVars.RemoveAll
End Sub

Private Sub Form_Open(Cancel As Integer)
    PublicVar = Now
    PrivateVar = Now
    TempVars("tVar") = Now
End Sub

Private Sub Form_Current()
    Debug.Print "*** Form_Current ***"
    ShowVars
End Sub

Private Sub Field01_BeforeUpdate(Cancel As Integer)
    Debug.Print "*** Field01_BeforeUpdate ***"
    ShowVars
End Sub

Private Sub Field02_AfterUpdate()
    Debug.Print "*** Field02_AfterUpdate ***"
    ShowVars
End Sub
Option Compare Database
Option Explicit

Public Const PublicConstVar = "PublicConstVar"
access2010/access2007の間でも取得可否が異なるので確認しながらということになります。
必ず取得できるのは、TempVars/PublicなConst/PrivateなConstの模様。
上記コードで確認できる差はFormCurrent時イベント。2010ならばすべて取得可能。

仕様というか不具合というか、たぶん修正されないと思われるレベルの事象かな。

0 件のコメント: