Sql Access子窗体不刷新显示的记录
我在access中有一个主窗体和一个子窗体(连续窗体模式)。子窗体的源是一个查询,该查询具有一个criteria参数,该参数从mainform中的组合框中获取值 当我打开主窗体时,组合框为空,子窗体显示所有记录。如果我在组合框中选择一个值,然后单击一个只包含以下代码行的刷新按钮:Sql Access子窗体不刷新显示的记录,sql,ms-access,ms-access-2007,vba,Sql,Ms Access,Ms Access 2007,Vba,我在access中有一个主窗体和一个子窗体(连续窗体模式)。子窗体的源是一个查询,该查询具有一个criteria参数,该参数从mainform中的组合框中获取值 当我打开主窗体时,组合框为空,子窗体显示所有记录。如果我在组合框中选择一个值,然后单击一个只包含以下代码行的刷新按钮:me.subformname.form.requery,它工作正常,子表单会重新查询并刷新相应的记录。 如果我更改combobox中的值并点击刷新按钮,它会再次查询/刷新子窗体 问题是,如果我使用关联菜单过滤子窗体(右键
me.subformname.form.requery
,它工作正常,子表单会重新查询并刷新相应的记录。
如果我更改combobox中的值并点击刷新按钮,它会再次查询/刷新子窗体
问题是,如果我使用关联菜单过滤子窗体(右键单击>“等于…”)子窗体将相应地过滤,然后我将删除过滤器(右键单击>“从…”清除过滤器)子窗体将未过滤,但现在如果我更改组合框值并点击刷新按钮,子窗体既不刷新也不重新查询
即使我在后台打开查询,情况也是如此。一旦我过滤,刷新就不起作用了
这是子窗体查询:
SELECT qry_listatoatesesizarile.idsesizare,
branduri.numebrand,
locatii.fsname,
categoriiechipamente.categorieechipament,
echipamente.codechipament,
qry_listatoatesesizarile.nrsesizare,
qry_listatoatesesizarile.datasesizare,
qry_listatoatesesizarile.datasla,
qry_listatoatesesizarile.detalii,
qry_listatoatesesizarile.stare,
Dlookup("[stareraport]", "listastarirapoarte",
"[idstareraport]=" & [stare]) AS
StareS,
echipe.denumireechipa
AS EchipaLocatie,
qry_listarapoarte.nrraport,
qry_listarapoarte.datainceput,
qry_listarapoarte.datafinalizat,
qry_listarapoarte.lucrariefectuate,
qry_listarapoarte.cauzadefectiune,
qry_listasesizariprogramate.denumireechipa
AS EchipaProgramata,
Iif([stare] = 1
OR [stare] = 3
OR [stare] = 0, Datediff("s", Cdate([datasla]), Now()),
Datediff("s", Cdate([datasla]), Cdate([datafinalizat])))
AS DiferentaSLASecs,
Secs2dhms([diferentaslasecs])
AS DiferentaSLA,
Iif([diferentaslasecs] < 0, true, false)
AS InSLA,
Format([datasesizare], "mmmm yyyy")
AS [Month],
Iif([stare] = 2
OR [stare] = 4, Iif([diferentaslasecs] < 0, "inchis in sla",
"inchis in afara sla"),
Iif([diferentaslasecs] < 0, "deschis in sla", "deschis in afara sla"))
AS
Situatie,
locatii.clientfrigorifice,
clienti.client
FROM clienti
INNER JOIN (((((branduri
INNER JOIN ((qry_listatoatesesizarile
INNER JOIN echipamente
ON
qry_listatoatesesizarile.idechipament =
echipamente.idechipament)
INNER JOIN locatii
ON echipamente.idlocatie =
locatii.idlocatie)
ON branduri.idbrand = locatii.idbrand)
INNER JOIN categoriiechipamente
ON echipamente.idcategorieechipament =
categoriiechipamente.idcategorieechipament)
INNER JOIN echipe
ON qry_listatoatesesizarile.idechipa =
echipe.idechipa)
LEFT JOIN qry_listasesizariprogramate
ON qry_listatoatesesizarile.idsesizare =
qry_listasesizariprogramate.idsesizare)
LEFT JOIN qry_listarapoarte
ON qry_listatoatesesizarile.idraport =
qry_listarapoarte.idraport)
ON clienti.idclient = locatii.clientfrigorifice
WHERE ( ( ( Format([datasesizare], "mmmm yyyy") ) LIKE Iif(Nz(
[forms] ! [controlsla] ! [cb_lunaverificata], "") = "", "*",
[forms] ! [controlsla] ! [cb_lunaverificata]) )
AND ( ( locatii.clientfrigorifice ) LIKE Iif(Nz(
[forms] ! [controlsla] ! [cb_client]
,
"") = "", "*",
[forms] ! [controlsla] ! [cb_client]) ) );
选择qry_listatoatesesizarile.idsesizare,
branduri.numebrand,
locatii.fsname,
分类hipamente.categorieechipamente,
Echipmente.codechipment,
qry_listatoatesesizarile.nrseizare,
qry_listatosesezarile.datasesizare,
qry_listatosesizarile.datasla,
qry_listatoesezizarile.detalii,
qry_listatosizerile.stare,
Dlookup(“[StarerPort]”,“[Listastariaporate”,
“[idstareraport]=”&[stare])作为
凝视,
灯盏花
作为EchipaLocatie,
qry_listarapoarte.nrraport,
qry_listarapoarte.datainceput,
qry_listarapoarte.datafinalizat,
我是卢克莱·费茨塔特,
你的名字是什么,
qry_listasesizariprogramate.denumireechipa
作为埃希帕塔,
Iif([凝视]=1
或[凝视]=3
或者[stare]=0,Datediff(“s”,Cdate([datasla]),Now(),
Datediff(“s”,Cdate([datasla]),Cdate([datafinalizat]))
作为不同的人,
Secs2dhms([differentalsaces])
作为不同的人,
Iif([differentalsalecs]<0,真,假)
作为InSLA,
格式([datasesizare],“mmmm yyyy”)
截至[月份],
Iif([凝视]=2
或[stare]=4,Iif([Differentintaslasecs]<0,“sla中的inchis”,
“非洲的因希斯解放军”),
Iif([differentalsalecs]<0,“在sla中描述”,“在afara sla中描述”))
作为
情况,
地点:客户,
客户机
来自clienti
内部联接(((((
内部联接((qry_listatoeSizarile
内连接台阶
在…上
qry_ListatoeSizerile.idechipment=
Echipmente.IdeChipment)
内连接位置
关于Echipmente.idlocatie=
位置(idlocatie)
关于branduri.idbrand=locatii.idbrand)
内联接范畴
关于Echipmente.idCategorieeChipment=
CategorieHipamente.idCategorieChipament)
内连接管
关于qry_listatoseizarile.idechipa=
echipe.idechipa)
左连接qry_列表ASESIZARIPROGRAMATE
关于qry_listatoesezirile.idsesizare=
qry_listasesizariprogramate.idsesizare)
左连接qry_listarapoarte
关于qry_listatoesezizarile.idraport=
qry_listarapoarte.idraport)
ON clienti.idclient=locatii.clienti
其中(((格式([datasesizare],“mmmm yyyy”))类似于Iif(新西兰)(
[表格]![controlsla]![cb_lunaverificata],“)=”,“*”,
[表格]![controlsla]![cb_lunaverificata]))
和(locatii.clientfrompoice)像Iif(Nz),(
[表格]![controlsla]![cb_客户端]
,
"") = "", "*",
[表格]![controlsla]![cb_客户端]);
Access在过滤方面可能有点滑稽,尤其是在子窗体上
尝试向组合框代码中添加显式代码,以便每次都清除筛选器。所以它看起来像:
Me.subformname.Form.Filter = Null
Me.subformname.Form.FilterOn = False
Me.subformname.Form.Requery
或者,您可以尝试在组合框中每次更改时动态重置子窗体的RecordSource。(请注意,如果您这样做,您不必显式地重新查询,因为它是自动完成的。)因此,代替现在组合框中的代码,您将有以下几行代码:
Dim mySQLString as String
'Store subform query
mySQLString = "SELECT qry_listato... <<The rest of your query here>>>"
'Set Subform RecordSource
Me.subformname.Form.RecordSource = mySQLSTring
Dim mySQLString作为字符串
'存储子窗体查询
mySQLString=“选择qry\u列表…”
'设置子窗体RecordSource
Me.subformname.Form.RecordSource=mySQLSTring
希望其中一个能帮助你