实战演练之一

本节的示例,可以参考CaseStudy目录下的文件:票据打印.Table。
该文件有两个表,分别为凭证和凭证明细,已经通过凭证ID建立关联。
本节的目的是设计一个窗口,用于打印一个下图所示的凭证:

设计步骤

1、首先新建一个窗口,然后在窗口设计器的“文件”菜单中,单击“页面设置”命令,设置好页面尺寸和边距。

2、在窗口插入一个Table控件,将其绑定到关联表“凭证.凭证明细”,并将其“最小行数”属性设置为6,这样当订单明细不够6行时,会自动补空行。

3、设置Table控件的“显示列”属性设置为:

摘要|186|会计科目_一级科目|126|会计科目_明细科目|130|借方金额|130|贷方金额|130

实际上很少能一次性地设置好"显示列"属性,上面的设置是反复调试后的结果。

4、按照常规方法,设计好窗口,并将相关控件绑定到字段:

5、上图中标有数字的控件,须在DataFormat事件中设置代码,使得打印格式符合我们的要求:

编号 说明 DataFormat事件代码
1 大写金额 e.Text = CUMoney(e.Value)
2 借方金额 e.Text = "¥ " & e.Value
3 贷方金额 e.Text = "¥ " & e.Value
4 凭证标题 If e.Value IsNot Nothing Then
     e.Text = e.Value.Chars(
0) & " " & e.Value.Chars(1) & " 凭 证"
End
If
5 日期 e.Text = Format(e.Value,"yyyy年MM月dd日")

6、设置按钮的Click事件代码。

“上一条”按钮的Click事件代码设为:

With Tables("凭证")
    .Position = .Position -
1
End
With

“下一条”按钮的Click事件代码设为:

With Tables("凭证")
    .Position = .Position +
1
End
With

“打印”按钮的Click事件代码设置为:

Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.Preview()

多页凭证的设计

如果明细表的行数比较多,可能一份凭证需要分多页打印,要完成这个任务很简单,只需设置最大行数属性即可:

上图最小行数和最大行数属性都设置为6,这样明细的行数不到6行时,会自动补充空行,超过6行时,会分页打印凭证,每页打印6行。


本页地址:http://www.foxtable.com/webhelp/topics/1607.htm