Программирование >>  Проектирование интерфейса пользователя 

1 ... 28 29 30 [ 31 ] 32 33 34 ... 153


Получение информации о структуре таблицы

Вы уже научились создавать ицы с помощью инструментов Access и средств программного кода. Но наша таблица CONTACTS пока пуста. Прежде чем приступить к ее наполнению, мы еще раз вспомним о том, как открывать и закрывать соединение с базой данных и объект набора данных.

Знания о способах создания соединения и открытия набора данных вам просто необходимы. Эти операции должны предшествовать любым действиям с базами данных. Листинг 6.3 содержит пример кода, иллюстрирующего приемы создания соединения с базой данных, открытия/закрытия набора данных и отображения информации о структуре таблицы.

Листинг 6.3. Пример открытия таблицы и отображения данных о ее структуре

1: Su Fields ( ) 2: Const DatabasePath =

3: c:\Books\Teach Yourself Access 2002 + 4: ProgrammingXChapter 6\C0NTACTS.mdb

5: Const ProviderStr= Provider=Microsoft.Jet.OLEDB.4.0; +

6: Data source = + DatabasePath

1: Dim Connection As New ADODB. Connection

2: Dim Catalog As New ADOX. Catalog

3: Dim RecordSet As New ADODB. RecordSet

4: Dim Field As Field

5: Connection.Open ProviderStr

6: Set Catalog.ActiveConnection = Connection

7: RecordSet. Open CONTACTS , Catalog. ActiveConnection, adOpenKeyset

8: RecordSet.Fields.Refresh

9: For Each Field In RecordSet. Fields

10: Debug.Print Field.Name & , & Field.Type & , &

Field.Actuals!ze

11: Next

12: RecordSet.Close

13: Set RecordSet = Nothing

14: Set Catalog = Nothing

15: Connection.Close

16: Set Connection = Nothing

17.-End Sub

Обратите внимание: процедура названа подходящим именем, DisplayFields, поскольку предназначена для отображения сведений о структуре таблицы на экране (строка 1). Строки 2-6 содержат объявления объектов стандартных классов (Connection, Catalog, RecordSet и Field), разработанных Microsoft. (Более подробные сведения о них вы сможете почерпнуть из нескольких последующих глав нашей книги и файлов оперативной справочной системы Access.)

Строка 12 открывает соединение с базой данных. Набирайте этот код в том виде, в каком он приведен, за исключением фрагмента Data Source = - здесь необходимо ввести путь к каталогу, в котором находится ваш собственный экземпляр файла tacts.mdb. Строка 13 может бгть применена вами без каких-либо изменений при

открытии этой и любой другой таблицы. Строка 14 содержит инструкцию непосредст-б-й час. Управление базами данных 115



венного открытия таблицы. Чтобы применить код строки 14 для открытия другой таблицы, достаточно заменить наименование CONTACTS требуемым. Выполнение команды Refresh, содержащейся в строке 15, гарантирует получение актуальных данных. (Не забывайте, что с той же таблицей одновременно могут работать и другие программы.)

Строки 16-18 содержат циклическую конструкцию For Each - мы говорили о ней на прошлом занятии, 5-й час. Программирование управляющих структур . Команда в строке 17 выводит на экран данные о наименовании поля, его типе (в виде целого

числа) и размере. Чтобы увидеть результаты, обратитесь к средствам окна Immediate

(пример вывода данных показан на рис. 6.7). В оставшихся строках кода (19-24) выполняются операции очистки и удаления объектов данных программы. Объекты набора данных и соединения закрываются командами Close. Инструкции присваивания предопределенного значения Nothing осуществляют возврат выделенных переменным фрагментов памяти в общую область (или, как еще говорят, пул) динамически распределяемой памяти. (Подробнее о назначении Nothing и приемах его использования см. в системе оперативной справки Access.)

\ ctMitacts (contacts}

3 1

OCXJrCn ConptM 1Я1Т1л*м

Sub Dispieyrieids0

* эо-jrce - + Da-cabasePa-cJi

Dixs Ccnnecticr. is Sew ADODS .Conr.ecticr,

Did Catalog Ал Nev ADOX.Cacaicg

Dia ReccrdSet As Яе ADODS.BeccrdSeT;

rcKf >J Field CcroiecrtiGTi .Open PrcvlderSt;r Sex Catalog.AGtiveCsriTiectioii - Connecticri

ReccrdSec .Open COSTJaTS , Cataiog .Ac-civeCcraiec-cicn, adOpenKeyaet

RecardSet. Fields.Refresh

TCP £рс4: F:L*;Xd Ifi Pettru5*t. Field

Hext

RecordSet.Ciaae Set KecordSen - Nciiing Set Ca-caiog - 3ci;.*iinq Comsec-Cicn. Close ,

Set Ccimec-Cicn - Sotiiiiig End Sub

13, S, 4

FIRST NAME, 202, E LAST NAME, 202, 12 FHCNE irjMBER, 202,23 EMAIL, 202,IS


/ ыс. 6.7. Окно Immediate позволяет увидеть информацию о полях таблицы, которая хранится в виде коллекции, принадлежащей объекту RecordSet

Для корректной работы процедуры листинга 6.3 необходимо, чтобы база данных имела по крайней мере одну запись. На самом деле приведенный код, помещая данные о структуре таблицы в окне Immediate, не должен требовать наличия самих записей, тем не менее в Access 2002 с пустой таблицей он работать не будет.



Столкнувшись с любой задачей управления базой данных, вы неизбежно обратитесь к фрагментам кода, представленного в листинге 6.3. Впрочем, частота и целесообразность использования тех или иных команд зависят от многих факторов. Например, операции открытия и закрытия таблицы обычно выполняются при каждом обращении к ней, но базу данных достаточно открыть один раз, в начале программы, а закрывать имеет смысл в самом конце сеанса работы.

В следующем разделе мы рассмотрим пример заполнения таблицы данными, вводимыми пользователем.

Циклический ввод данных в таблицу

С целью решения задачи ввода данных в таблицу целесообразно воспользоваться

циклической конструкцией. Ниже мы рассмотрим пример, использующий цикл на

основе выражений For . . . Next. Чтобы упростить изложение, будем применять самые очевидные средства ввода данных. О более сложных инструментах организации графического интерфейса пользователя вы узнаете, прочитав главу 19-й час. Создание экранных форм .

Ознакомившись с текстом листинга 6.3, вы изучили приемы создания соединения с базой данных, открытия таблицы и получения данных о ее структуре. Чтобы наполнить таблицу данными, программа должна содержать инструкции вставки записи и сохранения информации, введенной пользователем, в памяти, а затем в таблице. Листинг 6.4 представляет исправленный вариант предыдущей процедуры, демонстрирующий способы ввода данных в таблицу и сохранения их.

Листинг 6.4. Пример процедуры ввода данных в таблицу

1: Sub InputData ( )

2: Const DatabasePath =

3: c:\Books\TeachYourself Access 2002 +

ProgrammingXChapter 6\C0NTACTS.mdb Cons icrosoft. Jet.OLEDB.4.0; +

Data source = + DatabasePath

4: 5 : 6:

8: Dim Connection As New ADODB.Connection 9: Dim Catalog As New ADOX.Catalog

10 : Dim RecordSet As New ADODB. RecordSet

11 : Dim Field As Field 12

13 14 15 16

17 :

18 .

19 :

20 :

21 :

23 :

24 :

25 :

26 :

Connection.Open ProviderStr

Se veConnection = Connection RecordSet.Open CONTACTS , Catalog.ActiveConnection,

adOpenDynamic, adLockOptimistic RecordSet.Fields.Refresh

Dim Temp As String Do While (1)

RecordSet.AddNew

For Each Eield In RecordSet.Fields If (Field.Name о ID ) Then Temp ( Введите значение поля & Field.Name & (0=Выход): , Field.Name)

If (Temp = Q ) Then Exit For



1 ... 28 29 30 [ 31 ] 32 33 34 ... 153

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика