新建表单NewReport
新建表单NewReport(<模板名称>)
方法:
用VBA程序来新建一份表单,需要调用如下的接口方法:
NewReport(<模板名称>)
利用NewReport方法,会针对指定模板建立一份空表单。如果需要在建立表单的同时为表单内容赋值,还需要在newReport之前调用addInitData方法:
AddInitData(<目的字段名>,<赋值表达式>)
其中“赋值表达式”可以是本模板的字段名
示例:
在示例数据库中有如下模板,列举所有客户的信息

当点击【录入订单】按钮之后,会打开一份新订单,并且把当前选中(桔黄底色的那一行)的客户信息,自动传递到新订单上。
为了实现上述目的,我们需要做三件事。
首先,我们要识别当前客户是在哪一个。“当前客户”指的是光标所在行的客户。但是,当用户点击按钮的时候,输入焦点在按钮上,也就是说,在按钮的Click事件中无法读取当前行号,所以,需要在点击按钮之前,就把当前行号记录下来。我们的解决方案是,用J2单元格存放当前行号信息,在workSheet_SelectionChange事件中,把当前行号记录到J2单元格中去。也就是说,每当光标在工作表上移动,J2单元格总是随时反映当前的光标所在行号。
类似地,把当前行的客户编号记录到H2单元格,记录它的目的是定义条件格式,使得当前行的底色总是显示成桔黄色。
第三,在【录入订单】按钮的Click事件中,用VBA代码新建订单,并且把当前行的客户信息传递过去,代码如下:
1 Private Sub cmdNewOrder_Click()
2 Dim r As Long
3 r = Range("J2") '确定当前行号
4
5 '如果当前行没有数据,什么也不做,返回。
6 If Range("B" & r) = "" Then Exit Sub
7
8 '用当前行的数据新建订单
9 Dim oAdd As Object
10 Set oAdd = Application.COMAddIns("ESClient.Connect").Object
11
12 oAdd.addInitData "客户编号", Range("B" & r)
13 oAdd.addInitData "客户名称", Range("C" & r)
14 oAdd.addInitData "地址", Range("D" & r)
15 oAdd.addInitData "电话", Range("E" & r)
16
17 oAdd.newReport "订单"
18
19 Set oAdd = Nothing
20
21 End Sub
第3行,确定当前行号r。
第6行,如果当前行的客户编号为空,说明当前行不是有效的客户信息,什么也不做,直接退出。
第9~10行,声明接口对象,并赋值。
第12~15行,指定要传递到新表单上的数据。
第17行,新建订单并打开,同时把12~15行指定的数据传递过去。
第19行,释放接口对象。
|