J'ai une requête sql qui renvoie la partie de certains champs en fonction de trois critères.Enregistrer les résultats d'une requête sql dans l'accès aux variables vba
- champ LOC ont une chaîne « Alipore »
- La date est supérieure et égale à une sdate que variable qui obtient la valeur d'une zone de texte sur un formulaire.
- La date est inférieure et égale à une variable edate qui obtient la valeur d'une zone de texte sur un formulaire.
mais j'obtiens une erreur "deux peu de paramètre 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 & "));"
Set rs = CurrentDb.OpenRecordset (sqlMax, dbOpenDynaset)
Set rs = CurrentDb.OpenRecordset(sqlMax)
result = rs.Fields(0)
MsgBox result
Set rs = Nothing
rs.Close
End Sub
Sur quelle ligne l'erreur se produit-elle? Avez-vous prévu que 'startD' soit un' Variant'? De plus, certaines variantes SQL, les dates doivent avoir '#' entourant les dates. Par exemple. # 1/1/2017 # Peut-être que –
Merci pour votre réponse. – Deb
Maintenant, j'ai une erreur lors de l'exécution de vba err # 3141, mais fonctionne bien comme une requête. – Deb