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

Переводы статьи Переводы статьи
Код статьи: 113701
Развернуть все | Свернуть все

В этой статье

Аннотация

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

Дополнительная информация

Существует два метода, которые можно использовать для указания базы данных вне один который в настоящее время открыт.

Способ 1

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

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

Для задания внешней базы данных, добавить точку с запятой (;) для подключения деталей и заключить ее в одинарные или двойные кавычки. Ниже пример использует предложение для указания таблицы (Заказчики) в dBASE IV База данных (продажи):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
В Visual Basic можно создать динамический набор из приведенного выше примера используя следующий код Visual Basic:
Dim db As Database
Dim ds As Dynaset
Dim 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.MoveNext
Wend
				

Способ 2

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

Можно получить доступ к любой таблицы в любой из двух баз данных внутри одного выделения оператор с помощью следующего синтаксиса:
SELECT tbl1.fld1,tbl2.fld1
FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,
[dbase iii;database=C:\DBASE3].tbl2
WHERE 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 database
Dim ds As dynaset
Dim 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.MoveNext
Wend
				

Специальное примечание спецификаций защищенных баз данных 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 - Последний отзыв: 1 июня 2011 г. - Revision: 4.0
Ключевые слова: 
kbhowto kbsqlprog kbmt KB113701 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:113701
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com