Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

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

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.
Resumen
Al acceder a datos de más de un origen de datos en unsolo consulta al mismo tiempo, probablemente deseará utilizar el más rápido y más generalmethod: adjuntar las tablas de los orígenes de datos diferentes a una base de datos de Access singleMicrosoft. Consulta en ese momento, que ocupan dos differentdatabases se puede construir como si todas las tablas, conectada o local, werelocal la base de datos de Microsoft Access.
Asociar tablas tiene un rendimiento potente y ventajas administrativas, especialmente si se ejecutan las consultas repetidas veces. Sin embargo, a veces youmight desee tomar la ruta más lenta que se describe en este artículo cuando puede ser preciso utilizar consultas ad hoc que abarcan dos o más bases de datos. Este articleexplains cómo construir estas consultas entre bases de datos más lento.
Más información
Existen dos métodos que puede utilizar para especificar que una base de datos fuera de la unaque 's abierto actualmente.

Método uno

Microsoft Access SQL proporciona una cláusula IN que permite conectarse a la base de datos de anexternal (una base de datos distinta de la actual). Este methoddoes, sin embargo, un límite a sólo una base de datos externa a la vez.

La cláusula IN consta de dos partes, el nombre de la base de datos y la cadena de conexión. El databasename 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 otherparameters según sea necesario.

Para especificar una base de datos externa, se anexa un punto y coma (;) a la connectpart y se escribe con comillas simples o dobles. El followingexample utiliza la cláusula IN para especificar una tabla (clientes) de dBASE IVdatabase (ventas):
SELECT Customers.CustomerIDFROM CustomersIN "C:\DBASE\DATA\SALES" "dBASE IV;"WHERE Customers.CustomerID Like "A*"				
En Visual Basic, puede crear un objeto dynaset de la byusing del ejemplo anterior el siguiente código de 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				

Método dos

El motor de Microsoft Access incorporado en la versión de Visual Basic 3.0 consultas SQL de canparse para incluir la cadena de conexión utilizada para abrir una databaseobject. La cláusula From de la instrucción SQL acepta un qualifiedtable nombre, lo que permite la colocación de la cadena de conexión en squarebrackets antes del nombre de la tabla. La cadena de conexión se separa del nombre de la tabla por un punto. Este método le permite conectarse a bases de datos de multipleexternal al mismo tiempo.

Puede acceder a cualquier tabla en cualquiera de las dos bases de datos dentro de un único instrucciónSelect mediante esta sintaxis:
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				
Este ejemplo combina dos tablas de dos bases de datos, un origen ODBCdata de uno y el otro una tabla dBASE III 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 parameterof la instrucción OpenDatabase. Será en uno de tres formas dependingon la base de datos (ODBC, ISAM o Microsoft Access).

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

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

Este ejemplo crea un objeto dynaset combinar dos tablas de dos orígenes de datos, uno un SQL Server y el otro es una base de datos de Microsoft Access. El TestTabtable es en el SQL Server y la tabla T1 es en el Accessdatabase Microsoft.

Nota: Debe cambiar <username>y <strong password="">a los valores correctos antes de ejecutar este código. Asegúrese de que el nombre de usuario tiene los permisos apropiados para realizar esta operación en la base de datos.</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				

Nota especial relativa a protege las bases de datos de Microsoft Access

Si la base de datos de Microsoft Access está protegida, la formalizada Visual Basic ejecute el SetDataAccessOption y commandsbefore SetDefaultWorkspace ejecutar cualquier dato acceso código relacionado. Esto es necesario para el inicio de sesión de asuccessful 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 esto se hace, las consultas a la willsucceed de base de datos protegida de Microsoft Access. Sin embargo, tenga en cuenta que debido a este proceso, es un inlimitation construido para esta técnica ad hoc; puede tener acceso solo Accessdatabase Microsoft protegidos con una consulta ad hoc. Esto es porque una vez que se inicializa el motor de Microsoft Access en una sesión, con un determinado nombre de usuario y contraseña, esos valores se mantienen hasta que la sesión (programa ejecutable de Visual Basic o sesión del entorno, VB. (EXE) finaliza.

Sin embargo, si necesitan beaccessed para una consulta más de dos bases de datos protegidas de Microsoft Access, es el mejor enfoque mover las bases de datos de tablas reales fromsecured a una base de datos protegida. Para ello, necesita changethe contraseña para la cuenta Administrador para "" temporalmente durante la transferoperations. A continuación puede utilizar código de Visual Basic, como en el ejemplo de dataaccess Visdata, copiar las tablas.
Referencias
Para obtener información adicional acerca de la seguridad de Microsoft Access, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
105990 INFO: Cómo Visual Basic 3.0 maneja la seguridad establecida por Microsoft Access

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 113701 - Última revisión: 05/21/2016 07:16:00 - Revisión: 4.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtes
Comentarios