我知道不建议这样做,但我的双手被束缚了所以我现在必须使用它(作为补丁,直到我修复数据库)
我在一个多用户环境中。数据在 Access 上,他们需要 Access 它以更新一些信息,以便其他部门可以提取报告并使用新更新的数据。
相当简单,然而,数据库没有维护超过 6 个月,基础设施从一开始就很糟糕,但我现在负担不起重构。
我在 Excel 上创建了一个用户表单,我可以在其中更新、修改工作表上的信息。我希望能够将信息从 Access 中提取到 Excel 工作表中,并向不同的用户显示用户表单,他们将更新他们必须更新的内容,并且在关闭用户表单后,他们正在处理的 Access 记录将被更新。
我还没有找到任何解决方案。我似乎在 DAO 中找到了一些东西,但我不确定。
最佳答案
这是一个如何使用用户表单编写 sql 的 super 粗略示例。确保你有正确的引用。
Private Sub CommandButton1_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim tdf As DAO.TableDef
Dim vAr$
Dim arrResults(2) As String
For Each tdf In db.TableDefs
If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*") Then
tdf.RefreshLink
End If
Next
Set db = DBEngine.OpenDatabase("C:\Users\Ashleysaurus\Desktop" & "\" & "xyzmanu3.accdb")
vAr = TextBox1.Value
Set rst = db.OpenRecordset("SELECT PartName, PartNum, Quantity FROM InventoryTbl WHERE PartName='" & vAr & "';")
i = 0
rst.MoveFirst
Do Until rst.EOF
arrResults(i) = rst.Fields(0)
arrResults(i) = rst.Fields(1)
arrResults(i) = rst.Fields(2)
rst.MoveNext
i = i + 1
Loop
TextBox2.Value = arrResults(0)
TextBox3.Value = arrResults(1)
TextBox4.Value = arrResults(2)
Set tdf = Nothing
rst.Close
Set rst = Nothing
db.Close
Set db = Nothing
End Sub
Private Sub CommandButton2_Click()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim vAr$: vAr = TextBox1.Value
Dim vAr2$: vAr2 = TextBox2.Value
Dim vAr3$: vAr3 = TextBox3.Value
Dim vAr4$: vAr4 = TextBox4.Value
Dim vbSql$
For Each tdf In db.TableDefs
If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*") Then
tdf.RefreshLink
End If
Next
Set db = DBEngine.OpenDatabase("C:\Users\Ashleysaurus\Desktop" & "\" & "xyzmanu3.accdb")
vbSql = "UPDATE InventoryTbl SET PartName='" & vAr2 & ", Quantity='" & vAr4 & " WHERE PartNum='" & vAr3 & "';"
db.Execute vbSql
Set tdf = Nothing
db.Close
Set db = Nothing
End Sub
Button1 检索数据,存储到数组中,然后将内容转储到文本框中。按钮二从文本框中获取内容,然后更新;以此为基础更新表格。
由于这不是脚本编写服务,因此您应该能够从中找到您正在寻找的内容。
关于excel - 将 Access 连接到 Excel,使用 Excel 用户表单更新 Access 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792033/