Cómo obtener acceso a varias bases de datos de una consulta SQL en VB 3.0

Seleccione idioma Seleccione idioma
Id. de artículo: 113701 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Al tener acceso a datos de más de un origen de datos simultáneamente en una sola consulta, probablemente querrá utilizar el método más rápido y más general--adjuntar las tablas de los orígenes de datos diferente a una base de datos único de Microsoft Access. En ese momento, se pueden construir consultas que abarquen dos bases de datos diferentes como si fueran locales en la base de datos Microsoft Access todas las tablas, locales, o adjuntas.
Asociar tablas tiene rendimiento eficaz y ventajas administrativas--, especialmente si se ejecutan consultas repetidamente. Sin embargo, a veces quizás desee tomar la ruta más lenta descrita en este artículo cuando es necesario utilizar consultas ad hoc que abarca dos o más bases de datos. En este artículo se explica cómo crear estas consultas de base de datos entre más lentas.

Más información

Hay dos métodos que se puede utilizar para especificar una base de datos fuera de lo que está actualmente abierta.

Primer método

Microsoft Access SQL proporciona una cláusula IN que permite conectarse a una base de datos externa (una base de datos diferente de la base de datos actual). Este método realiza, sin embargo, limitar a sólo una base de datos externo a la vez.

La cláusula IN tiene dos partes, nombre de base de datos y conectar cadena. El nombre de base de datos es una ruta de acceso completa al archivo o directorio que contiene el archivo de base de datos y la cadena de conexión contiene el tipo de base de datos y otros parámetros según sea necesario.

Para especificar una base de datos externo, anexe un punto y coma (;) para la conexión parcial y se escribe con comillas simples o dobles. En el ejemplo siguiente se utiliza la cláusula IN para especificar una tabla (clientes) en una base de datos de dBASE IV (ventas):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
en Visual Basic, puede crear un objeto de tipo dynaset en el ejemplo anterior utilizando el siguiente código de 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
				

Segundo método

El motor de incorporado a Visual Basic versión 3.0 de Microsoft Access puede analizar las consultas SQL para incluir la cadena de conexión utilizada para abrir un objeto de base de datos. La cláusula FROM de la instrucción SQL acepta un nombre de tabla completo, que permite selección de ubicación de la cadena conectar square brackets delante del nombre de tabla. La cadena de conexión está separada de nombre de la tabla por un período. Este método permite conectarse a varias bases de datos externos al mismo tiempo.

Puede obtener acceso a cualquier tabla en cualquiera de dos bases de datos dentro de una única instrucción select mediante esta sintaxis:
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
				
este ejemplo combina dos tablas de dos bases de datos diferentes, uno un origen de datos ODBC y el otro un dBASE III tabla en el directorio C:\DBASE3.

En general, la cadena de conexión que se utiliza aquí en corchetes es idéntica a la propiedad Connect de un objeto TableDef al adjuntar o el cuarto parámetro de la instrucción OpenDatabase. Será en uno de tres formas dependiendo de la base de datos (ODBC, ISAM o Microsoft Access).

Para bases de datos ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
bases de datos ISAM para:
   [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]
				
bases de datos para Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]
				
Nota el punto y coma inicial para las bases de datos de Microsoft Access es importante. Esto es exactamente la misma cadena necesaria para rellenar la propiedad Connect de un objeto TableDef de antes de adjuntar la tabla a una base de datos de formato de Microsoft Access. El punto y coma inicial es un marcador de posición la especificación de formato de base de datos innecesarios y permite la "base de datos =" cláusula siga.

Ejemplo de código de una consulta de varias bases de datos

Este ejemplo crea un dynaset combinar dos tablas de orígenes de datos de dos, uno un servidor SQL Server y el otro una base de datos de Microsoft Access. La tabla de TestTab es en el servidor SQL Server y la tabla T1 se encuentra en la base de datos Microsoft Access.

Nota <username>Debe cambiar <nombredeusuario> < contraseña > y a los valores correctos antes de ejecutar este código. Asegúrese de que nombre de usuario tiene los permisos adecuados realizar esta operación en la base de datos.
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
				

Acerca de Nota especial seguros bases de datos de Microsoft

Si la base de datos Microsoft Access está protegida, la aplicación de Visual Basic, debe ejecutar el SetDataAccessOption y comandos SetDefaultWorkspace antes de ejecutar cualquier tipo de datos tener acceso a código relacionado. Esto es necesario para iniciar sesión correctamente porque Microsoft Access no utiliza el "nombre de usuario ="y"PWD =" secciones de la cadena de conexión. Por ejemplo:
   ' 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>"
				
cuando se hace esto, se realizará correctamente las consultas a la base de datos protegida de Microsoft Access. Sin embargo, tenga en cuenta puede tener acceso a que, porque de este proceso, hay una limitación integrada para esta técnica ad hoc; sólo protege la base de datos de Microsoft con una consulta ad hoc. Esto es porque una vez inicializado el motor de Microsoft Access en una sesión con una combinación de nombre y contraseña de usuario en particular, esos valores se conservan hasta que la sesión (de programa ejecutable de Visual Basic o de sesión del entorno, VB.EXE) termina.

Sin embargo, si más de dos bases de datos protegidas de Microsoft Access necesitan tener acceso para una consulta, es el mejor enfoque mover las tablas reales de las bases de datos protegidas en una base de datos protegida. Para ello, deberá cambiar la contraseña de la cuenta de administrador para "" temporalmente durante las operaciones de transferencia. A continuación, podría utilizar código de Visual Basic, tales como en el ejemplo de acceso a datos Visdata, para copiar las tablas.

Referencias

Para obtener información adicional acerca de la seguridad, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
105990INFO: Cómo Visual Basic 3.0 identificadores de seguridad establecido por Microsoft Access

Propiedades

Id. de artículo: 113701 - Última revisión: viernes, 1 de septiembre de 2006 - Versión: 3.1
La información de este artículo se refiere a:
  • Microsoft Visual Basic 3.0 Professional Edition
Palabras clave: 
kbmt kbhowto kbsqlprog KB113701 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 113701
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

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