Option Compare Database
Option Explicit
Private Sub Report_Activate()
Dim rns As Integer
Dim razr(4) As String
Dim sot(9) As String
Dim des(9) As String
Dim edin(19) As String
Dim ssum As Variant 'Currency 'Integer
Dim ssum1 As Variant
Dim nazv As String 'название прописью
Dim ost As Variant 'Integer
Dim ssum2 As Variant 'Currency 'String
Dim l As Variant 'Integer
Dim triad As Variant 'Integer
Dim x As Variant 'Integer
Dim j As Variant 'Integer
Dim i As Variant 'Integer
Dim m As Variant 'Integer
Dim xxx As Variant 'Integer
'Me!ВСЕГО = ssum
ssum = Me!Всего
razr(4) = " милрд."
razr(3) = " милн."
razr(2) = " тыс."
razr(1) = ""
'DIME sot(9)
sot(1) = "сто "
sot(2) = "двести "
sot(3) = "триста "
sot(4) = "четыреста "
sot(5) = "пятьсот "
sot(6) = "шестьсот "
sot(7) = "семьсот "
sot(8) = "восемьсот "
sot(9) = "девятьсот "
'DIME des(9)
des(1) = "десять "
des(2) = "двадцать "
des(3) = "тридцать "
des(4) = "сорок "
des(5) = "пятьдесят "
des(6) = "шестьдесят "
des(7) = "семьдесят "
des(8) = "восемьдесят "
des(9) = "девяносто "
'*DIME edin(19)
edin(1) = "один "
edin(2) = "два "
edin(3) = "три "
edin(4) = "четыре "
edin(5) = "пять "
edin(6) = "шесть "
edin(7) = "семь "
edin(8) = "восемь "
edin(9) = "девять "
edin(10) = "десять "
edin(11) = "одиннадцать "
edin(12) = "двенадцать "
edin(13) = "тринадцать"
edin(14) = "четырнадцать "
edin(15) = "пятнадцать "
edin(16) = "шестнадцать "
edin(17) = "семнадцать "
edin(18) = "восемнадцать "
edin(19) = "девятнадцать "
If ssum = 0 Then
nazv = " ноль долларов 00 центов"
Else
ssum = ssum + 0#
ssum1 = Int(ssum) '2 435 000
ssum2 = LTrim(CStr(Mid(ssum1, 1, 13)))
l = Len(ssum2) '7
triad = Fix(l / 3) '2
ost = l - triad * 3 '1
If ost > 0 Then
triad = triad + 1
ssum2 = String(3 - ost, "0") + ssum2
End If
If ost = -1 Then
ssum2 = "0" + ssum2
End If
x = 1
nazv = ""
i = triad '=3
Do While i > 0
j = 1
Do While j <= 3
m = Val(Mid(ssum2, x, 1))
If m <> 0 Then
If j = 1 Then
nazv = nazv + sot(m)
x = x + 1
Else
If j = 3 Then
If i = 2 And m = 2 Then
nazv = nazv + "две"
Else
If i = 2 And m = 1 Then
nazv = nazv + "одна"
Else
nazv = nazv + edin(m)
End If
End If
x = x + 1
Else
If m = 1 Then
m = Mid(ssum2, x, 2)
nazv = nazv + edin(m)
x = x + 2 '2
j = j + 1
Else
nazv = nazv + des(m)
x = x + 1
End If
End If
End If
Else
x = x + 1
End If
j = j + 1
Loop
nazv = nazv + razr(i)
i = i - 1
Loop
xxx = ssum - ssum1
nazv = nazv + " долларов" + Mid(CStr(xxx), 3, 2) + " 00 центов"
End If
Me!Пропись = nazv
End Sub
Private Sub Всего_Click()
End Sub
Private Sub ЖДТ_Цена__BeforeUpdate(Cancel As Integer)
End Sub
Private Sub Надпись59_Click()
End Sub
Private Sub Надпись60_Click()
End Sub
Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)
Dim rns As Integer
Dim razr(4) As String
Dim sot(9) As String
Dim des(9) As String
Dim edin(19) As String
Dim ssum As Variant 'Currency 'Integer
Dim ssum1 As Variant
Dim nazv As String 'название прописью
Dim ost As Variant 'Integer
Dim ssum2 As Variant 'Currency 'String
Dim l As Variant 'Integer
Dim triad As Variant 'Integer
Dim x As Variant 'Integer
Dim j As Variant 'Integer
Dim i As Variant 'Integer
Dim m As Variant 'Integer
Dim xxx As Variant 'Integer
'Me!ВСЕГО = ssum
ssum = Me!Всего
razr(4) = " милрд."
razr(3) = " милн."
razr(2) = " тыс."
razr(1) = ""
'DIME sot(9)
sot(1) = "сто "
sot(2) = "двести "
sot(3) = "триста "
sot(4) = "четыреста "
sot(5) = "пятьсот "
sot(6) = "шестьсот "
sot(7) = "семьсот "
sot(8) = "восемьсот "
sot(9) = "девятьсот "
'DIME des(9)
des(1) = "десять "
des(2) = "двадцать "
des(3) = "тридцать "
des(4) = "сорок "
des(5) = "пятьдесят "
des(6) = "шестьдесят "
des(7) = "семьдесят "
des(8) = "восемьдесят "
des(9) = "девяносто "
'*DIME edin(19)
edin(1) = "один "
edin(2) = "два "
edin(3) = "три "
edin(4) = "четыре "
edin(5) = "пять "
edin(6) = "шесть "
edin(7) = "семь "
edin(8) = "восемь "
edin(9) = "девять "
edin(10) = "десять "
edin(11) = "одиннадцать "
edin(12) = "двенадцать "
edin(13) = "тринадцать"
edin(14) = "четырнадцать "
edin(15) = "пятнадцать "
edin(16) = "шестнадцать "
edin(17) = "семнадцать "
edin(18) = "восемнадцать "
edin(19) = "девятнадцать "
If ssum = 0 Then
nazv = " ноль долларов 00 центов"
Else
ssum = ssum + 0#
ssum1 = Int(ssum) '2 435 000
ssum2 = LTrim(CStr(Mid(ssum1, 1, 13)))
l = Len(ssum2) '7
triad = Fix(l / 3) '2
ost = l - triad * 3 '1
If ost > 0 Then
triad = triad + 1
ssum2 = String(3 - ost, "0") + ssum2
End If
If ost = -1 Then
ssum2 = "0" + ssum2
End If
x = 1
nazv = ""
i = triad '=3
Do While i > 0
j = 1
Do While j <= 3
m = Val(Mid(ssum2, x, 1))
If m <> 0 Then
If j = 1 Then
nazv = nazv + sot(m)
x = x + 1
Else
If j = 3 Then
If i = 2 And m = 2 Then
nazv = nazv + "две"
Else
If i = 2 And m = 1 Then
nazv = nazv + "одна"
Else
nazv = nazv + edin(m)
End If
End If
x = x + 1
Else
If m = 1 Then
m = Mid(ssum2, x, 2)
nazv = nazv + edin(m)
x = x + 2 '2
j = j + 1
Else
nazv = nazv + des(m)
x = x + 1
End If
End If
End If
Else
x = x + 1
End If
j = j + 1
Loop
nazv = nazv + razr(i)
i = i - 1
Loop
xxx = ssum - ssum1
nazv = nazv + " долларов" + Mid(CStr(xxx), 3, 2) + " 00 центов"
End If
Me!Пропись = nazv
End Sub
Private Sub Пропись_Click()
End Sub
Asked
Active
Viewed 81 times
0

ssum = Me!Всего. Соответственно: а) какой тип у значения поля? б) почему используется переменная типаVariant? Для исправления: оба типа измените на точные (Currencyподойдёт). И ведите вычисления в целых типах. а не Single/Double. – Akina Feb 21 '18 at 09:35