Главная » Просмотр файлов » А.Ю. Гончаров Access 2003

А.Ю. Гончаров Access 2003 (960524), страница 39

Файл №960524 А.Ю. Гончаров Access 2003 (А.Ю. Гончаров Access 2003) 39 страницаА.Ю. Гончаров Access 2003 (960524) страница 392017-12-26СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 39)

У нас переменных две:Otvet- номер кнопки, нажатой в окне диалога;MyTtme - число секунд.Системная переменная (или, если хотите, функция) Timer хранит число секунд,прошедших с начала текущих суток.Цикл While условие ... Wend довольно часто используется в VB. Он работает, покавыполняется условие.Оператор If условие Then ... Endlf позволяет выводить окно диалога, только когдаразница между текущим временем и временем, зафиксированным в переменнойMyTime, превысит 60 секунд,Для создания окна диалога используется функция MsgBox() с тремя аргументами: текстом сообщения в окне, системной константой для выбора вида кнопоки текстом для заголовка окна. Константа vbOKCancel указывает на то, что в окнедолжны быть две кнопки: ОК и Cancel. Такая конструкция очень удобна, когданадо организовать диалог с пользователем и позволить ему что-нибудь отменить.Кнопки в окне диалога нумеруются, начиная с единицы, и, когда пользователь нажимает кнопку, функция возвращает ее порядковый номер.У таких программ есть свои особенности.

Во-первых, во время их выполнениядля пользователя включается режим ожидания - указатель мыши приобретаетвид песочных часов и доступ к Access блокируется. Во-вторых, такая программадолжна быть оформлена именно как функция (Function), а не как подпрограмма(Sub). При этом функция не обязана возвращать какое-либо значение.Если требуется обеспечить возможность работы с Access и другими приложениями, пока выполняется программа на VB, в ее цикл необходимо вставитьинструкцию DoEvents. Попробуйте поместить ее после строки с оператором Whileи проверьте, как изменится работа макроса.MBОбозначение Sub является сокращением английского слова subroutine подпрограмма. Когда говорят о функциях и подпрограммах Visual Basic, часто используют общее название «процедура» (procedure).Глава 10224Подведем итоги. Программу, написанную на VB, можно запустить несколькими способами.

Во-первых, разрешается использовать ее как обработчик событий.Когда событие происходит, программа выполняется. Этот способ обсуждался настраницах книги. Во-вторых, программу можно запустить через макрос, а точнее,с помощью макрокоманды ЗапускПрограммы. В качестве ее аргумента используется имя функции Visual Basic.

А сам макрос запускается кнопкой на вкладкеМакросы или командой из главного меню Сервис =х> Макрос =^> Выполнитьмакрос. В-третьих, программы можно запускать в окне редактора Visual Basic.10.4. Пример программы и формыЕсли требуется определить размер самой длинной строки в текстовом поле(чтобы правильно выбрать размер поля), можно создать в базе данных инструмент, состоящий из формы и связанной с ней программы. В форме надо создатьтри поля для задания имени таблицы, имени поля и вывода номера обрабатываемой записи. Назовем их Tablica, Pole и Zapis соответственно.Еще надо создать кнопку (рис. 10.4) для запуска программы.

В моем примереона получила имя Кнопка/.„шальная Длина:Таблица;товарыМаркоРис. 10.4. Форма для определения максимальной длины строки в полеС кнопкой надо связать следующую программу:Private Sub Кнопка7_СПс!<()Максимальная длина поляOn Error GoTo Err_KHpnKa7_ClickDim Tabl As Recordset ' выбранная таблицаDim Imya As String ' выбранное полеDim Stroka As String ' строковая переменнаяПрограммирование225Dim Dlina As Long ' максимальная длинаDim Zap As Long ' запись, где длина строки максимальнаDim TekZap As Long ' текущая записьIf Triin(Me.Tablica) = "" Then Exit SubIf Trim(Me.Pole) = "" Then Exit SubDl'ina = 0Zap - 0TekZap = 0Imya = Trim(Me,Pole)Stroka = ""Set Tab! - CurrentDb.OpenRecordset(Me.Tablica)With TablВстряхнем таблицу.MoveLast.MoveFirstЦикл по всем записямDo Until .EOFTekZap = TekZap + 1Me.Zapis = TekZapStroka = Trim(Tabl.Fields(Imya))If Len(Stroka) > Dlina ThenDlina = Len(Stroka)Zap = TekZapEnd If.MoveNext ' следующая записьLoop.CloseEnd WithMsgBox "Максимальная длина строки " & Dlina & " Запись номер " & ZapExit_KHonKa7_Click:Exit SubErr_KHoni<a7_Click:MsgBox Err.DescriptionResume Exit_KHonKa7_ClickEnd SubНесколько замечаний к данному коду.

Если мы хотим работать с таблицей илизапросом, то должны создать объектную переменную типа Recordset. У нас этопеременная ТаЫ. Когда потребуется открыть таблицу, надо применить к текущейбазе данных (CurrentDb) метод OpenRecordset с соответствующим аргументом226Глава 10В нашем примере исходные параметры считываются из формы. Если не всепараметры заданы, работу программы надо прервать (инструкцией Exit Sub). Анализируя значения полей Tablica и Pole, надо отбросить возможные пробелы с помощью функции Trinn().Цикл Do Until .EOF ...

Loop позволяет перебрать все записи таблицы. Внутри цикла необходимо применять метод MoveNext (переход к следующей записи), иначецикл никогда не закончится.Команда Me.Zapis = TekZap позволяет выводить в текущей форме (Me) номеробрабатываемой записи. Это не влияет на работу программы, но дает возможность пользователю видеть, что программа работает.Функция Len() позвляет определить длину строки.Конструкция With ...

End With используется только для удобства написания кода.Она позволяет не использовать имя часто встречающегося объекта. Например кодWith Tab!.MoveLast.MoveFirstEnd W i t hэквивалентен коду:Tabl.MoveLastTabl.MoveFirstПрименять этот прием можно только в тех случаях, когда строка кода будет начинаться с точки. В остальных случаях надо использовать имя объекта явным образом.После того как таблица обработана, ее надо закрыть с помощью метода Close.Если надо вывести окно с сообщением и не требуется анализировать, какуюкнопку нажмет пользователь, можно воспользоваться инструкцией MsgBox. Здесьв качестве аргумента используется строковое выражение. Символ & позволяет соединять несколько текстовых значений.

В большинстве случаев позволяется использовать и числовые переменные, значения которых автоматически преобразуются в текст (рис. 10.5).Microsoft Office AccessМаксимальная дпина строки 32 Запись нсотер 19. кРис. 10.5. Окно, сформированное инструкцией MsgBoxПрограммирование._227Изучите по встроенному справочнику свойства и методы объектаRecordset и все, что с ним связано. Скопируйте в текстовый документвстреченные примеры программ. Вся эта информация постояннотребуется разработчику баз данных.Visual Basic для MS Office обладает интересной особенностью. Этот язык построен по принципу «заклинаний».

Он включает большое количество объектов,каждый из которых имеет ограниченное число свойств и методов (это называется«объектной моделью»). Догадаться, что к чему относится, практически невозможно, так же как писать код, не имея под рукой подробного справочника. Попытка наугад (точнее, из соображений здравого смысла) комбинировать объектыи методы кончается крахом: в большинстве случаев программа сообщает, что«объект не поддерживает данное свойство или метод». Поэтому все разработчикипрограмм на VB действуют одинаково: копируют из встроенного справочника работающие примеры (которые я называю «заклинаниями») и приспосабливают ихдля своих задач.10.5.

Пример функции (вычисление «суммыпрописью»)В формах и отчетах с коммерческими данными часто требуется вывести «сумму прописью». Для этого необходима специальная функция, Создадим новый модуль (Module2) и запишем в него приведенные ниже тексты функций (кромеосновной функции используются еще вспомогательные):Public Function CVM_nPO{chislo)'Функция для заполнения строки "сумма прописью"Dim tekst As StringDim surnpro As StringDim Psurnpro As StringDim tprom As StringDim nprom As IntegerDim nkop As Integersumpro =tekst = Trim(Str(Fix(chislo)})If Len(tekst) > 0 Then1Единицы, десятки, сотниIf Len(tekst) = 1 Then228Глава 10tprom = "О" + tekstElsetprom = Right(tekst, 2)End Ifnprom - Val(tprom)If nprom >= 10 And nprom <= 19 Thensumpro = N10t$(riprom) + " рублей"ElseSelect Case Val(Right(tprom, 1))Case 0sumpro = "рублей"Case 1sumpro = "рубль"Case 2, 3, 4sumpro - "рубля"Case 5 To 9sumpro - "рублей"End Selectsumpro = N1T$(Val(Right(tprom, 1))) + " " + sumproIf nprom >= 20 Thensumpro = LTnni(N20T$(Val(Left(tprom, 1))} + " " + sumpro)End IfEnd IfIf Len(tekst) >= 3 Thensumpro = LTrim(N100T$(Val(Left(Right{tekst, 3), 1))) + " " + sumpro)End IfТысячиIf Len(tekst) > 3 ThenSelect Case Len(tekst)Case Is >= 6tprom = Left(Right(tekst, 6), 3)Case 5tprom = "0" + Left(tekst, 2)Case 4tprom = "00" + Left(tekst, 1)End SelectIf Val(tprom) > 0 Thennprom = Val(Right(tprom, 2))If nprom >= 10 And nprom < 20 ThenPsumpro = N10T$(nprom) + " тысяч"ПрограммированиеElseSelect Case V a l ( R i g h t ( t p r o m , 1))Case 0Psurnpro - "тысяч"Case 1Psumpro = "одна тысяча"Сазе 2Psumpro = "две тысячи"Case 3Psumpro = "три тысячи"Case 4Psumpro - "четыре тысячи"Case 5Psurnpro - "пять тысяч"Case 6Psumpro = "шесть тысяч"Case 7Psumpro - "семь тысяч"Case 8Psumpro - "восемь тысяч"Case 9Psunipro = "девять тысяч"End SelectIf nprom >= 20 ThenPsumpro = LTrim(N2QT$(Val(Mid(tprom, 2, 1))) + " " + Psumpro)End If ,End IfIf Val(Left(tprom, 1}) > 0 ThenPsumpro = N1uQT$(Val(Left(tprom, 1))) + " " + PsumproEnd Ifsumpro - Psurnpro + " " + sumproEnd IfEnd If'МиллионыIf Len(tekst) > 6 ThenSelect Case Len(tekst)Case Is >= 9tprom = Left(Right(tekst, 9), 3)Case 8 'tprom = "0" + Leftftekst, 2)229230Глава 10Case 7tprom = "00" + Left(tekst, 1)End SelectIf Val(tprom) > 0 Thennprom - Val(Right(tprom, 2))If nprom >= 10 And nprom < 20 ThenPsumpro = N10T$(nprom) + " миллионов"ElseSelect Case Val(Right(tproni, 1))Case 0Psumpro - "миллионов"Case 1Psumpro = "миллион"Case 2, 3, 4Psumpro - "миллиона"Case 5 To 9Psumpro = "миллионов"End SelectPsumpro = N1T$(Val(Right(tprom, 1))) + " " + PsumproIf nprom >= 20 ThenPsumpro = LTrim(N20T$(Val(Mid(tprom, 2, 1))) + " " + Psumpro)End IfEnd IfIf Val(Left(tprom, 1)) > 0 ThenPsumpro = N100T$(Val(Left(tprom, 1))) + " " + LTrim(Psumpro)End Ifsumpro = Psumpro + " " +End IfEnd IfМиллиардыIf Len(tekst) > 9 ThenSelect Case Len(tekst)Case Is >= 12tprom = Left(Right(tekst, 12), 3)Case 11tprom = "0" + Leftftekst, 2)Case 10tprom = "00" + Left(tekst, 1)End SelectIf Val(tprom) > 0 ThenПрограммированиеnprom - Val(Right(tprom.

Характеристики

Тип файла
PDF-файл
Размер
24,39 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее