|
本帖最后由 wx0000888 于 2016-7-5 12:14 编辑
完美解决 ACCESS2010版本主子窗体ADO事务更新+自定义汇总条
原理:
1,利用了 [适当冗余] , 即有些查询得到的用于辅助的字段也加入到表中,只要在数据填写完整并保存的时候同时更新即可. 这样的查询语句简单,速度加快
2,利用了 ADO 事务处理, 这样可以 解决临时表的问题.
3,利用了 ACCESS2007版本以上的特性, 首先查询主子窗体用DAO绑定,具有汇总功能, 修改管理主子窗体[ADO事务处理没有汇总功能]我们就创造汇总功能 , 并且这个版本以上具有隔行变色的效果.
4,利用了数组索引与控件的ColumnOrder 结合起来 , 以及控件的ColumnHidden属性 取得 屏幕显示的实际控件(字段)的宽度和左右排序位置,这样就可使得汇总条随着子窗体的字段大小变动而变动,包括隐藏字段.
5,利用的 recordset.getRows(,1,字段名) 得到数组, 这样只需要在数组中处理问题,就没有了记录循环或窗体和控件的循环 ,屏幕就不会闪烁了.
用法:
首先 ,汇总条 (frmCollectBar) , 主窗体(frmMain)就是汇总条要加入的窗体比如为, 子窗体(frmContractEdit_chd)就是与汇总一起变动的,用来输入多条数据的窗体.
在子窗体中的控件的 tag属性中, 需要在 汇总的 控件(字段),写上 汇总字段名称, 比如 子数据窗体上的控件名称为 txtQuantity , 数据源为 Quantity ,需要把这一列的 所有 数据汇总 到 汇总条上相应的控件上. 那么 只要把该控件的数据源Quantity填写到 tag属性中,不要有双引号.
同理 txtPrice 的 数据源 为 Price 那么它 的 tag 属性中 写人 Price, 如果 某个控件的值或数据源 是相减 或 相加, 比如 txtUnCompletionQuantity 是由
txtQuantity-txtStockOutQuantity 这两个控件的差值得到, 且它们的数据源分别是Quantity,StockOutQuantity, 那么 只需要在txtUnCompletionQuantity的tag属性中 写入 Quantity,-,StockOutQuantity , 同理也不需要双引号 , 如果是相加 txtQuantity+txtStockOutQuantity ,那么 只需要在txtUnCompletionQuantity的tag属性中 写入 Quantity,+,StockOutQuantity. 除此以外其他所有控件的tag属性 清空.
其次, 在加汇总条的窗体的(主窗体)的OPEN事件代码中 加入代码 Call frmTotalBar(Me.Name, "frmContractEdit_chd", "frmCollectBar")
最后在, 在子窗体代码事件中加入以下代码.
Private Sub Form_Click()
Call frmTotalBar(Me.Parent.Name, Me.Name, "frmCollectBar")
End Sub
另外注意汇总条(frmCollectBar) 与 子窗体 左对齐, 一样宽度. 汇总条 定位 沿顶端伸展 子窗体 定位 向下和水平伸展.
汇总条不放在底部是因为, 子数据窗体 数据写入多行后,会出现滚动条(是数据表滚动条,不是窗体滚动条,所以禁不了), 这样的话,汇总条会被滚动条隔开,毫无违和感
并附上最新附件.. ,请下载最新附件, 有描述的那个.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|