ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4088|回复: 10

请问下面这段程序为什么出错???

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-2-24 10:38 | 显示全部楼层 |阅读模式
下面这段程序在运行时出现"microsoft jet 数据库引擎找不到输入表或查询表"rsl2",确定它是否存在,以及名称的拼写是否正确",程序停止在DSUM(), 我检查过,表的名字正确无误,不知是因为什么出错? 请指点迷津,谢谢! Public Sub 补填底价()

Dim varBalance As Currency, strLedger As String, 表2 As String
Dim rs1 As ADODB.Recordset, rsl2 As ADODB.Recordset
Set rs1 = New ADODB.Recordset
Set rsl2 = New ADODB.Recordset

'指定rs1的联结数据库为目前打开的数据库
rs1.ActiveConnection = CurrentProject.Connection
rsl2.ActiveConnection = CurrentProject.Connection
On Error GoTo 错误式
strLedger = InputBox("请输入你要补余额的分类帐表的名称", "系统提示", "销售日报DT")
表2 = InputBox("请输入你要查询的分类帐表的名称", "系统提示", "底价变动")
'使用open方法打开刚生成的表「??分类帐」
rs1.Open strLedger, , adOpenKeyset, adLockOptimistic, adCmdTable
rsl2.Open 表2, , adOpenKeyset, adLockOptimistic, adCmdTable
'先设余额等于零
varBalance = 0
'使用Do Loop循环在表记录集合中逐笔往下计算底价
Do Until rs1.EOF
'rs1.CancelUpdate
varBalance = DSum("rsl2!单价", "rsl2", "rsl!日期 < rsl2!日期 And rsl!机型 = rsl2!机型")
rs1("底价") = varBalance
rs1.Update
rs1.MoveNext
Loop
MsgBox "底价字段已替你补好了,你不必自己计算"
rs1.Close
rsl2.Close
Set rs1 = Nothing
Set rsl2 = Nothing
DoCmd.SelectObject acTable, strLedger, True
DoCmd.OpenTable strLedger, acViewNormal, acEdit
DoCmd.GoToControl "底价"
错误式:
If Err.Number <> 0 Then
MsgBox "错误讯息:" & Err.Description & Err.Number
Else
MsgBox "没有错误发生,Err代码是:" & Err.Number
End If
Exit Sub
End Sub
[此贴子已经被作者于2004-2-24 10:39:10编辑过]

TA的精华主题

TA的得分主题

发表于 2004-3-11 11:20 | 显示全部楼层
清将下列语句(不好意思,有一个小小的错误先已重新修订): varBalance = DSum("rsl2!单价", "rsl2", "rsl!日期 < rsl2!日期 And rsl!机型 = rsl2!机型")
改为: varBalance = DSum(表2 & "!单价", 表2 , strLedger & "!日期 < " & 表2 & "!日期 And" & strLedger & "!机型 = " & 表2 & "!机型") 就OK了。
[此贴子已经被作者于2004-3-12 11:25:30编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-3-16 11:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我想在表2中把符合条件的数据求和后,填入到表1中, 这就像在EXCEL中的条件求和。在表1中从第一条记录开始,用每一条的日期与表2中的所有记录的日期进行比较,把表2中所有符合条件的记录进行求和;把求出的和填入到表1中的相应记录中。 现在我知道用DSUM好像不能实现这样的功能,这样用DSUM求和会返回NULL 请问用什么方法能实现这种类似EXCEL中的条件求和

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-3-17 13:38 | 显示全部楼层
我现在知道用DSUM不能达到达上面的效果。 我想知道的是怎样能达到上面我说的目的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-3-18 15:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你的意思是说再另定义一个变量.然后将表1的中值再赋给这个变量,在DSUM中引用这个变量,即可以解决DSUM不能从两个表中取数的限制了??

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-3-18 16:08 | 显示全部楼层
我刚试过了,出现"无效使用NULL",不知道为什么?

TA的精华主题

TA的得分主题

发表于 2004-3-18 18:20 | 显示全部楼层
记录中有空值,请使用 NZ(rs("字段"),"") 屏蔽掉
[此贴子已经被作者于2004-3-18 18:20:12编辑过]

TA的精华主题

TA的得分主题

发表于 2004-3-18 16:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-3-17 17:35 | 显示全部楼层
最简单的办法,写一个双循环即可 varBalance = DSum("单价", "rsl2", "日期>#" rsl!日期 "# And rsl2!机型='" & rsl!机器型 & "'")

TA的精华主题

TA的得分主题

发表于 2004-3-17 01:07 | 显示全部楼层
你可以参考一下DSUM 函数的帮助,注意,ACCESS的DSUM 和EXCEL的完全不同。 DSUM 只支持一个表。ACCESS中使用最多的是SQL而不像EXCEL中是函数
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-14 14:53 , Processed in 0.035426 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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