лишь добавить две строки, которые устанавливают свойства Connect и SourceTableName для
вновь создаваемого объекта. В данном примере создается присоединенная таблица AttachTable.
Для этого используется источник данных vfp34. На вашем компьютере название таблицы и
источника данных (Data Source) могут быть иными.
Public Sub TableCREATE()
Dim myDb As DATABASE, mytdef As TableDef
Set myDb = DBEngine.Workspaces(0)("Autostore.mdb")
Set mytdef = myDb.CreateTableDef("AttachTable")
mytdef.Connect = "ODBC;dsn=vfp34"
mytdef.SourceTableName = "country"
myDb.TableDefs.Append mytdef
End Sub
Данную процедуру можно запустить как в Access, так и в Visual Basic или Microsoft Excel.
Единственное отличие последних в том, что необходимо проследить за доступностью объектов
DAO приложению. После выполнения этого или подобного кода в базе данных появится значок, а
если вы откроете присоединенную таблицу в режиме Конструктора, то, воспользовавшись
командой Свойства меню Вид, сможете прочитать в строке Описание строку Соединения.
Не забывайте, что физически присоединенные таблицы не находятся в вашей базе данных, и
требуется определенное время для связи с ней, поэтому при работе с таблицами, хранящими
большое количество данных, используйте другие, более быстрые методы выборки данных, к
примеру, параметрические запросы.
Обратим внимание, что с присоединенными таблицами нельзя использовать метод Seek.
Поэтому здесь нужно придумать другие способы оптимизации поиска, самым лучшим из которых
является, извините за назойливость, параметрический запрос.
Перед тем как использовать транзакции, необходимо выяснить, поддерживаются ли операции
такого рода в источнике данных. Для баз данных ODBC нельзя использовать вложенные
транзакции.
До сих пор мы говорили о присоединенной таблице, но можно и напрямую открыть таблицу.
Это доступно только с помощью языка программирования Basic.
Dim CurrentDatabase As Database
Dim MySet As Recordset
'Открываем внешнюю базу данных формата FoxPro
Set CurrentDatabase = DBEngine.Workspaces(0).OpenDatabase_
("C:\FOXPRO\DATA\", False, False, "FoxPro 2.5")
'Открываем таблицу Customer
Set MySet = CurrentDatabase.OpenRecordset("Customer")
В приведенном примере в начале делается текущей база данных внешнего формата (в нашем
случае, так как FoxPro 2.х не поддерживает понятие базы данных как контейнера таблиц, это
каталог C:\FOXPRO\DATA\), а затем напрямую открывается таблица покупателей в этом каталоге.
Понятно, что никакого значка для данной таблицы в текущей базе данных не появится и
работать с этими данными мы сможем только программным способом. Еще одним недостатком
данного метода доступа к внешним данным является более медленная, по сравнению с
присоединенной таблицей, скорость работы.
Помимо присоединения уже существующих таблиц, хранящихся в источнике данных, вы
можете создавать новые таблицы, которые станут присоединенными.
Ниже приводится простейший пример создания таблицы формата FoxPro 2.6.
Dim CurrentDatabase As Database
Dim MyTableDef As TableDef
Set CurrentDatabase =_ DBEngine.Workspaces(0).OpenDatabase("C:\DATA", False,_ False, "FoxPro
2.6")
Set MyTableDef =_ CurrentDatabase.CreateTableDef("FromAccess")
MyTableDef.Fields.Append MyTableDef.CreateField("Field1", DB_TEXT, 15)
CurrentDatabase.Tabledefs.Append MyTableDef
Следующим способом для работы с данными на сервере, который мы рассмотрим, будет SQL
pass-through. Выборка данных при использования SQL pass-through проходит быстрее, так как
запрос сразу отправляется на сервер, минуя процессор баз данных Jet. Но полученные запросы
являются не модифицируемыми, то есть изменения в них не передаются на сервер.
Следовательно, вам нужно использовать какие-то другие способы для обновления данных на
converted to PDF by HupBaH9I