2016-03-29 21 views
0

Sorgudan Rapor Oluşturma; çeşitli tablolardan veri yakalama. Raporda iki hesaplanmış kutu var ve ben UPDATE veriyi tablolardan birine geri istiyorum. Hata ayıklama, değişkenleri yakaladığımı gösterir ancak WHERE maddesinde bana sözdizimi hataları vermeye devam ediyor. Net ovma gelen çok sayıda sözdizimi yinelemeyi denedim.WHERE maddesinde sözdizimi hatası güncelleştiriliyor

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 

cevap

2

Bir Erişim SQL UPDATE sadece bir kez SET anahtar kelime içermelidir.

Birden çok alanı güncelleştirmek istediğinizde, bir kez SET kullanın ve FieldName = Değer bölümleri çiftleri arasında virgül kullanın.

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

Bunun işe gerektiğini düşünüyorum ancak bir UPDATE deyimi içine değerlerini birleştirerek yerine bir parametre sorgusunu dikkate öneririz.

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

Yardım ve geri bildiriminiz için teşekkür ederiz. Access/Database dünyasında oldukça yeni (Excel'deki pek çok VBA deneyimi) ama gerçekten fonksiyonların arkasındaki 'neden' öğrenmekten keyif alıyorum. Araştırma yapacağım ve neden parametre sorgu açısını tavsiye ettiğinizi anlamaya çalışacağım. –