设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: HG
打印 上一主题 下一主题

[宏/菜单/工具栏] 單連接,非綁定窗體,同時涉及多基表數據處理,高深探討

[复制链接]
11#
 楼主| 发表于 2002-6-19 02:21:00 | 只看该作者
這個問題,再也沒人研究嗎?
如果不是我記起,好像就是石沉大海了。
12#
发表于 2002-6-19 02:43:00 | 只看该作者

把你那东西发上来

把你那东西发上来,我看看,实在上传不了,发我信箱好了!
13#
 楼主| 发表于 2002-6-19 17:26:00 | 只看该作者

ADP何去何從?之一.問ADP是什么,有什么用?

SDLHLSD如果您看到我的前端會罵我的,什么都沒有,因為我正在為此法而想辦法哪?
差不多一星期了,還是沒有想通,想來想去,好像除了觸發器很難作到。便觸發器又出現上述的問題,請見本貼的連接或我發表的哪篇用關觸發器的探討(連接為:http://www.office-cn.net/bbs/dispbbs.asp?boardID=2&RootID=5877&ID=5877)
不是我小氣,而是現在無能力解決。
望熱心的網友,或高高手們拉一把小弟吧。快為此絕望 了。
555555555555555555555555555555555555555555555555555555555555555555555555555555555555


[此贴子已经被HG于2002-6-19 9:26:22编辑过]

14#
发表于 2002-6-19 19:44:00 | 只看该作者
首先得给你点小小的忠告:你这种不区分大小写的代码写作习惯最好改改。不管是在自己写程序还是在发贴的时候都一样。
    你这个问题大概是这样的:由某个表的数据插入---触发---更新另一个表(大概是即时库存表之类的东东吧?),当更新后的值<0时,即取消更新,但你却不能取消前面触发此动作的因事件。
    这个问题最简单的解决方法是在前端用BeforeUpdate事件即行判断,即用这个还未写入库的数量与库存表进行比对,如果超出现有的库存,即显示提示并取消操作。这个方法可以叫做
     ----   拦
另外的方法有些复杂,这里只给些线索自己去研究:
   我们开发应用程序前端的时候,大多使用的记录集之LockType都是使用:adLockBatchOptimistic。即缓存更新,在前端所有的操作都只是写入到缓存中,直到显式的调用UpDateBatch方法,才真正将变化提交给服务器。
   将这种方法与事务处理结合起来,我们几乎可以控制所有我们可以预见到的错误。
   不过得说明一点的是,第二种方法还不能说是方法,对ADP来说,只能说是一种思路,因为本人近来多用Delphi来写前端,这些个方法具体的实现有时候很容易混淆,未经实验(指用ADP)。
15#
 楼主| 发表于 2002-6-19 20:15:00 | 只看该作者
freemanager好方法,我謝指點,現我正向您說說方向努力。
便不知,在幫定窗體中,是否可以准確攔住insert 和update操作。
因access在幫它窗體時,中仍兩個事件可以用在引處.就是before/after insert or update
但我現在要在插入同量判斷另一表中的值是否小于現在所插入的值,
同時在更新時,我要從另一表的備份值中,減去正更新表中的值,同時更新另一表。
這樣同是涉即三個表的操作,是不是只可是用事務來處理?
會不會befor/after insert or update事件,攔不住哪?
是用幫定窗體,還是用非邦定窗體好哪?
還有,如果用觸發器,實現的快一些。(因我較熟悉,而VBA只剛起步)
但在觸發器中,為何不可以取消操作時,同時取消操作已觸發的表。
-------------------------------------------------------------
再談觸發器,在獨發時,會同時產生兩個虛表inserted,deleted.
它們分別存來的是待操作的值。(比如在update時,兩個虛表都存在,在insert 或delete時都只是對應的虛表才存在)
也就是說,可不可以用虛表的值,來作判斷,來同步操作獨表時的基表。
freemanager可否再談談。從您哪里學了不少經驗,多謝。
16#
 楼主| 发表于 2002-6-19 20:19:00 | 只看该作者
祥細如下:
如果表A 表B 表C 其中表A為動態庫存,表B為調貨表,表c為第一次入庫備份。
現在是想在表B中實現對另兩個表的操作.
17#
发表于 2002-6-20 01:27:00 | 只看该作者
一、拦得住拦不住,只需几行代码,动手试一下即可知道。
二、要想保持数据完整性,对多表的关联操作除了用事务以外,想不出还能有什么别的方法。
三、非绑定窗体只适合处理单一窗体,即每次只处理一条记录,否则,还是用绑定窗体的好。比如先头你的那个窗体,你得在窗体上预设(N = 记录数 * 字段数)个未绑定控件才能同时显示多条记录。
四、至于哪个操作能够回滚,得看它处在哪个级别的事务中,你在触发事件中开启一个事务,当然只能回滚此事务中的所有操作。
18#
发表于 2003-4-15 19:32:00 | 只看该作者
up
19#
发表于 2003-5-17 01:11:00 | 只看该作者
up
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-21 20:24 , Processed in 0.094493 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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