设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[ADO/DAO] ADO的一个小问题

[复制链接]
跳转到指定楼层
1#
发表于 2006-7-3 03:17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Dim cnnDB As New ADODB.Connection   '定义一个ADO链接
    Dim rstDB As New ADODB.Recordset    '定义一个ADO记录集
    Dim cmmDB As New ADODB.Command
    Dim strSQL As String
   
    Set cnnDB = CurrentProject.Connection   '定义cnnDB等于当前连接
   
    'sql功能:输入日期,列出到期日期在输入日期之前的记录,并临时建立“临时表_结转数据”库
    strSQL = "SELECT 借据资料.记帐日期, 客户资料.客户号, 借据资料.贷款帐号 AS 贷款帐号, 客户资料.借款户名称, 借据资料.借款日期, 借据资料.到期日期, 借据资料.结清 INTO 临时表_结转数据 FROM 客户资料 INNER JOIN 借据资料 ON 客户资料.客户号 = 借据资料.客户号 GROUP BY 借据资料.记帐日期, 客户资料.客户号, 借据资料.贷款帐号, 客户资料.借款户名称, 借据资料.借款日期, 借据资料.到期日期, 借据资料.结清 HAVING (((借据资料.到期日期)<[Forms]![科目结转]![结转日期]) AND ((借据资料.结清)=False))"
    Set rstDB = cnnDB.Execute(strSQL)

以上语句总是报“至少一个参数没有指定”错误

我是Access初手,对很多ADO不了解,希望大家帮帮我,先过了!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-7-3 03:39:00 | 只看该作者
'sql功能:输入日期,列出到期日期在输入日期之前的记录,并临时建立“临时表_结转数据”库
    strSQL = "SELECT 借据资料.记帐日期, 客户资料.客户号, 借据资料.贷款帐号 AS 贷款帐号, 客户资料.借款户名称, 借据资料.借款日期, 借据资料.到期日期, 借据资料.结清 INTO 临时表_结转数据 FROM 客户资料 INNER JOIN 借据资料 ON 客户资料.客户号 = 借据资料.客户号 GROUP BY 借据资料.记帐日期, 客户资料.客户号, 借据资料.贷款帐号, 客户资料.借款户名称, 借据资料.借款日期, 借据资料.到期日期, 借据资料.结清 HAVING (((借据资料.到期日期)<[Forms]![科目结转]![结转日期]) AND ((借据资料.结清)=False))"
  

参数要分出来,用&来连接。日期要用#框起来。
3#
 楼主| 发表于 2006-7-3 05:56:00 | 只看该作者
哦,原来这样,谢谢了!

上面语句运行后,还有1个小错,就是提示“临时表_结转数据”这个表已存在,如何避免?
4#
发表于 2006-7-3 07:14:00 | 只看该作者
fan0217  你好

请教DAO中引用窗体的日期作为查询准则如何写?

帮我改改:

Dim M As DAO.Recordset

Set M = CurrentDb.OpenRecordset("SELECT 订单明细.订单ID, 订单明细.产品ID, 订单.订购日期, Sum([数量]) AS 出量 " _
& "FROM 订单 INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID " _
& "GROUP BY 订单明细.订单ID, 订单明细.产品ID, 订单.订购日期;")
& "HAVING (((订单.订购日期)>=[forms]![A先先]![订购开始日期] And (订单.订购日期)<=[forms]![A先先]![订购终止日期]))<>0));")
'M.Filter = "[订购日期] =[forms]![A先先]![订购开始日期]"
Set M = M.OpenRecordset
Do While Not M.EOF

Debug.Print M("订购日期")
Debug.Print M("产品ID")
Debug.Print M("出量")
M.MoveNext
Loop
5#
发表于 2006-7-3 17:40:00 | 只看该作者
[em08]把你的例子发上来吧。
6#
发表于 2006-7-3 19:51:00 | 只看该作者


我试出来了:

Dim M As DAO.Recordset

Set M = CurrentDb.OpenRecordset("SELECT 订单明细.订单ID, 订单明细.产品ID, 订单.订购日期, Sum([数量]) AS 出量 " _
& "FROM 订单 INNER JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID " _
& "GROUP BY 订单明细.订单ID, 订单明细.产品ID, 订单.订购日期;")
M.Filter = "[订购日期]>=#" & Format([Forms]![A先先]![订购开始日期], "yyyy-mm-dd") & "# and [订购日期]<=#" & Format([Forms]![A先先]![订购终止日期], "yyyy-mm-dd") & "# and [产品ID]=" & [Forms]![A先先]![ID] & ""
Set M = M.OpenRecordset
Do While Not M.EOF



Debug.Print M("订购日期")
Debug.Print M("产品ID")
Debug.Print M("出量")
M.MoveNext
Loop


但速度很慢,帮我看看问题在哪?
7#
发表于 2006-7-3 20:15:00 | 只看该作者
我的后端是SQL不好上传.

我想再加

& "&HAVING [订购日期]>#6/1/2006#"_

想来提高速度就提示:语法错误(操作符丢失) 在查询表达式'盯购日期&'中

不好意思,第一次玩DAO,有点晕.
8#
发表于 2006-7-3 20:21:00 | 只看该作者
直接基于查询打开记录集,又没问题,晕呀.

9#
 楼主| 发表于 2006-7-3 21:53:00 | 只看该作者
还有1个小错,就是提示“临时表_结转数据”这个表已存在,如何避免?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-2 03:06 , Processed in 0.080221 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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