【发布时间】:2020-12-09 19:23:05
【问题描述】:
我的 RunSQL 语句似乎遇到了问题,我不断收到以下错误
查询输入必须至少包含一个表或查询
我确定这是一个简单的错误,但我现在没有看到。
Private Sub Command13_Click()
Dim SQL_Text As String
Dim reccount As Long
Dim dbs As Database
Dim rs As DAO.Recordset
'Assign count of PO's
Set dbs = OpenDatabase("Y:\Databases\Bulk database\Fabric_Data.mdb")
Set rs = dbs.OpenRecordset("SELECT * FROM PO;")
rs.MoveLast
reccount = rs.RecordCount
rs.Close
'IF PO count is greater than 0 the table is Drop and PO's are recounted in prep to be inserted
If recount <> 0 Then
DoCmd.RunSQL ("DROP [PO_#];")
DoCmd.RunSQL ("SELECT [P0_#] INTO PO FROM Fabric_Release;")
Else
DoCmd.RunSQL ("SELECT [PO_#] INTO PO FROM Fabric_Release;")
End If
Set rs = Nothing
'Insert new PO data
SQL_Text = "INSERT INTO Fabric_Release ([PO_#], Supplier, [Fabric Name], [Fabric_#], Order_Qty, ETD) VALUES ('" & Me![PO_#] & "', '" & Me.Supplier & "', '" & Me![Fabric Name] & "', '" & Me![Fabric_#] & "', '" & Me.Order_Qty & "', '" & Me.ETD & "')" & " " & _
"WHERE '" & Me![PO_#] & "' NOT IN (SELECT [PO_#] FROM PO);"
MsgBox (SQL_Text)
DoCmd.RunSQL (SQL_Text)
End Sub
【问题讨论】:
-
4 个
RunSQL语句中的哪一个导致了错误? -
最后一句话
-
如果字段是数字类型,不要使用撇号分隔符。如果字段是日期/时间,请使用 # 分隔符。 WHERE 子句在这种情况下没有价值。查看stackoverflow.com/questions/6199417/upserting-in-ms-access 建议不要在命名约定中使用标点符号/特殊字符。最好是 PO_Num。
-
您在最后一条语句中的 SQL 中有错误,因此无法正确解析。您可以通过不连接 SQL 而是使用参数化查询来避免这种情况。这样做还可以防止 SQL 注入导致数据丢失或损坏。
-
也不建议在命名中使用空格。为什么要保存面料名称和面料编号?