设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2542|回复: 8
打印 上一主题 下一主题

[ADO/DAO] 如何用ADO打开条件查询

[复制链接]
跳转到指定楼层
1#
发表于 2013-3-3 16:58:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ycxchen 于 2013-3-3 17:11 编辑

大家知道,如果是DAO,会用QueryDef定义一个查询对象,后用SQL语句设定条件查询,但用ADO如何打开条件查询呢?看过一些ADO资料,还是没头绪,请教高手。
       我的意思:选择姓名后,用ADO语句打开查询,以查看该人的合同期满是否已经超过了400天。例子中是在查询设定条件的(date()-[结束日期]>400),我现要求用语句来设定,不要在查询中设,防止修改。请帮忙,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2013-3-3 17:40:23 | 只看该作者
与ADO没什么关系。

写一个名曰“到期查询”的查询:

SELECT *, DateDiff("d",Date(),[结束日期])<0 AS 到期
FROM 合同表;

用Dlookup查找某个合同是否到期即可:
if Dlookup("到期","到期查询","客户ID=" & me.客户ID.value & " and 项目='" & me.项目.value & "'")=True then
    msgbox "合同到期了!"
end if
3#
发表于 2013-3-4 00:55:30 | 只看该作者
1、建议不要让用户直接接触到表或者查询,而是通过窗体来处理。
     用查询,在子窗体或者弹出窗体中设置记录集类型为“快照”,那么用户就只能查看不可以修改了。
    【当然锁定控件也可以,不过如果全部字段都禁止修改的话,还是快照方便】

2、如果非要用记录集来执行的话,就用Connection.Execute来执行。set rst =cnn.Execute("select * from 表")。但这只是打开记录集而已,看不到查询对象的。
     如果非要看到查询对象,除了用DAO的QueryDef对象之外,大概只能用Docmd的OpenQuery方法了。

作为学术上研究的话,这问题无可厚非。不过,作为实际应用的话,建议还是采取第一条的办法:在窗体上设置。
4#
 楼主| 发表于 2013-3-4 17:28:03 | 只看该作者
roych 发表于 2013-3-4 00:55
1、建议不要让用户直接接触到表或者查询,而是通过窗体来处理。
     用查询,在子窗体或者弹出窗体中设置 ...

我的想法也一样,我先写一写代码。
5#
 楼主| 发表于 2013-3-4 18:12:47 | 只看该作者
Private Sub Command3_Click()
Dim sql As String
   sql = "SELECT 客户表.姓名, 合同表.项目, 合同表.起始日期, 合同表.结束日期 FROM 客户表 RIGHT JOIN 合同表 ON 客户表.ID = 合同表.客户 WHERE (((Date()-[结束日期])>=400));"
DoCmd.RunSQL sql
End Sub
我认为上面代码不会错,但运行提示出错,请问,如何修改?
6#
发表于 2013-3-4 21:23:09 | 只看该作者
DoCmd.RunSQL sql?{:soso_e120:}
7#
 楼主| 发表于 2013-3-5 10:25:09 | 只看该作者
本帖最后由 todaynew 于 2013-3-5 12:25 编辑
todaynew 发表于 2013-3-4 21:23
DoCmd.RunSQL sql?

看过SQL动作查询的一些资料,明白了为什么执行不了SQL语句。请教版主:运行“SELECT *, DateDiff("d",Date(),[结束日期])<0 AS 到期 FROM 合同表;”查询,为什么“到期”字段显示的值是“-1”的,按我理解, DateDiff函数取得的值应该是日期的差额量的呀。

True=-1
False=0
如此而已
8#
 楼主| 发表于 2013-3-5 16:25:44 | 只看该作者
SELECT DateDiff("d",Date(),[结束日期]) AS a, 合同表.ID, 合同表.客户, 合同表.项目, 合同表.起始日期, 合同表.结束日期
FROM 合同表;


我建了个类似的查询,为何字段不显示-1的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
 楼主| 发表于 2013-3-5 17:03:00 | 只看该作者
明白,<0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 23:14 , Processed in 0.096495 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表