Office中国论坛/Access中国论坛

标题: 如何在同一个查询中得出两个相反的结果? [打印本页]

作者: DDTA    时间: 2009-2-19 18:59
标题: 如何在同一个查询中得出两个相反的结果?
在一个《状态》字段里有“开始;暂停;讨论;跟进;取消;完成”内容,希望能在一个查询中根据查询条件得出“完成”和“未完成”两个结果,如果用两个查询就很简单,但是后面的工作麻烦,如果能通过组合框选择“完成”和“未完成”后执行一个查询就能分别得出需要的结果,是不是需要用到代码?有没有比较简单的思路,谢谢大家!
作者: todaynew    时间: 2009-2-19 19:06
很简单,排序一下就得到了。
作者: DDTA    时间: 2009-2-19 19:12
很简单,排序一下就得到了。
todaynew 发表于 2009-2-19 19:06

我要用一个查询的出两个结果,一个是《状态》字段中“完成”的记录,另一个结果是不包括“完成”的记录,是不是一定要通过VBA才能实现。
作者: todaynew    时间: 2009-2-19 19:42
本帖最后由 todaynew 于 2009-2-19 19:57 编辑
我要用一个查询的出两个结果,一个是《状态》字段中“完成”的记录,另一个结果是不包括“完成”的记录,是不是一定要通过VBA才能实现。
DDTA 发表于 2009-2-19 19:12

好像和VBA无关,呵呵。

你想想看,你的状态栏中有的记录是完成,有的是未完成。你如果想把他们都列示出来的话,还是这张表这些记录。只是为了看着方便起见,把他们按状态栏排序一下,让完成的记录和未完成的记录相对集中排列。

实际上从你的表述中我猜想你需要的是解决另外一个问题。那就是一个查询,在窗体中既可以显示完成的,也可以根据需要显示出未完成的。如果是这样的话,还是用这个查询,只是需要做一个筛选而已。这时候需要用到VBA或者宏了。如:

me.子窗体.Form.RecordSource=“select * from 表”
Me.子窗体.Form.Filter = "状态='" & me.状态 &"'"
Me.子窗体.Form.FilterOn = True

当在组合框me.状态中选择“完成”时,筛选出完成的记录,反之亦然。
作者: Henry D. Sy    时间: 2009-2-19 19:56
既要完成又要未完成,那就什么条件也别设
作者: ACMAIN_CHM    时间: 2009-2-19 20:26
通过组合框选择“完成”和“未完成”后执行一个查询就能分别得出需要的结果

sSQL = "select * from yourTable where " & IIF(me.组合框.value="完成","","NOT " )  & " 状态='完成'"

同样,如果你利用查询也可以。换成 FORMS!myForm.组合框 就行了。



******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
作者: kangking    时间: 2009-2-19 20:53
我想得简单些,吸在查询中设置条件为:状态=完成 OR 状态=未完成
作者: todaynew    时间: 2009-2-19 21:45
我想得简单些,吸在查询中设置条件为:状态=完成 OR 状态=未完成
kangking 发表于 2009-2-19 20:53


馊主意,这不等于不写吗?呵呵
作者: DDTA    时间: 2009-2-19 23:05
好像和VBA无关,呵呵。

你想想看,你的状态栏中有的记录是完成,有的是未完成。你如果想把他们都列示出来的话,还是这张表这些记录。只是为了看着方便起见,把他们按状态栏排序一下,让完成的记录和未完成的记录 ...
todaynew 发表于 2009-2-19 19:42


您理解的非常正确,我就是想在一个窗体中可以显示两种相反的结果,如果使用两个查询就要做两个窗体,后续很多工作都要重复,我主要用ACCESS管理部门的工作,以前学过一点,现在忘了的差不多了,上传个附件,大家帮我看看,谢谢了!
作者: DDTA    时间: 2009-2-20 01:46
通过组合框选择“完成”和“未完成”后执行一个查询就能分别得出需要的结果

sSQL = "select * from yourTable where " & IIF(me.组合框.value="完成","","NOT " )  & " 状态='完成'"

同样,如果你利用查询也可 ...
ACMAIN_CHM 发表于 2009-2-19 20:26


将上面的代码做为一个查询执行后,选择“完成”结果正常,但是选择“未完成”后没有查询到结果,好像“NOT"没有起作用
作者: chaojianan    时间: 2009-2-20 11:32
10# DDTA

请参考我做的例子。
作者: andymark    时间: 2009-2-20 11:41
Private Sub Command4_Click()
'完成
Me.Filter = "工作状态= '完成'"
Me.FilterOn = True

End Sub

Private Sub Command5_Click()
'未完成
Me.Filter = "工作状态<>'完成'"
Me.FilterOn = True

End Sub
作者: DDTA    时间: 2009-2-20 13:06
10# DDTA

请参考我做的例子。
chaojianan 发表于 2009-2-20 11:32
\


谢谢,看了你的例子我才搞懂,其实我好多内容都还没有接触到。还要继续学习!
作者: DDTA    时间: 2009-2-20 13:08
Private Sub Command4_Click()
'完成
Me.Filter = "工作状态= '完成'"
Me.FilterOn = True

End Sub

Private Sub Command5_Click()
'未完成
Me.Filter = "工作状态'完成'"
Me.FilterOn = True

End Sub
andymark 发表于 2009-2-20 11:41


哈哈,简单实用,解决了我的难题,多加了几个FILTER,我的工作记录一下变的非常清晰了!
作者: todaynew    时间: 2009-2-20 16:55
本帖最后由 todaynew 于 2009-2-20 16:58 编辑
您理解的非常正确,我就是想在一个窗体中可以显示两种相反的结果,如果使用两个查询就要做两个窗体,后续很多工作都要重复,我主要用ACCESS管理部门的工作,以前学过一点,现在忘了的差不多了,上传个附件,大家 ...
DDTA 发表于 2009-2-19 23:05


就是一张薄纸而已,呵呵。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3