Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Access子窗体不刷新显示的记录_Sql_Ms Access_Ms Access 2007_Vba - Fatal编程技术网

Sql Access子窗体不刷新显示的记录

Sql Access子窗体不刷新显示的记录,sql,ms-access,ms-access-2007,vba,Sql,Ms Access,Ms Access 2007,Vba,我在access中有一个主窗体和一个子窗体(连续窗体模式)。子窗体的源是一个查询,该查询具有一个criteria参数,该参数从mainform中的组合框中获取值 当我打开主窗体时,组合框为空,子窗体显示所有记录。如果我在组合框中选择一个值,然后单击一个只包含以下代码行的刷新按钮:me.subformname.form.requery,它工作正常,子表单会重新查询并刷新相应的记录。 如果我更改combobox中的值并点击刷新按钮,它会再次查询/刷新子窗体 问题是,如果我使用关联菜单过滤子窗体(右键

我在access中有一个主窗体和一个子窗体(连续窗体模式)。子窗体的源是一个查询,该查询具有一个criteria参数,该参数从mainform中的组合框中获取值

当我打开主窗体时,组合框为空,子窗体显示所有记录。如果我在组合框中选择一个值,然后单击一个只包含以下代码行的刷新按钮:
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
希望其中一个能帮助你