2016-03-29 24 views
0

クエリからレポートを生成します。いくつかのテーブルからデータをキャプチャします。レポートは2つの計算されたボックスを持っており、私はUPDATEのデータを1つのテーブルに戻したいと考えています。デバッグでは、変数をキャプチャしていますが、WHERE句に構文エラーが表示され続けています。私はネットを精練することから多くの構文反復を試みました。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 

答えて

2

アンアクセスSQL UPDATE一度だけSETキーワードを含むべきです。

複数のフィールドを更新する場合は、SETを1回使用してから、フィールド名=値のセグメントの間にコンマを使用します。

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

私はそれが動作するはずだと思うけど、あなたが代わりに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

ご協力いただきありがとうございます。私はAccess/Databaseの世界でかなり新しい(ExcelでのVBA経験が多い)が、機能の背後にある「なぜ」を学ぶのが楽しい。私は調査し、あなたがなぜパラメータクエリーアングルを推奨するのか理解しようとします。 –