2010/09/17

access2010 DoCmd.SetParameter

DoCmd.SetParameter メソッド
VBAで使うときちょっと癖があるので。

'Module:DoCmdR
Option Compare Database
Option Explicit

Public Sub SetParameter(ParameterName As String, _
                        ParameterValue As Variant)
    Dim tmpParam As Variant

    Select Case VarType(ParameterValue)
        Case 7 'vbDate
            tmpParam = Format(ParameterValue, _
                              "\#mm/dd/yyyy hh:nn:ss\#")
        Case 8 'vbString
            tmpParam = Chr(34) & _
                       Replace(ParameterValue, _
                               Chr(34), String(2, 34), , , _
                               vbBinaryCompare) & _
                       Chr(34)
        Case Else
            tmpParam = ParameterValue
    End Select
    DoCmd.SetParameter ParameterName, tmpParam
End Sub
'使用例
Option Compare Database
Option Explicit

Private Sub cmd01_Click()
    DoCmdR.SetParameter "parameter_name", Me.txt01
    DoCmd.OpenQuery "Query_Name"
End Sub
PARAMETERS param01 Value;
SELECT T_0.ID, T_0.F_Num, T_0.F_txt, T_0.F_date, T_0.F_boolean
FROM T_0
WHERE T_0.F_date=param01;
BrowseTo/OpenForm/OpenQuery/OpenReport/RunDataMacroが実行されるとパラメータコレクションはすべてクリアになるから、使用する直前にメソッドを使用する。

0 件のコメント: