读书人

请高手指教怎么编以下此程序

发布时间: 2012-01-21 21:31:43 作者: rapoo

请高手指教如何编以下此程序
请高手指教如何编以下此程序。最好给出源代码。
打印的每页上的内容字符串按以下方式变换:
0700009 -> 070000A -> 070000B …… -> 070000Z -> 0700010
0700010 -> 0700011 ..... -> 0700019 -> 070001A
070001A -> 070001B ……070001Z -> 0700020
...........
-> 07ZZZZZ -> 0700001 ...... -> 0700009

07代表“07年。
例如打10张,从以上我们可以看出第一页打印的内容是0700009,第二页打印070000A,以此类推。且下一次打印时以这次结束的值下一个值作为初始值继续打印。如上所示,打了10张后,下一次打印时第一张就从070000J开始打。

我的思路是做两个数据库。第一个数据库,建立此表。第二个数据库用来存打印初始值。每次打印时用第二个数据库的初始值内容在第一个数据库中查找,找到后取当前记录值作为打印值。按要求打印的数量打印,打印完后把当前记录+1的值存入第二个数据库作为初始值。但是我觉得好麻烦,谁有简单的办法来帮我完成以上操作打印。

[解决办法]
If IsNumeric(szAData(4)) Then
If CInt(szAData(4)) = 9 Then
szData(4) = "A "
Else
szData(4) = CInt(szAData(4)) + 1
End If
Else
If szAData(4) = "Z " Then
' szData(4) = "1 "
szData(4) = "0 "
iCnt = 1
Else
szData(4) = Chr(Asc(UCase(szAData(4))) + 1)
End If

End If
If iCnt = 1 Then
For inti = 3 To 0 Step -1
If IsNumeric(szAData(inti)) Then
If CInt(szAData(inti)) = 9 And iCnt = 1 Then
szData(inti) = "A "
iCnt = 0
ElseIf CInt(szAData(inti)) = 9 And iCnt <> 1 Then
szData(inti) = szAData(inti)
iCnt = 0
ElseIf CInt(szAData(inti)) < 9 And iCnt <> 1 Then
szData(inti) = szAData(inti)
iCnt = 0
ElseIf CInt(szAData(inti)) < 9 And iCnt = 1 Then
szData(inti) = CStr(CInt(szAData(inti)) + 1)
iCnt = 0
End If
Else
If szAData(inti) = "Z " And iCnt = 1 Then
' szData(inti) = "1 "
szData(inti) = "0 "
iCnt = 1
ElseIf szAData(inti) = "Z " And iCnt <> 1 Then
szData(inti) = szAData(inti)
ElseIf szAData(inti) <> "Z " And iCnt = 1 Then
szData(inti) = Chr(Asc(UCase(szAData(inti))) + 1)
iCnt = 0
ElseIf szAData(inti) <> "Z " And iCnt <> 1 Then
szData(inti) = szAData(inti)
iCnt = 0
End If
End If
Next inti
Else
szData(3) = szAData(3)
szData(2) = szAData(2)
szData(1) = szAData(1)
szData(0) = szAData(0)
End If
改好了 你看一下
[解决办法]
Sub Getpages(ByRef Start As String, ByVal num As String)
Dim i As Long, j As Byte, Temp As Long, temp2 As Long, result As String, Pages As String
Const s As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "


For i = 1 To 5
Temp = Temp + (InStr(s, Mid(Start, i + 2, 1)) - 1) * 36 ^ (5 - i)
Next
Pages = Start
For i = 1 To num
temp2 = Temp + i
result = " "
For j = 1 To 5
result = Mid(s, 1 + temp2 Mod 36, 1) & result
temp2 = temp2 \ 36
Next
result = Format(Date, "YY ") & result
If i < num Then Pages = Pages & " " & result
Next
Start = result
MsgBox Pages, vbInformation, "Startpage= " & Left(Pages, 7) & ",pagenum= " & num & ",Newstartpage= " & Start
End Sub

Private Sub Command1_Click()
Getpages "07A257X ", 100
End Sub

读书人网 >VB

热点推荐