访问 - 从链接的Excel表中添加计算字段

时间:2017-03-03 15:02:01

标签: ms-access

我有两个表,表:A是在Access和Table中构建的:Error是Excel中的链接表。错误表的计算是我希望在Access中的Query中的SQL编码。错误的一个例子是:

 IIf([Table A].[RETURN_DAYS]<>30,"-RETURN POLICY DAYS SHOULD BE 30","")

错误表中的列是:

|Audit Name|Error Codes|
|Audit 1   |the code above
|Audit 2   | 

目前,我手动将错误代码复制并粘贴到Excel表格中的查询中,以便进行计算。这需要非常长的时间,因为我有超过150个Audits和5个不同的错误字段。

我希望能够根据审核名称从链接表中的错误列中选择错误,并将该错误放在字段中,以便在运行查询时,访问完成计算。我找不到有关如何执行此操作或是否可能的任何信息。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

由于我不知道您正在使用的单元格或工作表名称,因此您需要调整以下代码。

此代码将监视对某个列(您的SQL)的更改,并将更改Access中的查询。假设查询名称在col A中的col A,SQL中。

将此代码放在您要进行更改的工作表中。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    'Monitor the range of cells you may be making changes to. I have assumed SQL is in col 2 (B)
    If Target.column <> 2 Then Exit Sub         ' If change not made in column 'A' then Ignore!

    ' Assuming you have the query name in Col A and the SQL in Col B
    If Target.column = 1 Then
        MsgBox "You are changing the query name?"
    End If
    If Change_SQL(Cells(Target.Row - 1, Target.column), Cells(Target.Row, Target.column)) <> "passed" Then
        MsgBox "Update failed."
    End If

End Sub

Function Change_SQL(strQueryName As String, strNewSQL As String) As String

'Declare Variables'
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef

Dim strSQL_Old As String
Dim strSQL_New As String

'Connect to the Database'
On Error GoTo Error_Trap

    Set dbs = DBEngine.OpenDatabase("C:\data\Access\xxxxxx.mdb", False, False, _
                                                "MS Access;")
    Set qdf = dbs.QueryDefs("Query5")
    strSQL_Old = qdf.Sql
    Debug.Print "Query Name: " & qdf.Name & vbTab & qdf.Sql
    qdf.Sql = strNewSQL
    qdf.Close

    ' You can execute the query if needed....
    'Set rst = dbs.OpenRecordset(strNewSQL)    ' If it's a select query

    'Do While Not rst.EOF
    '    Do whatever
    '    rst.MoveNext
    'Loop

    'rst.Close
    'Set rst = Nothing
    Set dbs = Nothing
    Change_SQL = "passed"
Exit Function

Error_Trap:
    Change_SQL = "failed"
    Debug.Print Err.Number & vbTab & Err.Description
    MsgBox Err.Number & vbTab & Err.Description
    Exit Function

    Resume
End Function