Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Управление исходным кодом в MS Access.doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
198.14 Кб
Скачать

1.1 Пример функции «Вычисление суммы прописью»

В формах и отчетах с коммерческими данными часто требуется вывести "сум­му прописью». Для этого необходима специальная функция. В качестве примера был создан мо­дуль (Module2) (Рис. 2.1):

Рис. 2.1 Исходный код (Module2)

Листинг модуля находится в разделе «приложение». Принцип работы функции довольно прост. Числовое значение (аргумент) пре­образуется в текстовую строку, а потом анализируется количество цифр (разря­дов). В зависимости от числовых значений формируется строка из слов с нужными падежными окончаниями. Необходимо предусмотреть все возможные варианты, поэтому в функции много операторов If и Case. Для работы со строко­выми данными используется ряд стандартных функций VB:

Len() - количество символов в строке;

Str() - преобразование числа в строковую константу;

Trim() - удаление ведущих и оконечных пробелов из строки;

Ltrim() удаление ведущих пробелов из строки; - выбор левой части строки;

Right() _ выбор правой части строки;

Mid() - выбор из строки заданного числа символов, начиная с определенной позиции;

UCase() — преобразование строчных букв в заглавные;

Fix() - получение целой части числа;

Round() - округление числа с заданной точностью;

Val() - конвертация числа, записанного как строка, в числовое значение.

III. Заключение

В данном курсовом проекте были рассмотрены методы работы с исходным кодом интегрированные в Access. На нескольких примерах было описано устройство, синтаксис и методики эффективной отладки приложений в среде программирования Microsoft Visual Basic for Applications. Листинг используемых модулей и функций находится в разделе «ПРИЛОЖЕНИЕ» Данный проект может служить как руководство при изучении MS Access.

IV. Список используемой литературы

  1. MS Access 2003 Самоучитель. Ю.Бекаревич, Н. Пушкина

  2. Программирование Access в примерах. Боб Виллариал

  3. Microsoft Access 2002. Наиболее полное руководство. В. Михеева

  4. Освой самостоятельно программирование для MS Access 2002 за 24 часа. П. Киммел

  5. http://office.microsoft.com

V. Приложение

1. Таймер блокировки

Function Taimer1()

Dim otvet, MyTime

otvet = 1

MyTime = Timer

While otvet = 1

If Timer - MyTime >= 10 Then

otvet = MsgBox("Прошло 10 секунд", vbOKCancel, "Таймер блокировки")

MyTime = Timer

End If

Wend

End Function

2. Вычисление суммы прописью

Public Function СУМ_ПРО(chislo)

Dim tekst As String

Dim sumpro As String

Dim Psumpro As String

Dim tprom As String

Dim nprom As Integer

Dim nkop As Integer

sumpro = ""

tekst = Trim(Str(Fix(chislo)))

If Len(tekst) > 0 Then

If Len(tekst) = 1 Then

tprom = "0" + tekst

Else

tprom = Right(tekst, 2)

End If

nprom = Val(tprom)

If nprom >= 10 And nprom <= 19 Then

sumpro = N10T$(nprom) + " рублей"

Else

Select Case Val(Right(tprom, 1))

Case 0

sumpro = "рублей"

Case 1

sumpro = "рубль"

Case 2, 3, 4

sumpro = "рубля"

Case 5 To 9

sumpro = "рублей"

End Select

sumpro = N1T$(Val(Right(tprom, 1))) + " " + sumpro

If nprom >= 20 Then

sumpro = LTrim(N20T$(Val(Left(tprom, 1))) + " " + sumpro)

End If

End If

If Len(tekst) >= 3 Then

sumpro = LTrim(N100T$(Val(Left(Right(tekst, 3), 1))) + " " + sumpro)

End If

If Len(tekst) > 3 Then

Select Case Len(tekst)

Case Is >= 6

tprom = Left(Right(tekst, 6), 3)

Case 5

tprom = "0" + Left(tekst, 2)

Case 4

tprom = "00" + Left(tekst, 1)

End Select

If Val(tprom) > 0 Then

nprom = Val(Right(tprom, 2))

If nprom >= 10 And nprom < 20 Then

Psumpro = N10T$(nprom) + " тысяч"

Else

Select Case Val(Right(tprom, 1))

Case 0

Psumpro = "тысяч"

Case 1

Psumpro = "одна тысяча"

Case 2

Psumpro = "две тысячи"

Case 3

Psumpro = "три тысячи"

Case 4

Psumpro = "четыре тысячи"

Case 5

Psumpro = "пять тысяч"

Case 6

Psumpro = "шесть тысяч"

Case 7

Psumpro = "семь тысяч"

Case 8

Psumpro = "восемь тысяч"

Case 9

Psumpro = "девять тысяч"

End Select

If nprom >= 20 Then

Psumpro = LTrim(N20T$(Val(Mid(tprom, 2, 1))) + " " + Psumpro)

End If

End If

If Val(Left(tprom, 1)) > 0 Then

Psumpro = N100T$(Val(Left(tprom, 1))) + " " + Psumpro

End If

sumpro = Psumpro + " " + sumpro

End If

End If

If Len(tekst) > 6 Then

Select Case Len(tekst)

Case Is >= 9

tprom = Left(Right(tekst, 9), 3)

Case 8

tprom = "0" + Left(tekst, 2)

Case 7

tprom = "00" + Left(tekst, 1)

End Select

If Val(tprom) > 0 Then

nprom = Val(Right(tprom, 2))

If nprom >= 10 And nprom < 20 Then

Psumpro = N10T$(nprom) + " миллионов"

Else

Select Case Val(Right(tprom, 1))

Case 0

Psumpro = "миллионов"

Case 1

Psumpro = "миллион"

Case 2, 3, 4

Psumpro = "миллиона"

Case 5 To 9

Psumpro = "миллионов"

End Select

Psumpro = N1T$(Val(Right(tprom, 1))) + " " + Psumpro

If nprom >= 20 Then

Psumpro = LTrim(N20T$(Val(Mid(tprom, 2, 1))) + " " + Psumpro)

End If

End If

If Val(Left(tprom, 1)) > 0 Then

Psumpro = N100T$(Val(Left(tprom, 1))) + " " + LTrim(Psumpro)

End If

sumpro = Psumpro + " " + LTrim(sumpro)

End If

End If

If Len(tekst) > 9 Then

Select Case Len(tekst)

Case Is >= 12

tprom = Left(Right(tekst, 12), 3)

Case 11

tprom = "0" + Left(tekst, 2)

Case 10

tprom = "00" + Left(tekst, 1)

End Select

If Val(tprom) > 0 Then

nprom = Val(Right(tprom, 2))

If nprom >= 10 And nprom < 20 Then

Psumpro = N10T$(nprom) + " миллиардов"

Else

Select Case Val(Right(tprom, 1))

Case 0

Psumpro = "миллиардов"

Case 1

Psumpro = "миллиард"

Case 2, 3, 4

Psumpro = "миллиарда"

Case 5 To 9

Psumpro = "миллиардов"

End Select

Psumpro = N1T$(Val(Right(tprom, 1))) + " " + Psumpro

If nprom >= 20 Then

Psumpro = LTrim(N20T$(Val(Mid(tprom, 2, 1))) + " " + Psumpro)

End If

End If

If Val(Left(tprom, 1)) > 0 Then

Psumpro = N100T$(Val(Left(tprom, 1))) + " " + LTrim(Psumpro)

End If

sumpro = Psumpro + " " + LTrim(sumpro)

End If

End If

End If

sumpro = LTrim(sumpro)

If Len(sumpro) > 2 Then

sumpro = UCase(Left(sumpro, 1)) + Right(sumpro, Len(sumpro) - 1)

End If

nkop = Round((Round(chislo, 2) - Fix(chislo)) * 100)

If nkop = 0 Then sumpro = sumpro + " 00 коп."

If nkop > 0 And nkop < 10 Then sumpro = sumpro + " 0" + Trim(Str(nkop)) + " коп."

If nkop > 9 And nkop < 100 Then sumpro = sumpro + Str(nkop) + " коп."

СУМ_ПРО = sumpro

End Function

Function N10T$(n001)

N10T$ = ""

Select Case n001

Case 10

N10T$ = "десять"

Case 11

N10T$ = "одиннадцать"

Case 12

N10T$ = "двенадцать"

Case 13

N10T$ = "тринадцать"

Case 14

N10T$ = "четырнадцать"

Case 15

N10T$ = "пятнадцать"

Case 16

N10T$ = "шестнадцать"

Case 17

N10T$ = "семнадцать"

Case 18

N10T$ = "восемнадцать"

Case 19

N10T$ = "девятнадцать"

End Select

End Function

Function N20T$(n001)

N20T$ = ""

Select Case n001

Case 2

N20T$ = "двадцать"

Case 3

N20T$ = "тридцать"

Case 4

N20T$ = "сорок"

Case 5

N20T$ = "пятьдесят"

Case 6

N20T$ = "шестьдесят"

Case 7

N20T$ = "семьдесят"

Case 8

N20T$ = "восемьдесят"

Case 9

N20T$ = "девяносто"

End Select

End Function

Function N100T$(n001)

N100T$ = ""

Select Case n001

Case 1

N100T$ = "сто"

Case 2

N100T$ = "двести"

Case 3

N100T$ = "триста"

Case 4

N100T$ = "четыреста"

Case 5

N100T$ = "пятьсот"

Case 6

N100T$ = "шестьсот"

Case 7

N100T$ = "семьсот"

Case 8

N100T$ = "восемьсот"

Case 9

N100T$ = "девятьсот"

End Select

End Function