设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5868|回复: 19
打印 上一主题 下一主题

如何用存储过程实现累计?

[复制链接]
跳转到指定楼层
1#
发表于 2002-10-28 20:33:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
'如何用存储过程实现累计?用存储过程如何实现下列的程序所能做到的功能
'表的名称:tbleA  有2个字段,收入 纪录平时每一笔的收入金额,收入累计 用来做每天的累计收入
sub lei_ji()
dim a as long
dim rs as dao.recordset
set rs = currentdb.openrecordset("tableA")
rs.movefirst
do untile rs.eof
a=rs("收入")+a
rs.edit
rs("收入累计")=a
rs.update
rs.movenext
loop
end sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
20#
发表于 2002-10-30 01:44:00 | 只看该作者
笨,觸發器,在觸發時,並沒有數據入即寫入基表,而是把數據寫在一個虛表上,你可以從虛表中讀取數據,然後累加,如果觸發失敗,再減去剛才累加的值(即復原)這樣都是一個人對某一種語言使用的熟練成度所致的。不是嗎?
19#
 楼主| 发表于 2002-10-30 01:18:00 | 只看该作者
[upload=htm]http://www.office-cn.net/vvb/uploadimages/200210291712349216.htm[/img]
很简单,只要用存储过程实现上述表格即可。
要求也只有2个,第一,由于网络的问题,上述过程必须适应 56K的传输
第二,所有生成后的数据必须是临时的,也就是说一旦生成,看过以后就不要了,不要有数据留在数据库里

我可以用ADODB.RECORDSET + 临时表 实现上述功能,但速度太慢了
我的数据库是 C/S 结构  ACCESS XP + SQL 2000 + INTERNET

其实要实现的所有功能我都能编程用  VBA 实现,缺点非常明显——太慢!我必须要转为服务器端,而 ADP 转为服务器端只有一个办法,用存储过程


[此贴子已经被作者于2002-10-29 17:18:28编辑过]

18#
 楼主| 发表于 2002-10-30 01:04:00 | 只看该作者
触发器看来无法达到要求,因为如果我有2张表,在每一笔输入后计算到这笔业务为止的累计值是不可行的

[此贴子已经被作者于2002-10-29 17:04:04编辑过]

17#
发表于 2002-10-29 19:57:00 | 只看该作者
呵呵,原來如此,看來用觸發器是最好的選 擇啦。
16#
发表于 2002-10-29 19:37:00 | 只看该作者
这样做符合用户习惯,看起来跟传统的账本一样。
15#
发表于 2002-10-29 19:22:00 | 只看该作者
先用觸發器來實現每筆累計,然後再用集合函數實現每天累計.
你只有這樣作了,別無途。記住要給用戶有UNDO的功能。
增加記錄,累計值增加,減少記錄,累記值減少,修改記錄,累記值會具情況變化。
14#
 楼主| 发表于 2002-10-29 18:31:00 | 只看该作者
我上述说的理由还不够吗?理由很简单,客户要求实现用查询来显示每天的现金及银行存款余额,之所以要用查询显示是因为他可以用ctrl+c拷贝到其他地方再编辑或再处理
13#
发表于 2002-10-29 16:41:00 | 只看该作者
還是不明白,你為什麼要這樣累計,有什麼作用,一般很少人這樣累計的。我可以說下思路。
先用觸發器來實現每筆累計,然後再用集合函數實現每天累計,不行嗎?關鍵是我想不也這樣作的理由。
12#
 楼主| 发表于 2002-10-29 04:20:00 | 只看该作者
上述语句运行失败,其操作的结果只是分别汇总当天数据,一天只有一个汇总值,而且到第二天即无法累计
数据源及正确结果如下:
日期       收入金额    累计金额
2002-01-01    200,000     200,000
2002-01-01    400,000     600,000
2002-01-01    500,000    1,100,000
2002-01-02    600,000    1,700,000
2002-01-02    700,000    2,400,000
2002-08-05   5,000,000    7,400,000



您的过程运行结果如下:
日期               累计金额
2002-01-01            1,100,000
2002-01-02            1,300,000
2002-08-05            5,000,000


这么说吧,就和
select day(日期) as 日,sum(收入金額)as day_sum
from 收入表
group by day(日期)

的结果完全一致

[此贴子已经被作者于2002-10-28 20:19:58编辑过]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-30 00:27 , Processed in 0.091447 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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