如何使用嵌套查询来更新另一个表中的值?

时间:2019-05-29 01:02:28

标签: vba ms-access

我有一个表(TablevVariables),该表存储上次文件更新日期,导入的最新日志日期等,它基本上存储值,以便在工具多次运行时不会重复输入数据。天。

因此,每天,日志将被附加到日志存档表中,稍后将用于其他历史数据分析。然后更新TableVariables.Keyvalue=<latest date of the log file>

更新模板:

UPDATE my_table SET my_column='new value' WHERE something='some value';

我的更新查询:

UPDATE TablevVariables SET [TablevVariables].KeyValue =
    (SELECT Max([xxxx_Archived_Log].[年月日]) FROM xxxx_Archived_Log)
WHERE [TablevVariables].KeyName="xxxx_Archived_Log";

当我尝试执行此查询时,访问会引发错误:“操作必须使用可更新的查询”。

1 个答案:

答案 0 :(得分:0)

在等待指导的同时,我针对此问题进行了变通。将值分配给变量,然后在常规查询中将其传递。

txtSQLcmd = "SELECT Max([年月日]) FROM xxxx_Archived_Log;"
dtDateValue = DateValue(FetchAValueFromTable(txtSQLcmd))
txtSQLcmd = "UPDATE TablevVariables SET [TablevVariables].KeyValue = #" & dtDateValue & "# WHERE [TablevVariables].KeyName='xxxx_Archived_Log';"
ExecuteSQLcmd (txtSQLcmd)

Function FetchAValueFromTable(ByVal strSQL As String) As String
Dim cnn1 As ADODB.Connection
Set cnn1 = CurrentProject.Connection
Dim myRecordSet As New ADODB.Recordset
myRecordSet.ActiveConnection = cnn1
myRecordSet.CursorType = adOpenDynamic
myRecordSet.LockType = adLockOptimistic
myRecordSet.Open strSQL
FetchAValueFromTable = myRecordSet.Fields(0).Value
myRecordSet.Close
Set myRecordSet = Nothing
Set cnn1 = Nothing
End Function

Function ExecuteSQLcmd(ByVal strSQL As String)
   DoCmd.RunSQL strSQL
End Function