我的主窗体中有一个OnOpen
事件,它创建了一个新的(相当复杂的)SQL语句,然后将其分配给查询。
即:
CurrentDb.QueryDefs("Confirmed_Operations").SQL = allOpSQL & " UNION " & opSQL & " UNION " & CurrentDb.QueryDefs("qryOrder_Additional_Operations").SQL
到目前为止,这种方法完美无缺,完全符合预期。在我的mainForm上,我有一个subForm,其Recordset
是所述查询(Confirmed_Operations
)。在我定义QueryDef的行之后,我有:
Me.subConfirmed_Operations.Form.Requery
哪个应该显示新数据。但是,它没有。
它实际上显示以前的数据。这意味着如果我有3组不同的数据,A,B,C和我试图打开A,它会加载空。
如果我尝试打开B,它会显示A的数据,然后如果我打开C数据的表单(它是一个popUp表单),它会显示B的数据。
表格中的所有其他操作都有效,只有这一个子表格没有。
有关如何修复它的任何想法?
P.S。:我在表单中的按钮上有其他几个Requery
语句,并且没有任何影响这个表单。
答案 0 :(得分:1)
解决方法:
而不是:
CurrentDb.QueryDefs("Confirmed_Operations").SQL = allOpSQL & " UNION " & opSQL & " UNION " & CurrentDb.QueryDefs("qryOrder_Additional_Operations").SQL
Me.subConfirmed_Operations.Form.Requery
做的:
CurrentDb.QueryDefs("Confirmed_Operations").SQL = allOpSQL & " UNION " & opSQL & " UNION " & CurrentDb.QueryDefs("qryOrder_Additional_Operations").SQL
Me.subConfirmed_Operations.Form.RecordSource = CurrentDb.QueryDefs("Confirmed_Operations").SQL
或者(如果查询本身仅以此形式使用,而不是其他地方):
Me.subConfirmed_Operations.Form.RecordSource = allOpSQL & " UNION " & opSQL & " UNION " & CurrentDb.QueryDefs("qryOrder_Additional_Operations").SQL
我不喜欢变通方法,这是一个奇怪的错误,所以如果有人知道为什么简单的Requery
不起作用,请分享。