aceess 在窗体中添加控件(复选框勾选或者组合框选项)来选择查询结果中所要显示的字段,求高手解答

如:查询中有字段1,字段2,字段3.。。。。。,在窗体中添加控件,来决定生成的查询所要显示的字段
表(report)结构:ID,date,ACW,ATT,AHT,Holding(部分结构,选主要的写的)
窗体(main)
查询:SELECT report.工号, report.date, report.ACW, report.ATT, report.AHT, report.Holding, Avg(report.AHT) AS AHT之平均值, [ATT]+[Holding] AS 处理时间, [ATT]/([ATT]+[ACW]+[Holding]) AS ACD
FROM report
GROUP BY report.工号, report.date, report.ACW, report.ATT, report.AHT, report.Holding, [ATT]+[Holding], [ATT]/([ATT]+[ACW]+[Holding])
HAVING (((report.date)=[forms]![main]![date]));
现在需要对ACW,ATT,AHT,Holding,四个字段,进行选择显示
ACCESS接触了一段时间,但不是很深入,请大神解惑!!!感谢!!!

可以用事件过程解决:
1.复选框勾选
将多个复选框控件放入选项组控件里,然后为该选项组控件添加更新后事件过程
Private Sub Frame1_AfterUpdate()
'根据勾选值,使用If..then 语句 输出相应的SQL查询语句
'然后运行相应的代码显示查询结果
End Sub
2.组合框选项
为组合框控件添加更新后事件过程:
Private Sub Combo1_AfterUpdate()
'根据组合框Value值,输出相应的SQL查询语句
'然后运行相应的代码显示查询结果
End Sub

注:具体的SQL查询语句和显示查询结果的代码要根据你的表结构、查询具体要求以及窗体结构、数据显示方式而定。因为没有交代清楚故无法编写,请你自行研究吧。追问

十分感谢大神,多个复选框通过勾选实现,能够理解,但具体语句不知如何写,组合框选项的话,是否需要做多个组合框,还是在一个组合框中能实现多选;目前对语句用到的少,个人不擅长,请解惑,因为追问字数限制,详细情况写在补充问题里面了,再次感谢!

追答

可能是ACCESS初哥的原因,你的要求交代得不清楚。是要在窗体里显示全部查询结果集吗?还是要根据不同要求只显示记录集中某个特定字段?请将显示要求讲清楚。另外,ACW,ATT,AHT,Holding这四个字段是要显示字段还是要根据字段值进行过滤查询?如果你无法讲清楚,请帖上你的窗体截图以便我帮你理解你的需求。
关于组合框只要使用一个就可以了,因为其下拉项目数几乎没用限制。
搞清楚你的意图后我可以提供具体实现代码

追问

我的想法是根据ACW,AHT,ATT,Holding字段的选择(勾选或者组合框下拉选择),决定查询中显示哪个或哪几个字段,通过查询按键,显示相应的查询结果就行,不需要在窗体中显示结果,

追答

知道你的意思了。
因为有四个字段可供选择而又要求多选的话,即使不考虑输出字段的先后排列次序,其组合最少也有15个。如果要用打开查询的方法显示资料那么就要预存15 条查询,使用窗体显示的话,预存查询可减少至1个,但是实现代码也会变得复杂,因为需要根据那四个复选框的15种不同组合,让程序作出与之配合的不同反应。
我建议使用单选,将组合变化减至4个,如果你认可的话,我将为你编写打开查询的具体实现代码。

追问

嗯嗯,明白,也就是选择其实是通过多个查询实现的
麻烦将单选的发出吧,谢谢
果然大神

追答

好的,看到你的贴图,使用一个命令按钮。那就放弃原来建议的更新后事件过程,改用命令按钮的单击事件过程实现你的意图:

首先将你“问题补充”中的那条查询语句保存为一条查询,取名:Query_All
SELECT ACW FROM Query_All 保存为一条查询,取名:Query_ACW
SELECT ATT FROM Query_All 保存为一条查询,取名:Query_ATT
SELECT AHT FROM Query_All 保存为一条查询,取名:Query_AHT
SELECT Holding FROM Query_All 保存为一条查询,取名:Query_Holding
跟着为你的窗体添加一个选项组控件,取名:Frame0
分别向Frame0里面添加4个新复选框控件,依添加次序分别将其标签改为:ACW、ATT、AHT和Holding 注意:添加复选框控件的次序要记清楚,对于选项组控件来说,如果你勾选了第一个添加的复选框,那么其VALUE值就是1,如果勾选了第二个添加的复选框,那么其VALUE值就是2,以此类推。另外选项组控件里是不能出现多选情况的。

上面个步骤为准备工作,接着是戏肉,请留意。
为命令按钮添加下列单击事件过程:
Private Sub Command1_Click()
If Isnull(Me.Text1)=True then
MsgBox "日期不能为空" '如果日期文本框未填入日期则予以提示
Me.Text1.SetFocus '移动焦点到日期文本框
Exit Sub ‘终止过程
ElseIf IsDate(Me.Text1)=False Then
MsgBox "输入的日期错误" '如果日期文本框填入非日期文本则予以提示
Me.Text1.SetFocus
Exit Sub
ElseIf IsNull(Me.Frame0.Value)=True
MsgBox "未勾选查询字段" '如果未勾选复选框则予以提示
Exit Sub
End If
If Me.Frame0.Value=1 then
DoCmd.OpenQuery "Query_ACW", , acReadOnly '如果勾选了ACW则以只读方式打开查询 Query_ACW
ElseIf Me.Frame0.Value=2 then
DoCmd.OpenQuery "Query_ATT", , acReadOnly
ElseIf Me.Frame0.Value=3 then
DoCmd.OpenQuery "Query_AHT", , acReadOnly
ElseIf Me.Frame0.Value=4 then
DoCmd.OpenQuery "Query_Holding", , acReadOnly
End If
End Sub
注:上述代码中的控件名如果与实际不同,请予以更改。
上机试一试效果吧。

温馨提示:答案为网友推荐,仅供参考