2017-03-10 179 views
0

私は3つの基準に基づいていくつかのフィールドのいくつかを返すsqlクエリを持っています。sqlクエリの結果を変数に格納するvba

  1. LOCフィールド列「Alipore」
  2. 日フォームにテキストボックスから値を取得し、変数SDATEより大きいとに等しいました。
  3. 日付は、フォーム上のテキストボックスから値を取得する変数edateより小さいか等しいです。

「2つのパラメータ2」というエラーが表示されます。

Sub Test() 
    Dim rs As DAO.Recordset 
    Dim sqlMax As String 
    Dim result As Integer 
    Dim startd, endd As String 

    startd = Me.txtsdate.Value 

    endd = Me.txtedate.Value 

    sqlMax = "SELECT Sum(Salesdata.FOOD) AS SumOfFOOD, Sum(Salesdata.LIQUORS) AS SumOfLIQUORS, Sum(Salesdata.SMARTPORTION) AS SumOfSMARTPORTION, Sum(Salesdata.[SP TAKEAWAY]) AS [SumOfSP TAKEAWAY]," _ 
    & "Sum(Salesdata.TAKEAWAY) AS SumOfTAKEAWAY, Sum(Salesdata.TAX_KKCESS02) AS SumOfTAX_KKCESS02, Sum(Salesdata.TAX_SBC020) AS SumOfTAX_SBC020, Sum(Salesdata.TAX_SERVICECHARGE) AS SumOfTAX_SERVICECHARGE," _ 
    & "Sum(Salesdata.TAX_VAT145) AS SumOfTAX_VAT145, Sum(Salesdata.AMEX) AS SumOfAMEX, Sum(Salesdata.CASH) AS SumOfCASH, Sum(Salesdata.MASTERCARD) AS SumOfMASTERCARD, Sum(Salesdata.VISA) AS SumOfVISA, Sum(Salesdata.OTHERS) AS SumOfOTHERS," _ 
    & "Sum(Salesdata.Vcloud) AS SumOfVcloud, Sum(Salesdata.MANAGERAC) AS SumOfMANAGERAC FROM Salesdata" _ 
    & "WHERE (((Salesdata.Loc) = 'Alipore'))" _ 
    & "HAVING (((Salesdata.DATE)>=" & startd & " And (Salesdata.DATE)<=" & endd & "));" 

セットrs = CurrentDb.OpenRecordset(sqlMax、dbOpenDynaset)

Set rs = CurrentDb.OpenRecordset(sqlMax) 

    result = rs.Fields(0) 

    MsgBox result 

    Set rs = Nothing 

    rs.Close 
End Sub 
+0

エラーはどの行で発生しますか? 'startD'を' Variant'にしようとしましたか?また、いくつかのSQLバリエーションでは、日付に '#'を付ける必要があります。例えば。 #1/1/2017#そうかもしれない –

+0

あなたの返事をありがとう。 – Deb

+0

vba err#3141から実行するとエラーが発生しますが、クエリとして正常に実行されます。 – Deb

答えて

0

は神ああ、私はそれを見つけ、それはとても簡単です。そのため、なぜそれがアクセスで実行されるのかが、VBAにコピーされ、SQL文を再構築される前に、スペースが必要です。

& "WHERE(((Salesdata.Loc)= 'Alipore'))" _

代わり

&の「(((Salesdata.Loc)=であるべきです'Alipore')) "_

関連する問題