Office中国论坛/Access中国论坛

标题: 关于t小宝版主的 主子窗体批量更新系统 [打印本页]

作者: wx0000888    时间: 2017-7-29 21:32
标题: 关于t小宝版主的 主子窗体批量更新系统
本帖最后由 wx0000888 于 2017-7-31 09:07 编辑

下面是关于 t小宝版主的 主子窗体批量更新系统:
用过的各位网友:
1  DAOtransform  2   ADOtransform  3  ADObatchform   , 后面2,3两个采用ADO绑定用于2007版本以上没有 问题. 只要
Set cnAcc = CurrentProject.AccessConnection
改成
Set cnAcc = CurrentProject.Connection
再添加  rs.CursorLocation = adUseClient
后又加了自定义汇总条,  算是解决了ADO绑定主子窗体无法汇总合计的问题.

自定义汇总条 请看帖子 <完美解决主子窗体ADO事务更新2010版+自定义汇总条>

复制代码但没有DAO绑定主子窗体,直接添加内置的汇总合计的内置功能这样简单好看.  可每次运行两次到三次保存, 就内存溢出'28', 崩溃.  难道真的要放弃使用DAOtransform 吗?
后反复测试, 或许是解决了问题的症结所在,现暂时没出现问题. 明天放贴,发附件.


DAOTransform 在高版本 解决 内存溢出的方法是 , 解除 主表 与 子表的关系, 并在主表 添加一列 <ID(自动编号)>为主键,  字段<订单ID> 取消主键,最好取消索引, 这样在本人 的 老爷电脑里运行101次修改保存 ,   才出现崩溃 , 另外电脑配置稍许好点,内存高的, 应该可以不会再出现 内存溢出了.  请下载附件在你们的电脑里 试试.


作者: wx0000888    时间: 2017-7-30 09:13
本帖最后由 wx0000888 于 2017-7-30 09:15 编辑

网络上出现的 ACCESS 错误 '2455'      '2467'
最大可能不是两次调用 子窗体的错误, 而是请往下看:

举例:
我们正在调试这个 (  "关联字段进行链接"或"代码中使用关联字段进行关联"的主子窗体结构:  比如 主窗体 数据源是 订单 包含字段(订单ID,客户ID,订单日期,运费...) , 子窗体 数据源是 订单明细 包含字段(ID, 订单ID, 数量,单价...), 关联字段就是"订单ID" )  简单的订单查询管理系统.

  我们在调试该系统的时候 ,  原本主窗体的属性中有 "允许添加" 默认选"是" , 否则如何添加数据呢?  我们一般用主窗体中添加一条新数据后属性中"允许添加" 选"否", 而子窗体添加N条数据, 保存后, 再重新添加或修改等操作, 由于调试时出现各种错误, 会把 "允许添加" 默认选成"否"  , 这是致命的错误, 数据不再被添加, 如何新添数据呢,哪怕是只添一条, 所以网友们,在主窗体运行的 添加下面一句
Private Sub Form_Open(Cancel As Integer)

      
  Me.AllowAdditions = True

   .........




作者: wx0000888    时间: 2017-7-30 09:19
论坛难道不更新吗?
作者: tmtony    时间: 2017-7-31 14:06
非绑定的方式 总是不太稳定。
作者: wx0000888    时间: 2017-7-31 21:04
tmtony 发表于 2017-7-31 14:06
非绑定的方式 总是不太稳定。

tmtony 站长, 那个ADOTRANSFORM 和 ADOBATCHFORM  , 比较稳定, 再添加的合计栏, 用起来应该没问题,
作者: wx0000888    时间: 2017-8-6 09:25
本帖最后由 wx0000888 于 2017-8-6 09:26 编辑

总结: 在 高版本的 ACCESS 中 (高于2007版本), 用T小宝版主 的用于主子窗体的 DAOTransForm  的类 是最完美的, 既可以不用临时窗体, 而且高版本本身自带隔行变色, 也不用自制的 自定义汇总条, 因为DAO绑定的窗体 , 可以用内置的"汇总合计"功能. 但唯一的缺陷就是,内存溢出错误'28'或死机

最终解决办法是:   删除几个引发外部程序  RaiseEvent ,   比如  RaiseEvent BeforeUnload(mblDataChange, Msg)
用其它办法,比如 <在类中>设置添加一些用于判断窗体输入是否合法的只读属性等来判断.  如子窗体的记录数必须至少有一条,否则回滚.再
结合<在窗体中>输入是否合法是否完整等的办法来解决. 目前测试下来, 没有再出现问题.   





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3