如何使用引用另一个表中的值的where语句执行update SQL查询

如何使用引用另一个表中的值的where语句执行update SQL查询,sql,ms-access,vba,ms-access-2010,Sql,Ms Access,Vba,Ms Access 2010,我想使用和SQL查询更新表中的记录,该查询使用where语句引用另一个表中的其他值 在下面的示例中,我根据我构建的select查询获取了值,并将它们重新定位到一个名为“tblSearchEngine05”的表中。此时,我正试图使用基于“TBLSearchenine05”中的值的条件查询来更新表“tblSearchEngin01”中的一列。我试图使用两个填充的字段[TBLSearchine05].[enddate]和[TBLSearchine05].[startdate]作为条件的值。不幸的是,似

我想使用和SQL查询更新表中的记录,该查询使用where语句引用另一个表中的其他值

在下面的示例中,我根据我构建的select查询获取了值,并将它们重新定位到一个名为“tblSearchEngine05”的表中。此时,我正试图使用基于“TBLSearchenine05”中的值的条件查询来更新表“tblSearchEngin01”中的一列。我试图使用两个填充的字段[TBLSearchine05].[enddate]和[TBLSearchine05].[startdate]作为条件的值。不幸的是,似乎有语法错误消息

    Private Sub myComboBox_Change()


    Dim startDate As Date
    Dim endDate As Date
    Dim period As String
    Dim dayOfWeek As Integer
    Dim monthOfQuarter As Integer

    period = Me.myComboBox
            startDate = DateSerial(Year(Date), Month(Date), Day(Date))
    Select Case period
        Case "Today"
            endDate = DateAdd("d", 1, startDate)

            'deletes all records in holding table "tblsearchengine05"
            st_sql = "Delete [tblsearchengine05].[startdate]FROM tblsearchengine05"
             Application.DoCmd.RunSQL (st_sql)

            ' updates the holding table "tblSearchEngine05" to reflect the correct start and finish date
            Dim rst As DAO.Recordset
            Set rst = CurrentDb.OpenRecordset("tblSearchEngine05", dbOpenTable)
            rst.AddNew
            rst!startDate = startDate
            rst!FinishDate = endDate
            rst.Update
            rst.Close
            Set rst = Nothing


            ' clears the Query02DateSelect column on table tblSearchEngine01

        st_sql = "UPDATE tblSearchEngine01 SET tblSearchEngine01.Query02DateSelect = NULL"
        Application.DoCmd.RunSQL (st_sql)


            ' updates the column [tblSearchEngine01].[query02dateselect] to identify which records contain the specified date range criteria

            st_sql = "UPDATE tblSearchEngine01, tblSearchEngine05 SET tblSearchEngine01.Query02DateSelect = '1' WHERE (((tblSearchEngine01.[Automatic date of entry])>=([tblSearchEngine05].[StartDate]) And (tblSearchEngine01.[Automatic date of entry])<=([tblSearchEngine05].[FinishDate])))"
            Application.DoCmd.RunSQL (st_sql)
Private Sub-myComboBox\u Change()
Dim startDate作为日期
Dim endDate作为日期
将周期变暗为字符串
Dim dayOfWeek作为整数
Dim MONTHOF四分之一为整数
period=Me.mycombox
startDate=DateSerial(年(日)、月(日)、日(日))
选择病例周期
案例“今天”
endDate=DateAdd(“d”,1,startDate)
'删除保留表“tblsearchengine05”中的所有记录'
st_sql=“从TBLSearchenine05中删除[TBLSearchenine05]。[startdate]
Application.DoCmd.RunSQL(st_sql)
'更新保留表“TBLSearchine05”以反映正确的开始和完成日期
将rst设置为DAO.Recordset
Set rst=CurrentDb.OpenRecordset(“TBLSearchine05”,dbOpenTable)
rst.AddNew
rst!开始日期=开始日期
rst!FinishDate=endDate
rst.更新
rst.关闭
设置rst=无
'清除表TBLSearchine01上的Query02DateSelect列
st_sql=“更新TBLSearchenine01设置TBLSearchenine01.Query02DateSelect=NULL”
Application.DoCmd.RunSQL(st_sql)
'更新列[TBLSearchine01]。[query02dateselect]以标识哪些记录包含指定的日期范围条件
st_sql=“UPDATE tblsearchenine01,tblsearchenine05 SET tblsearchenine01.Query02DateSelect='1',其中(((tblsearchenine01.[Automatic date of entry])>=([tblsearchenine05].[StartDate])和(tblsearchenine01.[Automatic date of entry])
私有子框
Dim startDate作为日期
Dim endDate作为日期
将周期变暗为字符串
Dim dayOfWeek作为整数
Dim MONTHOF四分之一为整数
period=Me.mycombox
startDate=DateSerial(年(日)、月(日)、日(日))
选择病例周期
案例“今天”
endDate=DateAdd(“d”,1,startDate)
'删除保留表“tblsearchengine05”中的所有记录'
st_sql=“从TBLSearchenine05中删除[TBLSearchenine05]。[startdate]
Application.DoCmd.RunSQL(st_sql)
'更新保留表“TBLSearchine05”以反映正确的开始和完成日期
将rst设置为DAO.Recordset
Set rst=CurrentDb.OpenRecordset(“TBLSearchine05”,dbOpenTable)
rst.AddNew
rst!开始日期=开始日期
rst!FinishDate=endDate
rst.更新
rst.关闭
设置rst=无
'清除表TBLSearchine01上的Query02DateSelect列
st_sql=“更新TBLSearchenine01设置TBLSearchenine01.Query02DateSelect=NULL”
Application.DoCmd.RunSQL(st_sql)
'更新列[TBLSearchine01]。[query02dateselect]以标识哪些记录包含指定的日期范围条件

st_sql=“UPDATE tblsearchenine01,tblsearchenine05 SET tblsearchenine01.Query02DateSelect='1',其中(((tblsearchenine01.[自动输入日期])>=([tblsearchenine05].[StartDate])和(tblsearchenine01.[自动输入日期])语法错误是…?有两个针对tbllSearchEngine01的更新语句-哪一个似乎抛出了错误?第二个。第一个我只是用来清除我想更新的列。(它工作正常)我得到了它。谢谢,上面的代码被正确更新了
Private Sub myComboBox_Change()


    Dim startDate As Date
    Dim endDate As Date
    Dim period As String
    Dim dayOfWeek As Integer
    Dim monthOfQuarter As Integer

    period = Me.myComboBox
            startDate = DateSerial(Year(Date), Month(Date), Day(Date))
    Select Case period
        Case "Today"
            endDate = DateAdd("d", 1, startDate)

            'deletes all records in holding table "tblsearchengine05"
        st_sql = "Delete [tblsearchengine05].[startdate]FROM tblsearchengine05"
         Application.DoCmd.RunSQL (st_sql)

            ' updates the holding table "tblSearchEngine05" to reflect the correct start and finish date
            Dim rst As DAO.Recordset
            Set rst = CurrentDb.OpenRecordset("tblSearchEngine05", dbOpenTable)
            rst.AddNew
            rst!startDate = startDate
            rst!FinishDate = endDate
            rst.Update
            rst.Close
            Set rst = Nothing


            ' clears the Query02DateSelect column on table tblSearchEngine01

        st_sql = "UPDATE tblSearchEngine01 SET tblSearchEngine01.Query02DateSelect = NULL"
        Application.DoCmd.RunSQL (st_sql)


            ' updates the column [tblSearchEngine01].[query02dateselect] to identify which records contain the specified date range criteria

       st_sql = "UPDATE tblSearchEngine01, tblSearchEngine05 SET tblSearchEngine01.Query02DateSelect = '1' WHERE (((tblSearchEngine01.[Automatic date of entry])>=([tblSearchEngine05].[StartDate]) And (tblSearchEngine01.[Automatic date of entry])<=([tblSearchEngine05].[FinishDate])))"
        Application.DoCmd.RunSQL (st_sql)