|
Программирование >> Проектирование интерфейса пользователя
Получение информации о структуре таблицы Вы уже научились создавать ицы с помощью инструментов 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |