我知道不建议这样做,但是我的双手被束缚所以我现在必须使用它(作为补丁,直到我修复数据库)
我在多用户环境中。数据在Access上,他们需要访问它以更新某些信息,以便其他部门可以提取报告并使用新更新的数据。
相当简单,数据库维护时间不超过6个月,基础设施从一开始就很糟糕,但我现在不能重构。
我在Excel上创建了一个userform,我可以更新,修改工作表上的信息。我希望能够将信息从访问权限提取到Excel工作表中,并向不同的用户显示用户表单,他们将更新他们必须更新的内容,并在关闭用户表单时,他们正在处理的访问记录将被更新。
我没有找到任何解决方案。我似乎找到了DAO的东西,但我不确定。
答案 0 :(得分:3)
以下是如何使用userform编写sql的超级粗略示例。确保你有正确的参考资料。
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检索数据,存储到数组中,然后将内容转储到文本框中。按钮2从文本框中获取内容然后向上;根据该日期对表进行日期记录。
由于这不是一个脚本编写服务,你应该能够修改你正在寻找的东西。