Данный скрипт приводит суммы к единому виду NNN.NN независимо от того, как сумма пишется на документах.
Dim intResult, fract, vMinus, vFieldName
vFieldName = "IncomeSum"
vFieldVal = me.Field(vFieldName).Text
if Mid(vFieldVal, 1, 1) = "-" then
vMinus = "-"
' ищем десятичный разделитель, начиная с конца строки
for i = Len(vFieldVal) to 2 Step - 1
if instr( 1, ".,-=", Mid( vFieldVal, i , 1 ) ) <> 0 then
Exit for
End if
next
if i = 1 then
' десятичный разделитель не найден
fract = ""
intResult = vFieldVal
else
'Right Function (Visual Basic)
' Returns a string containing a specified number of characters from the right side of a string.
fract = "." & Right (vFieldVal, Len(vFieldVal) - i)
intResult = Left (vFieldVal, i)
end if
else
vMinus = ""
' ищем десятичный разделитель
for i = Len(vFieldVal) to 1 Step -1
if instr( 1, ".,-=", Mid( vFieldVal, i , 1 ) ) <> 0 then
Exit for
End if
next
if i = 0 then
' десятичный разделитель не найден
fract = ""
intResult = vFieldVal
else
fract = "." & Right (vFieldVal, Len(vFieldVal) - i)
intResult = Left (vFieldVal, i)
end if
end if
' очищаем целую часть суммы от разделителей тысяч
intResult = Replace (intResult, ".", "")
intResult = Replace (intResult, ",", "")
intResult = Replace (intResult, "'", "")
intResult = Replace (intResult, "-", "")
intResult = Replace (intResult, "=", "")
me.Field(vFieldName).Text = vMinus & intResult & Mid(fract, 1, 3)