0

ボタンを押したときにテキストボックスに列の合計を表示したい。しかし、それは私にコンパイルエラーを与えています:「引数の数が間違っているか、プロパティの割り当てが無効です」

以下のコードは vba で実装されています。

私が使用したコードは次のとおりです。

Text19 = Nz(DSum("Total_Units", "6_Provincial_SUB", , "[BudgetYear] =" & [Combo5] & " And [Program_Name] ='" & Replace([Combo7], "'", "''") & "'"), 0)
4

2 に答える 2

2

DSum3つのパラメータがあります。あなたは4つ持っています。余分なカンマを削除します

Text19 = Nz(
    DSum(
        "Total_Units",
        "6_Provincial_SUB", <==== Here I dropped a comma (,)
        "[BudgetYear] =" & [Combo5] & " And [Program_Name] ='" &
            Replace([Combo7], "'", "''") & "'"
    ),
    0
)

このような場合は、上記のように式をインデントして、一致する中括弧などを見つけようとします。行継続文字「_」がないと、これは原因ではありませんが、表現。


私のライブラリにはこれらの関数があります。SQL文字列の作成に役立ちます

Public Function SqlStr(ByVal s As String) As String
'Input: s=""      Returns: NULL
'Input: s="abc"   Returns: 'abc'
'Input: s="x'y"   Returns: 'x''y'

    If s = "" Then
        SqlStr = "NULL"
    Else
        SqlStr = "'" & Replace(s, "'", "''") & "'"
    End If
End Function

Function Build(ByVal s As String, ParamArray args()) As String
'Build("FirstName = {0}, LastName = {1}","John","Doe") --> 
'"FirstName = John, LastName = Doe".
'"\n" is expanded with vbCrLf.

    Dim i As Long

    s = Replace(s, "\n", vbCrLf)
    For i = 0 To UBound(args)
        s = Replace(s, "{" & i & "}", Nz(args(i)))
    Next i
    Build = s
End Function

それらを使用することにより、SQLは次のように構築されます

sql = Build("[BudgetYear] = {0} AND [Program_Name] = {1}", _
            Combo5, SqlStr(Combo7))
于 2012-06-22T13:50:20.863 に答える
0

ドメインパラメータの後にコンマが多すぎます:

  "6_Provincial_SUB", ,

これにより、スペースが基準パラメーターになり、実際の基準が不明な4番目のパラメーターになります。

于 2012-06-22T13:50:05.787 に答える