我有一个表(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";
当我尝试执行此查询时,访问会引发错误:“操作必须使用可更新的查询”。
答案 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