2017-03-10 1 views
0

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

  1. champ LOC ont une chaîne « Alipore »
  2. La date est supérieure et égale à une sdate que variable qui obtient la valeur d'une zone de texte sur un formulaire.
  3. 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 
+0

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 –

+0

Merci pour votre réponse. – Deb

+0

Maintenant, j'ai une erreur lors de l'exécution de vba err # 3141, mais fonctionne bien comme une requête. – Deb

Répondre

0

oh mon dieu je l'ai trouvé, il est si simple. Il y a un espace requis avant où c'est pourquoi il s'exécute en accès mais quand je l'ai copié dans VBA et restructuré l'instruction sql.

il devrait être

& "OÙ (((Salesdata.Loc) = 'Alipore'))" _

au lieu de

& « OÙ (((Salesdata.Loc) = 'Alipore')) "_