excel - 将 Access 连接到 Excel,使用 Excel 用户表单更新 Access 记录

标签 excel vba ms-access userform

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

我在一个多用户环境中。数据在 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/

相关文章:

vba - Excel VBA 连接

database - 从 ComboBox 选择中填充 MS Access 表单(要填充的行数可变)

excel - VBA Excel - 在 VBA 中复制 Excel MAX 公式

mysql - Insert Into WHERE 列中的数据是特定的

c# - 如何获取详细的 ExecuteNonQuery 错误消息?

excel - 如果列中的字符串左对齐,如何获取信息以及如何在另一个工作表中使用此信息创建新单元格?

excel - 使用 vba 进行具有单元格功能的剪切粘贴代码时出现对象错误

excel - 从不同的工作表调用子时抛出 400

vba - 在Excel VBA中预定义多维数组

sql - 如何在 MS-Access 中将 3 条记录分组为 1 行?