激活子窗体上的过滤器会导致动态列中的值显示不正确

时间:2016-07-18 19:15:02

标签: sql ms-access

所以当我尝试使用按钮点击激活子窗体过滤器时,我在Access中有一个奇怪的怪癖,它调用一个动态更新具有特定值的列的查询。 从这里开始,我们用来填充列的查询:

SELECT req.RequestID, req.[Broker Name], req.[Broker ID], req.Title, req.[Company Name], req.[Contact Name], [DT Num of Accts by Parent].[Total Number of Accounts], [DT num of hu rec by parent].[Total HU Recieved], [DT HU not recieved].[Total HU not recieved], req.DealID,
d.ID AS DealTableID,
SWITCH(
    EXISTS(SELECT * FROM [FLOW Deal Executed] a WHERE d.ID = a.DealID), 'Contract Executed',
    EXISTS(SELECT * FROM [FLOW Contract submitted] a WHERE d.ID = a.DealID), 'Contract Submitted',
    EXISTS(SELECT * FROM [FLOW Deal Quoted] a WHERE d.ID = a.DealID), 'Quote Created',
    EXISTS(SELECT * FROM [FLOW Deal Priced] a WHERE d.ID = a.DealID), 'Pricing Available',
    EXISTS(SELECT * FROM [FLOW All HU Recieved] a WHERE d.ID = a.DealID), 'All HU Received',
    1=1,'Pending HU',
    ) As DealStatus
FROM (((Request req
    LEFT JOIN deal as d ON req.RequestID = d.RequestID) 
    LEFT JOIN [DT Num of Accts by Parent] ON req.RequestID = [DT Num of Accts by Parent].RequestID) 
    LEFT JOIN [DT num of hu rec by parent] ON req.RequestID = [DT num of hu rec by parent].RequestID) 
    LEFT JOIN [DT HU not recieved] ON req.RequestID = [DT HU not recieved].RequestID
WHERE (((req.DealID) Is Not Null));

此查询似乎正常工作,如果没有打开过滤器,将在子窗体(DealStatus)中正确显示列。但是,当使用按钮更改子窗体上的过滤器以仅显示与该列相关的特定值时,子窗体将显示正确的RECORD,但该列仅在确定所有开关为false时显示列的默认值(在这种情况下“等待HU”) 这是我的onclick事件(非常简单,只需重复每个需要它的按钮):

Private Sub Command56_Click()
    Child27.Form.Filter = "[DealStatus]='All HU Received'"
    Child27.Form.FilterOn = True
End Sub

除此之外:我注意到,当点击过滤按钮时,“DealStatus”列会显示正确的瞬间值,然后在子窗体中显示它的默认值。

任何人都有任何关于让它在列中显示正确值的见解? 感谢

:: EDIT :: 澄清一些信息(特别是按钮):我们有5或6个按钮使用相同的基本onclick事件来设置子窗体上的过滤器以匹配动态“DealStatus”列中传递的字符串。当我们使用其中一个按钮来更改问题开始的过滤器时。

::编辑2 :: 所以我一直在做一些挖掘和故障排除,我认为这可能与查询本身有关。虽然它似乎正在工作并根据switch语句返回正确的记录(以及每个switch语句正在调用的其他查询),但只要在查询上使用任何过滤器,它就会将“DealStatus”列默认为默认值(如果全部switch语句选择为false(在这种情况下挂起HU)。那么可能有一些关于如何改进或修复查询的见解?

由于

0 个答案:

没有答案