2016-03-29 3 views
0

Génération d'un rapport à partir d'une requête; capturer des données de plusieurs tables. Le rapport a deux boîtes calculées et je veux UPDATE les données à l'une des tables. Débogage montre que je capture les variables mais continue à me donner des erreurs de syntaxe dans la clause WHERE. J'ai essayé beaucoup d'itérations de syntaxe de récurer le filet.Erreur de syntaxe de mise à jour dans la clause WHERE

Private Sub Report_Load() 
Dim sqls As String 
Dim TEP As Single 
Dim PPS As Single 
Dim RecipeN As String 
TEP = Reports![RecipeBuild]![txtTEP] 
PPS = Reports![RecipeBuild]![txtPPS] 
RecipeN = Reports![RecipeBuild]![RecipeName] 
sqls = "Update [tblRecipeBuild] " _ 
    & "Set TEP = " & TEP & " " _ 
    & "Set PPS = " & PPS & " " _ 
    & "WHERE [RecipeName] = '" & RecipeN & "';" 
DoCmd.SetWarnings False 
DoCmd.RunSQL sqls 
DoCmd.SetWarnings True 
End Sub 

Répondre

2

Un accès SQL UPDATE doit inclure une seule fois le mot-clé SET.

Lorsque vous souhaitez mettre à jour plusieurs champs, utilisez une fois SET, puis utilisez une virgule entre les paires de FieldName = Value segments.

sqls = "Update [tblRecipeBuild] " _ 
    & "Set TEP = " & TEP & ", PPS = " & PPS & " " _ 
    & "WHERE [RecipeName] = '" & RecipeN & "';" 

Je pense que cela devrait fonctionner, mais vous suggère de considérer une requête de paramètre au lieu des valeurs concaténer dans une déclaration UPDATE.

Dim db As DAO.Database 
Dim qdf As DAO.QueryDef 
Dim strUpdate As String 
strUpdate = "UPDATE tblRecipeBuild SET TEP=pTEP, PPS=pPPS WHERE RecipeName=pRecipeN;" 
Debug.Print strUpdate 
Set db = CurrentDb 
Set qdf = db.CreateQueryDef(vbNullString, strUpdate) 
With qdf 
    .Parameters("pTEP").Value = TEP 
    .Parameters("pPPS").Value = PPS 
    .Parameters("pRecipeN").Value = RecipeN 
End With 
qdf.Execute dbFailOnError 
+0

Nous vous remercions de l'aide et des commentaires. Je suis relativement nouveau dans le monde Access/Database (beaucoup d'expérience VBA dans Excel) mais j'aime vraiment apprendre le 'pourquoi' derrière les fonctions. Je vais rechercher et essayer de comprendre pourquoi vous recommandez l'angle de requête de paramètre. –