连接Access到Excel,使用Excel userform更新Access记录

时间:2016-11-24 17:32:31

标签: excel-vba userform access vba excel

我知道不建议这样做,但是我的双手被束缚所以我现在必须使用它(作为补丁,直到我修复数据库)

我在多用户环境中。数据在Access上,他们需要访问它以更新某些信息,以便其他部门可以提取报告并使用新更新的数据。

相当简单,数据库维护时间不超过6个月,基础设施从一开始就很糟糕,但我现在不能重构。

我在Excel上创建了一个userform,我可以更新,修改工作表上的信息。我希望能够将信息从访问权限提取到Excel工作表中,并向不同的用户显示用户表单,他们将更新他们必须更新的内容,并在关闭用户表单时,他们正在处理的访问记录将被更新。

我没有找到任何解决方案。我似乎找到了DAO的东西,但我不确定。

1 个答案:

答案 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从文本框中获取内容然后向上;根据该日期对表进行日期记录。

由于这不是一个脚本编写服务,你应该能够修改你正在寻找的东西。