提前感谢大家,我使用 vba 和 MS Access 2016 来处理餐馆的数据库。 我需要打开一个表来获取一个记录,这是一个表名,然后我需要打开它,它有点凌乱,但我想我已经拥有它,直到我开始得到 3078 错误。 (顺便说一句,我刚刚开始使用此项目的访问权限,因此可能是一个简单的语法错误,我不会看到)
不幸的是,我正在以不合理的方式制作数据库,因此它不是安静地保持一致或格式良好,而且用西班牙语的一半是英语的一半然而我确定表的名称是正确的,存在。如果我将查询放入访问而不是vba并使用名称而不是变量,它可以正常工作。这是代码。
Sub QRventas()
Dim ventas As DAO.Recordset
Dim qrv As String
'Query daily sales
qrv = (SELECT menus.id, menus.descripcion, Sum(Nz(ComandasD.cantidad)) AS Total FROM ~~long and ugly but working query)
Set ventas = CurrentDb.OpenRecordset(qrv)
Dim receta As DAO.Recordset
Dim qrr As String
Do While Not ventas.EOF
'QR recipes
ventas.MoveNext
qrr = "SELECT ID, Ingredientes, Cantidad FROM [" & ventas(1) & "] GROUP BY ID, Ingredientes, Cantidad;" '<- Error Here
Set receta = CurrentDb.OpenRecordset(qrr) '<- Complains here 3078
Do While Not receta.EOF
'Updating Storage
CurrentDb.Execute "UPDATE Almacen " _
& "SET Cantidad_almacenada = Cantidad_almacenada - (cantidad * Total) " _
& "WHERE ID = " & receta(1) & ";"
receta.MoveNext
Loop
Loop
End Sub
答案 0 :(得分:1)
可能&#39;菲尔兹&#39;缺少:
qrr = "SELECT ID, Ingredientes, Cantidad FROM [" & ventas.Fields(1) & "]...
答案 1 :(得分:1)
如果Access抱怨表格不在那里,那就不是。
或者,具体使用字段的 Value 属性。
因此,插入一个调试行并研究它应该找到哪个表名:
'QR recipes
ventas.MoveNext
Debug.Print "[" & ventas(1) & "]"
qrr = "SELECT ID, Ingredientes, Cantidad FROM [" & ventas(1).Value & "] GROUP BY ID, Ingredientes, Cantidad;" '<- Error Here
答案 2 :(得分:0)
我尝试了人们在这里发布但他们没有运气的答案,然后我做了“紧凑和修复”,问题就消失了...... 再次感谢大家。