首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用excel power query更新MS Access数据库?

如何使用excel power query更新MS Access数据库?
EN

Stack Overflow用户
提问于 2017-08-04 23:32:43
回答 2查看 374关注 0票数 0

我有一个简短的问题。因此,我将所有数据库存储在access (本地)中,然后使用excel的强大查询功能从access导入数据。但我希望在excel电子表格中所做的任何更改(我从access导入的信息)都可以使用power query直接在access中进行。有什么办法吗?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2017-08-08 08:54:08

我不认为这是一个好主意,但你可以尝试这样的概念。

代码语言:javascript
复制
Sub ImportFromAccess()
   Dim conn As ADODB.Connection
   Dim myRecordset As ADODB.Recordset
   Dim strConn As String

   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\your_path_here\Northwind.mdb"

   Set myRecordset = New ADODB.Recordset

   FocusRow = ActiveCell.Row
   With myRecordset
       .Open "SELECT * FROM PersonInformation WHERE ID=" & Worksheets("Sheet1").Range("A2").Value, _
         strConn, adOpenKeyset, adLockOptimistic
         ' This assumes that ID is a number field. If it is a text field, use
         ' .Open "SELECT * FROM PersonInformation WHERE ID='" & Worksheets("Sheet1").Range("A2").Value & "'", _
         strConn, adOpenKeyset, adLockOptimistic

      .Fields("ID").Value = Worksheets("Sheet1").Range("A" & FocusRow).Value
      .Fields("FName").Value = Worksheets("Sheet1").Range("B" & FocusRow).Value
      .Fields("LName").Value = Worksheets("Sheet1").Range("C" & FocusRow).Value
      .Fields("Address").Value = Worksheets("Sheet1").Range("D" & FocusRow).Value
      .Fields("Age").Value = Worksheets("Sheet1").Range("E" & FocusRow).Value
      .Update
      .Close
   End With
   Set myRecordset = Nothing
   Set conn = Nothing
End Sub

代码语言:javascript
复制
Sub UpdateRecordsInAccess()
    Dim rng As Range
    Dim r As Long
    Dim conn As ADODB.Connection
    Dim strConn As String
    Dim strSQL As String

    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        "C:\your_path_here\Northwind.mdb"
    Set conn = New ADODB.Connection
    conn.Open strConn

    With Worksheets("Sheet1")
        lastrow = .Range("A2").End(xlDown).Row
        lastcolumn = .Range("A2").End(xlToRight).Column
        Set rng = .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
    End With

        'therow = 1

        For i = 2 To lastrow
            'r = rng.Row
            'If r > 1 Then
                strSQL = "UPDATE PersonInformation SET " & _
                    "FName='" & Worksheets("Sheet1").Range("B" & i).Value & "', " & _
                    "LName='" & Worksheets("Sheet1").Range("C" & i).Value & "', " & _
                    "Address='" & Worksheets("Sheet1").Range("D" & i).Value & "', " & _
                    "Age=" & Worksheets("Sheet1").Range("E" & i).Value & " WHERE " & _
                    "ID=" & Worksheets("Sheet1").Range("A" & i).Value
                conn.Execute strSQL
            'End If
            'r = r + 1
        Next i


    conn.Close
    Set conn = Nothing
End Sub

票数 0
EN

Stack Overflow用户

发布于 2017-08-10 21:17:21

UpdateRecordsInAccess() Dim rng As Range 'Dim r As Long Dim conn As ADODB.Connection Dim strConn As String Dim strSQL As String

代码语言:javascript
复制
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=C:\Users\username\Desktop\DatabaseResplann.mdb;"
Set conn = New ADODB.Connection
conn.Open strConn


With Worksheets("Sheet1")
    lastrow = .Range("A2").End(xlDown).Row
    lastcolumn = .Range("A2").End(xlToRight).Column
    Set rng = .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
End With

    'therow = 1

    For i = 2 To lastrow
        'r = rng.Row
        'If r > 1 Then
            strSQL = "UPDATE Allocation SET " & _
                "Resource Name='" & Worksheets("Sheet1").Range("B" & i).Value & "', " & _
                "Child PID='" & Worksheets("Sheet1").Range("C" & i).Value & "', " & _
                "Fct wk#='" & Worksheets("Sheet1").Range("D" & i).Value & "', " & _
                "Fct Hrs='" & Worksheets("Sheet1").Range("E" & i).Value & "', " & _
                "Fct %='" & Worksheets("Sheet1").Range("F" & i).Value & "', " & _
                "Comment='" & Worksheets("Sheet1").Range("G" & i).Value & " WHERE " & _
                "Resource ID='" & Worksheets("Sheet1").Range("A" & i).Value
            conn.Execute strSQL
        'End If
        'r = r + 1
    Next i


conn.Close
Set conn = Nothing

结束子对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45510628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档