Программирование в MS ACCESS, страница 7

rs.MoveFirst

ln = rs.RecordCount

Grid.Rows = ln + 1

j = 1

While Not rs.EOF

Grid.Row = j

For i = 0 To Grid.Cols - 1

Grid.Col = i

Grid.Text = rs.Fields(i).Value

Next

rs.MoveNext

j = j + 1

Wend

End Sub

5. Организация доступа к локальным и удаленным базам данных.

Из программы на VBA можно получить доступ к базам данных как на локальной, так и на удаленных компьютерах в сети. Доступ к локальным базам данных может быть произведен с помощью двух механизмов Microsoft Jet (встроенный механизм Microsoft Access) ODBC (Open DataBase Connectivity). В первом случае для доступа к базе данных необходимо создать объект типа database и установить его значение оператором Set, используя метод OpenDatabase, в качестве аргументов которого указываются полное имя (включая путь) базы данных и, при необходимости, режим открытия(True - монопольный, False - разделаемый, по умолчанию), режим использования (True - только для чтения, False - для чтения записи, по умолчанию) и строку соединения, включающую тип базы данных, имя пользователя и пароль ("FoxPro 2.5; uid=admin; pwd=mypassword", по умолчанию - Access, без имени и пароля), например:

Dim db As Database

Set db = OpenDatabase("c:\Temp\db2.mdb")

Добавив подобные строки в предыдущий пример, мы извлечем набор записей из базы данных db2.mdb, расположенной в папке c:\Temp.

Для организации доступа к локальной базе через ODBC вместо полного имени базы данных используется DSN (Data Source Name - имя источника данных). Создание DSN начинается командой «Пуск» - «Настройка» - «Панель управления» - «Источники данных ODBC (32 разряда)». В закладке «Пользовательcкий DSN» нажимаем кнопку «Добавить», выбираем драйвер базы данных (Access, Excel, dBASE, FoxPro, ODBC for Oracle, Paradox, SQL server) и нажимаем кнопку «Готово». В открывшемся окне вводим произвольное имя источника данных и нажимаем кнопку «Выбрать», после чего выбираем диск, папку и файл базы данных. Нажав кнопку «Дополнительно», можно установить имя и пароль для доступа к базе данных. Нажав кнопку «Параметры», можно установить время ожидания, размер буфера, режимы монопольного доступа и «Только для чтения». По окончании настроек нажимаем кнопку «ОК».

Создав DSN для существующей базы данных, можно модифицировать предыдущую программу для проверки функционирования механизма ODBC. При этом необходимо отметить, что для новой базы данных необходимо создать рабочую область, то есть описать переменную типа Workspace, присвоить ей значение методом CreateWorkspace, в аргументах которого явно указать механизм доступа ODBC:

Set wrk = CreateWorkspace("wrk", "", "", dbUseODBC)

Для открытия базы данных через ODBC рекомендуется использовать метод OpenConnection, который отличается от OpenDatabase только тем, что предполагает использование ODBC, а не Jet. Результатом работы этого метода является объектовая переменная типа Connection:

Set conn = wrk.OpenConnection("Table", , , "odbc;DSN=Tab")

Здесь первым аргументом является имя соединения, а не имя DSN.

При открытии набора записей через ODBC он по умолчанию открывается только для перемещения вперед, а потому применение в нем методов MoveFirst, MovePrevious вызывает ошибку. Для ее недопущения набор записей надо открывать как динамический:

Set rs = conn.OpenRecordset("select * from Table1", dbOpenDynamic)

Механизм ODBC работает медленнее, чем Jet, поэтому перед определением количества полученных записей через свойство RecordCount необходимо применить метод MoveLast.

Для организации доступа к удаленной базе данных необходимо иметь на удаленном компьютере установленный Microsoft SQL Server v.6.5 или v.7.0 и создать DSN с использованием драйвера SQL. При этом необходимо указать имя (или адрес) SQL-сервера, выбрать режим проверки пользователя (средствами Windows NT, если сеть функционирует под этой операционной системой, или с помощью имени и пароля пользователя, заданных средствами SQL-сервера. Кнопкой «Настройка клиента» можно выбрать протокол связи и номер порта по этому протоколу. После нажатия кнопки «Далее» производится проверка подключения к SQL-серверу.