sql - 如何将 Excel 单元格值设置为 Access Query 的条件?

标签 sql excel vba ms-access dao

我正在 MS Access 中创建一个新查询,该查询根据“分支”和“员工”字段更新现有记录。如何设置标准以引用单元格值?说A2拥有 Access 和 B2 的“分支”ID保存 Access 中“Employee” ID 的值。我想更新我的 Access“Notes”字段。我的查询在 Excel 中运行时有效,但这只是因为我指定了“Employee”和“Branch”ID 是什么。当我在下面运行我的代码时没有任何更新:

代码

Sub modify_record()
Dim ac As Object
Dim branchid As String
Dim employeeid As String
Dim notesF As String
Set ac = CreateObject("Access.Application")

branchid = Sheets("Sheet4").Range("A2")
employeeid = Sheets("Sheet4").Range("B2")
notesF = Sheets("Sheet4").Range("C2")

Dim strDatabasePath As String
strDatabasePath = "C:\Users\johnsmith\OneDrive\pbsbackup.mdb"

With ac
.OpenCurrentDatabase (strDatabasePath)
Dim db As Object
Set db = .CurrentDb
db.Execute "Update_Records"
End With

End Sub

在 MS Access 中查询。另存为 Update_Records
 UPDATE pbsmaster SET pbsmaster.notes = "notesF" WHERE 
    (((pbsmaster.branch)="branchid") AND((pbsmaster.employee)="employeeid"));

最佳答案

您的变量不会神奇地转移到查询中,只是因为它们具有相同的名称。

您需要在 Access 查询中指定参数,并通过 DAO.QueryDef 传递它们Excel VBA 代码中的对象。

这是一个例子:https://stackoverflow.com/a/2317225/3820271

Dim qd As Object ' DAO.QueryDef
Set qd = db.QueryDefs("Update_Records")
qd.Parameters("branchid") = branchid
' etc.
qd.Execute

关于sql - 如何将 Excel 单元格值设置为 Access Query 的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55466504/

相关文章:

vba - 如何使用vba禁用单元格中的更改?

excel - 空白单元格的减法 - Excel

excel - 在 Rows 集合上使用 For Each 时,将行值作为字符串复制到 Variant 中

sql - Hadoop-创建表时格式化日期

c# - MySql 使用.Net/Connector 批处理存储过程调用?

vba - 使用 oMath.BuildUp 方法的 Excel/Word 方程?

vba - "Please Wait"弹出消息

excel - VBA 从网站插入 .csv,.csv 不在 url

mysql - SQL 日期填充

sql - 限制行输出