设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] [讨论] 对t小宝版主的作品[主子窗体批量保存]的疑惑

[复制链接]
11#
 楼主| 发表于 2016-6-27 14:13:09 来自手机 | 只看该作者
1,添加合计行,本人正在利用另一个子窗体模拟,现在可以同步列宽大小,就是在哪个控件上设计合计函数,考虑到通用性正在完善。

2,既然无法复杂查询,那么其他用来对比查询的字段来源就用dlookup,dsum等等域函数解决。
来自: 微社区
12#
 楼主| 发表于 2016-6-27 14:18:32 来自手机 | 只看该作者
等会儿上图,
来自: 微社区
13#
发表于 2016-6-28 13:38:53 | 只看该作者

等会是啥时候?
14#
 楼主| 发表于 2016-6-28 22:13:44 | 只看该作者
本帖最后由 wx0000888 于 2016-6-28 22:31 编辑

图片就不搞了, 直接上菜.    2010版哦.   

自定义汇总条 + ADOTransForm(事务处理的)

1   菜单按钮, 本来想用TOOLBAR 的 但不稳定,还是内置常用控件组合最稳定了,现在正在设计成 红尘如烟的 通用系统主面板上的 漂亮大按钮,只不过缩小版罢了, 鼠标点过去漂亮是显示,  已有眉目了, 再完善完善.   
2  汇总条上的自定义函数还未搞, 设想是把每个这个窗体的主要控件的汇总函数放在 表中, 等有空的时间再搞.

说到底,就是利用 columnorder 和 columnhidden

贴上自定义汇总条代码
  1. Public Sub frmTotalBar(strMain As String, strDetail As String, strBar As String)  '自定义汇总行
  2. '   On Error Resume Next
  3.     Dim ctl As Control
  4.     Dim lngW As Long
  5.     Dim arrControl() As String
  6.     Dim Index As Integer
  7.     Dim Total As Integer
  8.     Dim frm As Object
  9.     Dim frmBar As Object
  10.     Dim ctlName As String
  11.     Set frmBar = Application.Forms(strMain).Controls(strBar).Form
  12.     Set frm = Application.Forms(strMain).Controls(strDetail).Form    '
  13.     ReDim arrControl(1 To frmBar.Controls.Count)   '上标1开始
  14.     For Each ctl In frm.Controls
  15.         If ctl.ControlType <> acLabel Then
  16.             ctlName = ctl.Name
  17.             If ctl.ColumnHidden = False Then
  18.                 arrControl(ctl.ColumnOrder) = ctlName '利用数组的索引,自动排序,然后再经过后面过滤无用的,截取有用的(非隐藏的).
  19.             End If
  20.         End If
  21.     Next
  22.    
  23.     frmBar.Box0.SetFocus                 '必须转移焦点,否则无法隐藏
  24.     For Index = 1 To 20                      '整理数组,有效的数组前置
  25.         frmBar.Controls("txtControl" & Index).Visible = False
  26.         If arrControl(Index) <> "" Then
  27.             Total = Total + 1
  28.             arrControl(Total) = arrControl(Index)
  29.             frmBar.Controls("txtControl" & Total).Visible = True
  30.         End If
  31.     Next
  32.     For Index = 1 To Total                       '过滤无用的,截取有用的(非隐藏的) ,  k是下标,1到k位置里面都是有用的,非隐藏的
  33.         If frm.Controls(arrControl(Index)).ColumnWidth = -1 Then            '当新建的字段,其默认屏幕显示宽度为-1,实际是1410
  34.             frmBar.Controls("txtControl" & Index).Width = 1410    '13.2095  (1410)
  35.         Else
  36.             frmBar.Controls("txtControl" & Index).Width = frm.Controls(arrControl(Index)).ColumnWidth
  37.         End If
  38.         If Index = 1 Then
  39.             frmBar.Controls("txtControl" & Index) = "汇总"               '第一列 标题一般为 "汇总"
  40.             lngW = 285                      'Box的宽度作为起点(最左)
  41.         Else
  42.             lngW = lngW + frmBar.Controls("txtControl" & (Index - 1)).Width
  43.         End If
  44.         frmBar.Controls("txtControl" & Index).Left = lngW
  45.     Next
  46.     Erase arrControl()                  '释放内存
  47.     Set ctl = Nothing
  48.     Set frm = Nothing
  49.     Set frmBar = Nothing
  50. End Sub
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

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

GMT+8, 2025-2-22 19:32 , Processed in 0.082996 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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