根据链接表的上次修改日期访问更改查询表达式?

时间:2014-01-02 15:45:43

标签: sql ms-access ms-access-2007

我有一个列名为“2012 Full Units w / c”的链接表今年某些时候数据将更新,该列将更改为“2013 Full Units w / c”。发生这种情况时,我希望查询将此新数据提取到此列中。此数据发生变化的时间尚不确定。但是,此更新将在今年此链接文件的第一次更新中进行。

目前,我通过引用“2012 Full Units w / c”明确查询此表。如何使用上次修改日期以适应列标题中不确定的时间变化的方式获取此信息?

2 个答案:

答案 0 :(得分:1)

您可以使用一些VBA代码来测试旧字段名称是否仍然存在,如下所示:

Sub CheckForFieldNameChange()
    Dim cdb As DAO.Database, rst As DAO.Recordset, errNo As Long
    Set cdb = CurrentDb
    cdb.TableDefs("YourLinkedTable").RefreshLink
    On Error GoTo CheckForFieldNameChange_Error
    Set rst = cdb.OpenRecordset( _
            "SELECT TOP 1 [2012 Full Units w/c] " & _
            "FROM [YourLinkedTable]", _
            dbOpenSnapshot)
    Debug.Print "Field name has not changed yet."
    rst.Close
CheckForFieldNameChange_Exit:
    Set rst = Nothing
    Set cdb = Nothing
    Exit Sub

CheckForFieldNameChange_Error:
    errNo = Err.Number
    Select Case errNo
        Case 3061
            Debug.Print "Field name has changed."
            GoTo CheckForFieldNameChange_Exit
        Case Else
            Err.Raise errNo
    End Select
End Sub

答案 1 :(得分:0)

如果Last Modified Date表示表格中的字段,那么您可以使用以下内容:

SELECT (SELECT Year(Max([Last Modified])) FROM TableName) & " Full Units w/c" AS FieldName
FROM TableName

但是如果您指的是上次修改该表的实际日期,您可能需要一些VBA来促进,如下所示:

Public Function tblLastModified(tblName As String) As Date

    tblLastModified = CurrentDb.TableDefs(tblName).LastUpdated

End Function

然后你的查询将是:

SELECT (SELECT Year(tblLastModified("TableName")) FROM TableName) & " Full Units w/c" AS FieldName
FROM TableName