Смекни!
smekni.com

Считывание данных из гостевой книги (стр. 2 из 3)

В дальнейшем, используя этот набор процедур, можно будет постоянно обновлять данные в этой базе данных.

Используя в дальнейшем возможности базы данных приложения Access, можно создавать различные запросы и отчёты, на пример отчёт о количестве пользователей сайта за определённый месяц, отчёт по регионам о месте проживания пользователей сайта и т.д.

Система обозначений, описание переменных, аргументов функций и процедур и т.д.

Для VBA существуют соглашения о наименовании Реддика (RVBA), которые предоставляют указания по присвоению имён объектам в языке Microsoft Visual Basic for Applications (VBA). Наличие соглашений необходимо для любого программного проекта. При использовании соглашений имя объекта несёт в себе информацию о его назначении. Предлагаемые соглашения стандартизируют обозначения в сфере программирования.

Язык VBA разработан для взаимодействия с базовым приложением, например с MS Access, Visual Basic, MS Excel, MS Project. Соглашения RVBA применимы ко всем разработкам на языке VBA, независимо от базового приложения.

Соглашения RVBA основаны на Венгерской нотации. Цель этой нотации – лаконичное и эффективное представление информации об объекте в его имени.

Единственной обязательной частью имени объекта является признак – короткий набор символов, обычно мнемонический, который указывает тип объекта. Признак должен состоять из строчных букв и обычно выбирается из стандартного списка признаков, указанного в Таблице 2

Таблица2 Признаки для переменных VBA

Признак Типы объекта
Byt Byte
F Boolean
Int Integer
Sng Single
Dbl Double
Cur Currency
Dtm Date
Obj Object
Str String
Stf String(фиксированной длины)
Var Variant
Lng Long

В данном наборе процедур используется Венгерская нотация. Все переменные и объекты имеют в своём имени признак, который соответствует типу этих переменных и объектов.

Набор рассматриваемых процедур состоит из двух частей: процедуры LookForNameStart и процедуры ProcessContact. Перед написанием кода процедур, оператор Dim объявляет переменные txtobj1 как объект, имеющий доступ к файловой системе компьютера(Scripting) и считывающий текст файла потоком(FileStream); strTemp как строковую переменную и rst1 как встроенный объект(Recordset) ADO базы данных (см. Рис7) и выделяет под эти переменные часть памяти. Объявление переменных до написания самого кода процедур необходимо для того, чтобы эти переменные были доступны более чем одной процедуре.

Оператор Sub объявляет тело и имя процедуры LookForNameStart.

Оператор Dim резервирует часть памяти под переменную fs , которая будет иметь доступ к системному файлу.

Оператор Set связывает ссылку на новый объект, имеющий доступ к системному файлу с переменной fs. Также этот оператор связывает ссылку на новый объект fs, в котором открывается файл Myformrstl.htm(См.Рис.12) для чтения ( с помощью оператора Open) с диска F: на локальном компьютере с объектомt xtobj1. Он также связывает rst1 с новым встроенным объектом ADO базы данных. Потом в объекте rst1 открывается таблица “tblContacts” в текущем проекте CurrentProject.Connection.

Цикл Do Until … Loop выполняется до тех пор пока не будет найдена строка, которая находится прямо перед строкой “X_FirstName”. Для этого используется ещё один цикл If …Then … Else … End If, который проверяет является ли читаемая строка txtobj1.ReadLine файла Myformrstl.htm строкой “ X_FirstName ”. Это осуществляется при помощи функции InStr , которая возвращает позицию искомой строки “X_FirstName”. И если она является таковой, то выполняется вторая процедура ProcessContact нашего проекта, если же нет – то продолжается цикл Do ... Loop.

Для очистки ресурсов используется метод Close для объектов txtobj1и rst1 и оператор Set, который ссылается на пустые объекты txtobj1 и rst1.

Для заполнения таблицы “tblContacts” в базе данных была создана процедура ProcessContact.

Оператор On … GoTo в случае ошибки заставляет перепрыгивать программу на строку MyErrorTrap.

Оператор Dim объявляет переменные strFname, strLname, strCName, strSt1, strSt2, strCity, strRegion, strPostalCode, strCountry, strEmailAddr как строковые переменные; intFirst и intLen как числовые переменные и cmd1 как встроенный объект ADO базы банных.

С помощью цикла If …Then … Else … End If в этой процедуре проверяются строки с введёнными данными из Гостевой книги, которые сохранены в файле Myformrstl.htm. Цикл If …Then … Else … End If с помощью функции InStr проверяет наличие в строке специального знака “&nbsp” и если его нет, то присваивает переменной intFirst номер позиции символа + 1, с которого будет производиться запись. Затем переменной intLen присваивается значение длины записи, т.е. сколько символов будет записано – 1. Переменным strFName и strLName присваиваются значения с помощью функций Ucase, Lcase и Mid символа с большой буквы под номером, который присвоен переменной intFirst строки strTemp и символов, с номерами, следующими за intFirst из той же строки, длиной intLen – 1. Если условие не выполняется то строка остаётся пустой.

По такому же принципу переменным strCName, strSt1 и strSt2 присваиваются значения, но при этом вместо функций Ucase, Lcase используется функция CleanText, которая создана в этом проекте. Она убирает все лишние символы из строки.

В присвоении переменным strCity, strRegion, strPostalCode, strCountry, strEmailAddr используются практически те же способы, но вместо цикла If …Then … Else … End If применяется упрощённый цикл, который записывается в одну строку If …Then. И он поверял лишь наличие спецсимволов в очередной строке, и если они есть то Эти переменные остаются пустыми. Также здесь используется только функция Mid и функции Left для strRegion, которая возвращает определённое количество символов с начала строки.

Метод SkipLine объекта txtobj1 пропускает строку.

Для отладки программы используется объект Debug со свойством Print.

Результаты работы процедур появляются в окне отладки.

Далее все считанные данные будут последовательно вписана в таблицу tblContacts нашей базы данных.

Процедура проверяет пустые или нет переменные strFName , strLName и strEmailAddr если нет, то она использует оператор With для объекта rst1 для заполнения полей таблицы, проверяя наличие записи в каждой строковой переменной нашей процедуры.

Метка MyExit в нашей процедуре означает, что после выполнения цикла процедура заканчивает работу.

Каждая стандартная ошибка имеет свой номер. При ошибке – 214721887 объект cmd1 ссылается на новый встроенный объект ADO базы данных и с помощью оператора With связывается с текущим проектом, меняет некоторые свойства этого объекта, выполняет их и за оператором With следует функция восстановления Resume,т.е. запускается с самого начала Sub LookForNameStart. Если же номер ошибки другой , то в окне отладки появляется номер и описание этой ошибки и программа возвращается к метке MyExit.

Функция CleanText убирает специальные символы с помощью функции Replace.

Экранные копии этапов разработки с разъяснениями каждого изображения.

Для выполнения этого проекта необходимо было установить приложение MSFrontPage, который находится в пакете MSOffice2000. Его установочный пакет находится на компьютере User7 нашей локальной сети. При запуске установочного файла мы выбираем “add or remove Features”(См. Рис.1)

Рис.1

Затем мы выбрали FrontPage в списке и дали команду на установление.(См.Рис.2 и Рис.3)

С помощью FrontPage Wizard я создал Гостевую книгу (см.Рис.4), которую потом установили на сервере нашей локальной сети. Получив файл с данными, полученными через эту Гостевую книгу, я приступил к выполнению второй части проекта: создание однотабличной базы данных и написанию кода процедур.

Частью любого проекта VBA является набор ссылок на библиотеку типов всех компонентов IDE, которые применяются в данном проекте. Простые проекты содержат небольшое количество ссылок, которые применяются VBA, интерфейсом автоматизации и базовым приложением. Ссылками можно управлять интерактивно посредствам диалогового окна Ссылки(См.Рис.5) или программным путём, посредствам Rferences класса VBProject.

Рис.2

Рис.3

Guest Book

Welcome to my first web page

Please enter your private information:

First Name
Last Name
Organization
Street Address
Address (cont.)
City
State/Province
Zip/Postal Code
Country
E-mail

Bottom of Form

Рис.4

Затем я создал однотабличную базу данных и подключил несколько библиотек, необходимых для работы проекта.(См. Рис.5 и Рис.6)

Следующий этап разработки - написание кода(См.Рис.7) Затем отладка процедур.

Так как у создателей этого набора процедур, по-видимому, была несколько другая Гостевая книга, то мне пришлось внести некоторые изменения в код процедур: поменять адрес файла, с которого считываются данные, изменить имя первой строки этого файла и отменить несколько команд – “пропустить строку”(См. Рис.7 - 11).