Você está offline; aguardando reconexão

Como acessar vários bancos de dados em uma consulta SQL no VB 3.0

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 113701
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sumário
Ao acessar dados de mais de uma fonte de dados simultaneamente em uma única consulta, provavelmente você desejará usar o mais rápido e mais generalmethod - anexar as tabelas de fontes de dados diferentes para um banco de dados singleMicrosoft. Nesse ponto, consulta que se estendem por dois differentdatabases podem ser construídos como se todas as tabelas, conectada ou local, werelocal no banco de dados do Microsoft Access.
Anexar tabelas tem um desempenho poderoso e vantagens administrativas – especialmente se você está executando consultas repetidamente. No entanto, às vezes youmight quer levar a rota mais lenta descrita neste artigo quando você seja necessário usar consultas ad hoc que abrange dois ou mais bancos de dados. Este articleexplains como criar essas consultas de bancos de dados mais lentas.
Mais Informações
Há dois métodos que você pode usar para especificar que um banco de dados fora de onethat á aberto no momento.

Método um

Microsoft Access SQL fornece uma cláusula IN que permite que você se conectar ao banco de dados do anexternal (um banco de dados diferente do banco de dados atual). Este methoddoes, no entanto, limitar você apenas um banco de dados externo ao mesmo tempo.

A cláusula IN possui duas partes, nome do banco de dados e conectar-se a seqüência de caracteres. O databasename é um caminho totalmente qualificado para o arquivo ou a pasta que contém o arquivo de banco de dados e a seqüência de conexão contém o tipo de banco de dados e otherparameters conforme necessário.

Para especificar um banco de dados externo, acrescente um ponto e vírgula (;) para o connectpart e coloque-o entre aspas simples ou duplas. O followingexample usa a cláusula IN para especificar uma tabela (clientes) em um arquivo IVdatabase (vendas):
SELECT Customers.CustomerIDFROM CustomersIN "C:\DBASE\DATA\SALES" "dBASE IV;"WHERE Customers.CustomerID Like "A*"				
No Visual Basic, você pode criar um dynaset a partir de finalatravés exemplo acima o seguinte 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 dois

O mecanismo Microsoft Access incorporadas ao Visual Basic versão 3.0 consultas SQL canparse para incluir a seqüência de conexão usada para abrir um databaseobject. A cláusula From da instrução SQL aceita um qualifiedtable nome totalmente, que permite a colocação de seqüência de conexão em squarebrackets antes do nome da tabela. A seqüência de conexão é separada do nome de thetable por um período. Esse método permite que você se conectar a bancos de dados de multipleexternal ao mesmo tempo.

Você pode acessar qualquer tabela em um dos dois bancos de dados dentro de um único selectstatement usando a seguinte sintaxe:
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 exemplo associa duas tabelas de dois diferentes bancos de dados, uma fonte de ODBCdata e a outra uma tabela dBASE III no diretório C:\DBASE3.

Em geral, a seqüência de conexão usada aqui colchetes é idêntica da propriedade de conexão de uma TableDef ao anexar ou o quarto parameterof a instrução OpenDatabase. Será em uma das três formas dependingon o banco de dados (ODBC, ISAM ou Microsoft Access).

Para bancos de dados ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;PWD=<strong password>]				
Para bancos de dados 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 bancos de dados do Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]				
Observe o ponto e vírgula à esquerda para bancos de dados do Microsoft Access é importante. Esta é exatamente a mesma cadeia de caracteres necessária para preencher a propriedade Connect do objeto aTableDef antes de anexar a tabela para um formatdatabase do Microsoft Access. Vírgula à esquerda é um espaço reservado para a especificação de databaseformat desnecessários e permite que o "banco de dados =" cláusula a seguir.

Exemplo de código de uma consulta de banco de dados múltiplos

Este exemplo cria um dynaset associação de duas tabelas de duas fontes de dados, um um SQL Server e o outro um banco de dados do Microsoft Access. O TestTabtable é sobre o SQL Server e a tabela T1 está no Accessdatabase da Microsoft.

Observação: Você deve alterar <username>e <strong password="">para os valores corretos antes de executar esse código. Certifique-se de que o nome de usuário tem as permissões apropriadas para executar esta operação no banco de dados.</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				

Observação especial sobre bancos de dados protegido do Microsoft Access

Se o banco de dados do Microsoft Access estiver protegido, o Visual Basic applicationmust executar o SetDataAccessOption e commandsbefore SetDefaultWorkspace executar quaisquer dados acessar código relacionado. Isso é necessário para o logon de asuccessful porque o Microsoft Access não usa o "Username =" e "PWD =" seções da seqüência de caracteres de conexão. Por exemplo:
   ' 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>"				
Quando isso é feito, consultas para o willsucceed de banco de dados protegido do Microsoft Access. No entanto, observe que por causa desse processo, há um inlimitation criado para essa técnica ad hoc; apenas uma Accessdatabase Microsoft protegido pode ser acessado com uma consulta ad hoc. Isso ocorre porque depois que o mecanismo do Microsoft Access é inicializado em uma sessão com um determinado nome de usuário e senha combinação, esses valores serão mantidos até a sessão (programa executável Visual Basic ou sessão do ambiente VB. EXE) termina.

No entanto, se precisarem de mais de dois bancos de dados protegidos do Microsoft Access para beaccessed para uma consulta, a melhor abordagem é mover os bancos de dados de fromsecured real de tabelas em um banco de dados protegido. Para fazer isso, você precisa changethe senha para a conta de administrador para "" temporariamente durante a transferoperations. Em seguida, você pode usar o código do Visual Basic, como no exemplo de dataaccess Visdata, para copiar as tabelas.
Referências
Para obter informações adicionais sobre a segurança do Microsoft Access, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
105990 INFO: Como Visual Basic 3.0 lida segurança definida pelo Microsoft Access

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 113701 - Última Revisão: 05/21/2016 08:57:00 - Revisão: 4.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtpt
Comentários
d(m);