用Access2007解决支票打印的日期大写问题


    财务人员都晓得,转账支票的出票日期是需求大写的 。假如用手写,固然 可以直接填写成大写,但假如设计专用软件进行套打,每张支票都在固定位置填写大写会很麻烦,也没有必要 。这里仅以access2007设计为例,给这方面的 爱好者提供一个思路 。

    一、先设计一个Access2007表,加入转账支票可能需求的字段, 比方付款人名称、付款人账号、收款人名称、付款金额、出票日期等等 。其中的“出票日期”设成“日期”类型,默许值 可以设成“date()”(即当天日期) 。表设计好后命名 保留备用 。

    二、新建模块,并输入以下内容

Public Function Udate(mDATE As Date, mYMD As Integer) As String

'用法 Udate(#1/2/2005#, i)

'i=1  贰零零伍

'i=2 零壹

'i=3 零贰

'i=0 贰零零伍年零壹月零贰日

    Dim i As Integer, iD As Integer

    Dim strDT(2) As String, strS As String

    Dim strD(0 To 9) As String * 1

        strD(0) = "零"

        strD(1) = "壹"

        strD(2) = "贰"

        strD(3) = "叁"

        strD(4) = "肆"

        strD(5) = "伍"

        strD(6) = "陆"

        strD(7) = "柒"

        strD(8) = "捌"

        strD(9) = "玖"

        For i = mYMD + (mYMD <> 0) To mYMD + (mYMD <> 0) - (mYMD = 0) * 2

            If i = 0 Then

            iD = Year(mDATE)

               strDT(i) = strD(iD \ 1000) & strD((iD \ 100) Mod 10) & strD((iD \ 10) Mod 10) & strD(iD Mod 10)

            Else

               If i = 1 Then iD = Month(mDATE) Else iD = Day(mDATE)

               If iD > 9 Then strS = "拾" Else strS = ""

                strDT(i) = strD(iD \ 10) & strS & strD(iD Mod 10)

                If iD > 9 And iD Mod 10 = 0 Then strDT(i) = "零" & Left$(strDT(i), 2)

            End If

        Next

        Select Case mYMD

        Case 0

            Udate = strDT(0) & "年" & strDT(1) & "月" & strDT(2) & "日"

        Case Else

            Udate = strDT(mYMD - 1)

        End Select

End Function

        三、以第一步建的表为 根底新建一个 查问,加入必要的字段 。另在一个空白字段写 抒发式:“大写: Udate([出票日期],0)” 。 保留这个 查问 。

        四、在原表中录入将要打印的支票信息,“出票日期”字段必须录入正确的日期 。

        五、运行 查问,就会看到有一个大写的日期字段 。有了这个 后果,无论设计窗体,还是设计报表,都 可以 自由 引用了 。