Как получить доступ К нескольким базам данных в SQL-запросе в VB 3.0

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:113701
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.
Аннотация
При доступе к данным из одновременно в несколько источников данныходин запрос, может потребоваться использовать самый быстрый и наиболее общиеметод--присоединение таблиц из различных источников данных к одномуБаза данных Microsoft Access. После этого запросы, которые охватывают два различныхбазы данных могут быть созданы, как если бы все таблицы, вложенный или локальную,локальная база данных Microsoft Access.
Присоединение таблиц имеет административные преимущества--и высокая производительностьособенно, если запросы выполняются несколько раз. Тем не менее иногда вамможет потребоваться медленнее маршрута, описанных в этой статье, при необходимостиЧтобы использовать нерегламентированные запросы, которые охватывают несколько баз данных. В данной статьеОбъясняет, как создавать эти медленнее Межбазовые запросы.
Дополнительная информация
Существует два метода, которые можно использовать для указания базы данных вне одинкоторый в настоящее время открыт.

Способ 1

Microsoft Access SQL предоставляет предложение IN, который позволяет подключаться квнешних базах данных (отличных от текущей базы данных). Этот методОднако, ограничено только одной внешней базы данных одновременно.

Предложение состоит из двух частей: имя базы данных и строка подключения. База данныхимя — это полный путь к файлу или содержит каталогфайл базы данных и строка соединения содержит тип базы данных и другиепараметры нужным образом.

Для задания внешней базы данных, добавить точку с запятой (;) для подключениядеталей и заключить ее в одинарные или двойные кавычки. Нижепример использует предложение для указания таблицы (Заказчики) в dBASE IVБаза данных (продажи):
SELECT Customers.CustomerIDFROM CustomersIN "C:\DBASE\DATA\SALES" "dBASE IV;"WHERE Customers.CustomerID Like "A*"				
В Visual Basic можно создать динамический набор из приведенного выше примераиспользуя следующий код Visual Basic:
Dim db As DatabaseDim ds As DynasetDim sql As String' Open a database:Set db = OpenDatabase("C:\VB\BIBLIO.MDB")' Build the select statement, referencing the external dBASE IV file:sql = "SELECT Customers.CustomerID, FROM Customers"sql = sql & " IN 'C:\DBASE\DATA\SALES' 'dBASE IV;'"sql = sql & " WHERE Customers.CustomerID Like 'A*'"' Create the recordset:Set ds = db.CreateDynaset(sql)' Loop through and display the records:While Not ds.EOF   For i = 0 To ds.Fields.Count - 1      Print ds(i); "  ";   Next i   Print   ds.MoveNextWend				

Способ 2

Ядро Microsoft Access, в Visual Basic версии 3.0 можноразбор SQL-запросов для включения строки подключения, используемое для открытия базы данныхобъект. В предложении From инструкции SQL принимает полное имяИмя таблицы, которое допускается размещение строки подключения в квадратквадратные скобки перед именем таблицы. Отделить строки подключенияИмя таблицы с точки. Этот метод позволяет подключаться к несколькимвнешние базы данных, в то же время.

Можно получить доступ к любой таблицы в любой из двух баз данных внутри одного выделенияоператор с помощью следующего синтаксиса:
SELECT tbl1.fld1,tbl2.fld1FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,[dbase iii;database=C:\DBASE3].tbl2WHERE tbl1.fld1 = tbl2.fld1				
Этот пример соединяет две таблицы с двумя разными базами данных, один ODBCисточник данных и другие таблицы dBASE III в каталоге C:\DBASE3.

Как правило строки подключения, используемый здесь в квадратных скобках идентичнасвойству Connect TableDef при присоединении или четвертый параметринструкции OpenDatabase. Он будет одним из трех форм, в зависимости от тогов базе данных (ODBC, ISAM или Microsoft Access).

Для баз данных ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;PWD=<strong password>]				
Для базы данных ISAM.
   [paradox 3.X;database=C:\DATABASE\PARADOX3]   [foxpro 2.5;database=C:\DATABASE\FOX25]   [dbase iv;database=C:\DATABASE\DBASEIV]   [btrieve;database=C:\DATABASE\BTRIEVE\FILE.DDF]				
Для баз данных Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]				
Примечание Важно, начальные точки с запятой для баз данных Microsoft Access.Это именно та же строка, необходимые для заполнения свойства подключенияОбъект TableDef перед присоединением таблицы в формат Microsoft AccessБаза данных. Начальные точки с запятой является заглушкой ненужные базы данныхСпецификация формата и позволяет "базы данных =" предложение следовать.

Пример запроса к базе данных нескольких

В этом примере создается динамический набор объединения двух таблиц из двух источников данных,один SQL Server и другие базы данных Microsoft Access. TestTabтаблица находится на SQL Server и в Microsoft Access является таблица T1База данных.

Примечание Необходимо изменить <username> и <strong password=""> для правильного значения перед выполнением этого кода. Убедитесь, что имя пользователя имеет соответствующие разрешения на выполнение этой операции в базе данных.</strong></username>
Dim db As databaseDim ds As dynasetDim sql As String, Uid$, Pwd$Set db = OpenDatabase("C:\VB\BIBLIO.MDB")' This obtains a valid database object. It does not have to be a Microsoft' Access database; the following works equally as well:' Set db = OpenDatabase("C:\FOXPRO25\", 0, 0, "foxpro 2.5")' The values here are hard-coded, but you could prompt the user for their' user id and password.Uid$ = <username>Pwd$ = <strong password>' Build the select statement, concatenating the user's id and password:sql = "SELECT T1.F2, TestTab.F2, TestTab.F3"sql = sql & " FROM [;database=C:\ACCESS\DB1.MDB].T1 , "sql = sql & " [odbc;dsn=texas;database=playpen;Username=" & Uid$sql = sql & ";PWD=" & Pwd$ & "].TestTab"sql = sql & " WHERE T1.F1 = TestTab.F1"' Execute the select query:Set ds = db.CreateDynaset(sql)' Loop through and display the records:While Not ds.EOF   For i = 0 To ds.Fields.Count - 1      Print ds(i); "  ";   Next i   Print   ds.MoveNextWend				

Специальное примечание спецификаций защищенных баз данных Microsoft Access

Если база данных Microsoft Access защищена, приложение Visual Basicнеобходимо выполнять команды SetDataAccessOption и SetDefaultWorkspaceПеред выполнением любого кода доступа к данным см. Это необходимо дляуспешного входа в систему, поскольку Microsoft Access использует "Username =" и«PWD = "части строки подключения. Например:
   ' Establish the location of the SYSTEM.MDA files if in another   ' directory other than the \WINDOWS directory:   SetDataAccessOption 1, "C:\MYDIR\MYAPP.INI"   ' Log on to a valid account:   SetDefaultWorkspace "admin", "<password>"				
После этого запросы для защищенной базы данных Microsoft Access будетуспешно. Тем не менее отметьте, что из-за этого процесса, встроеннаяограничение для этого приема компьютер-компьютер; только один защищены в Microsoft AccessБаза данных может осуществляться с помощью нерегламентированного запроса. Это происходит потому, что послеИнициализации модуля Microsoft Access в сеансе с определенным пользователемсочетание имени и пароля, эти значения сохраняются до сеанса(Исполняемый файл Visual Basic или сеанса среды VB.(EXE)заканчивается.

Однако если более чем двух защищенных баз данных Microsoft Access должны бытьдоступ для запроса наилучшим решением является перемещение собственно таблицы иззащищенными базами данных в одной защищенной базы данных. Для этого необходимо изменитьпароль для учетной записи администратора для "" временно во время переносаоперации. Затем можно использовать код Visual Basic, например, в данныхпример доступа к Visdata для копирования в таблицах.
Ссылки
Для получения дополнительных сведений о безопасности Microsoft Access обратитесь к следующей статье базы знаний Майкрософт:
105990ИНФОРМАЦИЯ: Как Visual Basic 3.0 дескрипторы безопасности устанавливаются в Microsoft Access

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 113701 — последний просмотр: 06/01/2011 09:22:00 — редакция: 4.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtru
Отзывы и предложения