请教个问题,VB CrystalReport控制中,如何将小写金额转换成大写金额,谢谢
解决方案 »
- 关于 api 函数 FindWindow的问题
- vb msflexgrid表头设置问题
- 请说说有哪些图像处理控件可以在vb中使用?或发一些图片处理方面的代码。
- 我先给例子,再求,调用水晶报表,带子报表,的程序代码?
- 報表中如何實現蝶加的效果,參考如下
- 谁都可以进帮我解决问题,谢谢!
- 怎么在需要的地方弹出系统菜单?
- 各位哥哥,如何用MICROSOFTACESS
- 这是我的最后的积分了,帮忙啊!如何用VB作上传控件!!
- 如何把一张图片用ADO控件存到access数据库中?
- 我用WM_GETTEXT可以获得qq聊天窗口的内容,为什么却获得不了qq专门聊天室窗口文本的内容?
- 怎樣讓Windows的菜單上有Register或UnRegister兩個菜單項
你看可不可能用的别的地方试试
Private Sub Command1_Click()
'*****************************************************
If Text1.Text = "" Then
MsgBox "请输入数据"
Text1.SetFocus
Exit Sub
End If
Dim sztext As String
sztext = Text1.Text
szzf = sztext
sz1 = Len(sztext) '记录第一次输入时字符的长度
If sztext > 100000 Then
MsgBox "输入的数据超出范围"
Text1.Text = "": Text2.Text = "": Text1.SetFocus
Exit Sub
ElseIf sztext < 0.0099 Then
MsgBox "输入的数据小于给出范围"
Text1.Text = "": Text2.Text = "": Text1.SetFocus
Exit Sub
End If
'*****************************************************'********************************************************************************
'以下部份是判断输入数的小数位数的部份以及零的有效性
If InStr(szzf, ".") <> 0 Then
i = (sz1 - InStrRev(szzf, "."))
If i > 2 Then
MsgBox "您输入的小数位数多于两位,建议您重新输入"
Text1.Text = "": Text2.Text = "": Text1.SetFocus
Exit Sub
End If
zsws = Len(Trim(Str$(szzf))) '整数位数的长度
sz2 = sz1 - zsws
If i = 1 And sz2 = 2 Then
MsgBox "您输入的小数位数有一位上的数为零" & vbCrLf & "没有意义,建议您重输"
Text1.Text = "": Text2.Text = "": Text1.SetFocus
Exit Sub
End If
szzf1 = LTrim(Str$(sztext))
decd = Len(szzf1)
zcdcz = sz1 - decd '总长度差值
If zcdcz = 1 And i = 2 And szzf1 > 1 Then
MsgBox "您输入的小数位数有一位上的数为零" & vbCrLf & "没有意义,建议您重输"
Text1.Text = "": Text2.Text = "": Text1.SetFocus
Exit Sub
End If
End If
'以上部份是判断输入数的小数位数的部份以及零的有效性'*********************************************************************************'以下是读出输入数据为纯小数的情况
'*********************************************************************************
If 0.01 <= szzf And szzf < 1 Then
xsws = Len(Trim(Str$(szzf))) '包括小数点在内的长度值
If sz1 = 4 And xsws = 2 Then
MsgBox "您输入的小数位数有一位上的数为零" & vbCrLf & "没有意义,建议您重输"
Text1.Text = "": Text2.Text = "": Text1.SetFocus
Exit Sub
End If dyw = Trim(StrReverse(Trim(Str$(szzf)))) 'dyw为小数位数的有效数字
cd1 = Len(dyw) '测出dyw的长度
xf$ = "" '定义保存大写转换的变量名
DXSZ$ = "零壹贰叁肆伍陆柒捌玖点" '把大写数字放入字符串中DXSZ
Do While cd1 >= 2
xs$ = Mid(dyw, cd1 - 1, 1) '取字符串S4中的每一个字分别放入字符串XS中
xs1 = Val(xs)
xf = xf + IIf(xs1 >= 0, Mid(DXSZ, Val(xs) + 1, 1), "")
cd1 = cd1 - 1
Loop
dxxh = "零点" + xf
Text2.Text = dxxh
Exit Sub
End If
'********************************************************************************* '下面开始执行子过程cab
Text2.Text = cab(Text1.Text)
End SubPublic Function cab(sztext As Currency) As String
szzf$ = LTrim(Str$(sztext))
changdu = InStr(szzf, ".")
'以下判断输入的数据是否为整数时的大写转换
If changdu = 0 Then '当changdu=0时该数为整数
szcd = Len(szzf) '测出输入数据的长度:
s2 = Trim(Str$(StrReverse(Trim(Str$(StrReverse(Trim(szzf)))))))
s2dc = Len(s2) '测出S2的长度
cdcz = (szcd - s2dc) '计算出szcd - s2cd 差值
dxzh$ = "" '定义保存大写转换的变量名
DXSZ$ = "零壹贰叁肆伍陆柒捌玖点" '把大写数字放入字符串中DXSZ
DXDW$ = " 拾佰仟万拾" '把数字单位放入字符串DXDW
zc = 0
Do While s2dc >= 1
X$ = Mid(s2, zc + 1, 1) '取字符串S2中的每一个字分别放入字符串X中
zc = zc + 1
zf$ = Mid(DXSZ, Val(X) + 1, 1) '取出的一个数
dw$ = Trim(Mid(DXDW, (s2dc + cdcz - 1) + 1, 1))
XQ$ = Mid(s2, zc + 1, 1)
qzf = Mid(DXSZ, Val(XQ) + 1, 1)
lzf = IIf(qzf = zf And qzf = "零" And zf = "零", "", "零")
dxzh = dxzh + IIf(X <> ".", IIf(lzf <> "零", "", zf) + IIf(zf <> "零", dw, ""), "")
s2dc = s2dc - 1
Loop
cab = dxzh
End If
'以上判断输入的数据是否为整数时的大写转换
'以下判断输入的数据不是整数时的大写转换
If changdu <> 0 Then
szzf$ = Trim(Str(szzf)) '把输入的数转化成字符形的数
cd = Len(szzf) '字符串总长度
szcd = cd - changdu '小数位数的判断值
Select Case szcd
'以下是输入数据为一位小数时的大写转换
Case 1
zsbf$ = Mid(szzf, 1, changdu - 1) '把输入数据的整数部份放入字符串zsbf中
xsbf$ = Mid(szzf, changdu + 1, cd - changdu) '把输入数据的小数部份放入字符串xsbf中
zsbf$ = LTrim(Str(zsbf))
szcd = Len(zsbf) '判断整数部分的长度
s2 = Trim(Str$(StrReverse(Trim(Str$(StrReverse(Trim(zsbf))))))) '把整数部份转变成字符串放入字符串s2中
s2dc = Len(s2) '测出S2的长度
cdcz = (szcd - s2dc) '计算出szcd - s2cd 差值
dxzh$ = "" '定义保存大写转换的变量名
DXSZ$ = "零壹贰叁肆伍陆柒捌玖点" '把大写数字放入字符串中DXSZ
DXDW$ = " 拾佰仟万拾" '把数字单位放入字符串DXDW
zc = 0
Do While s2dc >= 1
X$ = Mid(s2, zc + 1, 1) '取字符串S2中的每一个字分别放入字符串X中
zc = zc + 1
zf$ = Mid(DXSZ, Val(X) + 1, 1) '取出的一个数
dw$ = Trim(Mid(DXDW, (s2dc + cdcz - 1) + 1, 1))
XQ$ = Mid(s2, zc + 1, 1)
qzf = Mid(DXSZ, Val(XQ) + 1, 1)
lzf = IIf(qzf = zf And qzf = "零" And zf = "零", "", "零")
dxzh = dxzh + IIf(X <> ".", IIf(lzf <> "零", "", zf) + IIf(zf <> "零", dw, ""), "")
s2dc = s2dc - 1
Loop
'下面为小数部分的处理
xsbf$ = LTrim(Str(xsbf))
szcd = Len(xsbf) '判断小数长度
s3 = Str(xsbf)
s3 = LTrim(Str(s3))
dxxh$ = "" '定义保存大写转换的变量名
DXSZ$ = "零壹贰叁肆伍陆柒捌玖点" '把大写数字放入字符串中DXSZ
xs$ = Mid(s3, 1, 1) '取字符串S2中的每一个字分别放入字符串X中
dxxh = dxxh + Mid(DXSZ, Val(xs) + 1, 1)
dxxh = "点" + dxxh
qbdx = dxzh + dxxh
cab = qbdx
'以上是输入数据为一位小数时的大写转换
'以下是输入数据为两位小数时的大写转换
Case 2
zsbf$ = Mid(szzf, 1, changdu - 1) '把输入数据的整数部份放入字符串zsbf中
xsbf$ = Mid(szzf, changdu + 1, cd - changdu) '把输入数据的小数部份放入字符串xsbf中
zsbf$ = LTrim(Str(zsbf))
szcd = Len(zsbf) '判断整数部分的长度
s2 = Trim(Str$(StrReverse(Trim(Str$(StrReverse(Trim(zsbf))))))) '把整数部份转变成字符串放入字符串s2中
s2dc = Len(s2) '测出S2的长度
cdcz = (szcd - s2dc) '计算出szcd - s2cd 差值
dxzh$ = "" '定义保存大写转换的变量名
DXSZ$ = "零壹贰叁肆伍陆柒捌玖点" '把大写数字放入字符串中DXSZ
DXDW$ = " 拾佰仟万拾" '把数字单位放入字符串DXDW
zc = 0
Do While s2dc >= 1
X$ = Mid(s2, zc + 1, 1) '取字符串S2中的每一个字分别放入字符串X中
zc = zc + 1
zf$ = Mid(DXSZ, Val(X) + 1, 1) '取出的一个数
dw$ = Trim(Mid(DXDW, (s2dc + cdcz - 1) + 1, 1))
XQ$ = Mid(s2, zc + 1, 1)
qzf = Mid(DXSZ, Val(XQ) + 1, 1)
lzf = IIf(qzf = zf And qzf = "零" And zf = "零", "", "零")
dxzh = dxzh + IIf(X <> ".", IIf(lzf <> "零", "", zf) + IIf(zf <> "零", dw, ""), "")
s2dc = s2dc - 1
Loop
'下面为小数部分的处理
xsbf$ = LTrim(xsbf)
szcd = Len(xsbf) '判断小数长度
s4 = xsbf
s4 = Trim(StrReverse(s4))
xf$ = "" '定义保存大写转换的变量名
DXSZ$ = "零壹贰叁肆伍陆柒捌玖点" '把大写数字放入字符串中DXSZ
Do While szcd >= 1
xs$ = Mid(s4, szcd, 1) '取字符串S4中的每一个字分别放入字符串XS中
xs1 = Val(xs)
xf = xf + IIf(xs1 >= 0, Mid(DXSZ, Val(xs) + 1, 1), "")
szcd = szcd - 1
Loop
dxxh = "点" + xf
qbdx = dxzh + dxxh
cab = qbdx
End Select
'以上是输入数据为两位小数时的大写转换
End If
End Function
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub
If Not IsNumeric(StrEng) Or StrEng Like "*.*" Or StrEng Like "*-*" Then
If Trim(StrEng) <> "" Then MsgBox "无效的数字"
CChinese = "": Exit Function
End If
Dim intLen As Integer, intCounter As Integer
Dim strCh As String, strTempCh As String
Dim strSeqCh1 As String, strSeqCh2 As String
Dim strEng2Ch As String
strEng2Ch = "零壹贰叁肆伍陆柒捌玖"
strSeqCh1 = " 拾佰仟 拾佰仟 拾佰仟 拾佰仟"
strSeqCh2 = " 万亿兆"
StrEng = CStr(CDec(StrEng))
intLen = Len(StrEng)
For intCounter = 1 To intLen
strTempCh = Mid(strEng2Ch, Val(Mid(StrEng, intCounter, 1)) + 1, 1)
If strTempCh = "零" And intLen <> 1 Then
If Mid(StrEng, intCounter + 1, 1) = "0" Or (intLen - intCounter + 1) Mod 4 = 1 Then
strTempCh = ""
End If
Else
strTempCh = strTempCh & Trim(Mid(strSeqCh1, intLen - intCounter + 1, 1))
End If
If (intLen - intCounter + 1) Mod 4 = 1 Then
strTempCh = strTempCh & Mid(strSeqCh2, (intLen - intCounter + 1) \ 4 + 1, 1)
If intCounter > 3 Then
If Mid(StrEng, intCounter - 3, 4) = "0000" Then strTempCh = Left(strTempCh, Len(strTempCh) - 1)
End If
End If
strCh = strCh & Trim(strTempCh)
Next
CChinese = strCh
End Function
strChineseMoney = varN1(CInt(Mid(strmoney, intMoneyPos, 1))) & "分"
End IfintMoneyPos = intMoneyPos - 1If CInt(Mid(strmoney, intMoneyPos, 1)) <> 0 Then
strChineseMoney = varN1(CInt(Mid(strmoney, intMoneyPos, 1))) & "角" & strChineseMoney
End IfIf Round(Abs(dbMoney)) = 0 Then
ToChineseMoney = strChineseMoney
If dbMoney < 0 Then strChineseMoney = "负" & strChineseMoney
Exit Function
End IfintMoneyPos = intMoneyPos - 2 ''移动到个位j = 0k = 0While intMoneyPos > 0 If j Mod 4 = 0 Then
strChineseMoney = varN3(k) & strChineseMoney
k = k + 1
If k > 2 Then
k = 1
End If
j = 0
End If
If Mid(strmoney, intMoneyPos, 1) <> 0 Then
strChineseMoney = varN2(j) & strChineseMoney
End If
strChineseMoney = varN1(CInt(Mid(strmoney, intMoneyPos, 1))) & strChineseMoney
j = j + 1
intMoneyPos = intMoneyPos - 1
WendWhile InStr(1, strChineseMoney, "零零") > 0
strChineseMoney = Replace(strChineseMoney, "零零", "零")
WendstrChineseMoney = Replace(strChineseMoney, "零亿", "亿零")While InStr(1, strChineseMoney, "零零") > 0
strChineseMoney = Replace(strChineseMoney, "零零", "零")
WendstrChineseMoney = Replace(strChineseMoney, "零万", "万零")While InStr(1, strChineseMoney, "零零") > 0
strChineseMoney = Replace(strChineseMoney, "零零", "零")
WendstrChineseMoney = Replace(strChineseMoney, "零元", "元")strChineseMoney = Replace(strChineseMoney, "亿万", "亿")strChineseMoney = Replace(strChineseMoney, "亿万", "亿")While InStr(1, strChineseMoney, "零壹拾") > 0
strChineseMoney = Replace(strChineseMoney, "零壹拾", "零拾")
Wend'If Left(strChineseMoney, 2) = "壹拾" Then
'
' strChineseMoney = Right(strChineseMoney, Len(strChineseMoney) - 1)
'
'End IfIf dbMoney < 0 Then
strChineseMoney = "负" & strChineseMoney
End IfToChineseMoney = strChineseMoneyEnd Function