QUAL A SOLUCAO MAIS INTELIGENTE NESTE CASO?
Boa tarde!
Estou com um problema novo para mim.
Eu me conectei em duas BD. Uma remota (My sql) e outra local (Access).
As BD são idênticas.ou seja , tem a mesma estrutura.Em cada BD tenho uma tabela
chamada [Ô]Tb_Cliente[Ô].Preciso transferir todo conteúdo desta tabela, que esta na BD
do mysql para a tabela [Ô]Tb_Cliente[Ô] na BD Access.
A parte referente a conexão esta descrita abaixo.A dúvida, é como completar o
código abaixo , de modo a conseguir a transfeência dos dados de uma tabela para
outra.Algum colega, sabe dizer como ficaria???
[ô]Declara variáveis
Dim Con1 As New ADODB.Connection
Dim Con2 As New ADODB.Connection
Dim String_De_Conexao1 As String
Dim String_De_Conexao2 As String
Dim String_De_Conexao3 As String
Dim Instrucao_sql As String
[ô]---------------------------
[ô]Transfere dados
[ô]---------------------------
[ô]---------------------------
[ô]Estabelece conexão BD Local
[ô]---------------------------
[ô]Define string de conexao
String_de_conexao1 = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\BD\Db1.mdb;Persist Security Info=False;Jet OLEDB:Database Password=minha_senha[Ô]
[ô]Atribui [ô]String de conexão[Ô] para conexao [ô]Con1[ô]
Con1.ConnectionString = String_de_conexão1
[ô]Abre conexão
Con1.Open
[ô]Posiciona ponteiro
Con1.CursorLocation = adUseClient
[ô]---------------------------
[ô]Estabelece conexão BD remota
[ô]---------------------------
[ô]Define String de conexão2
String_de_conexao2 = [Ô]Driver=MySQL ODBC 3.51 Driver;DATABASE=minhaBD;SERVER=10.777.0.49;UID= usuario;PASSWORD=minha_senha;[Ô]
[ô]Atribui [ô]String de conexao2[ô] para conexão [ô]Con2[ô]
Con2.ConnectionString = String_de_conexao2
[ô]Posiciona ponteiro
Con2.CursorLocation = adUseServer
[ô]Abre a conexão2
Con2.Open
Estou com um problema novo para mim.
Eu me conectei em duas BD. Uma remota (My sql) e outra local (Access).
As BD são idênticas.ou seja , tem a mesma estrutura.Em cada BD tenho uma tabela
chamada [Ô]Tb_Cliente[Ô].Preciso transferir todo conteúdo desta tabela, que esta na BD
do mysql para a tabela [Ô]Tb_Cliente[Ô] na BD Access.
A parte referente a conexão esta descrita abaixo.A dúvida, é como completar o
código abaixo , de modo a conseguir a transfeência dos dados de uma tabela para
outra.Algum colega, sabe dizer como ficaria???
[ô]Declara variáveis
Dim Con1 As New ADODB.Connection
Dim Con2 As New ADODB.Connection
Dim String_De_Conexao1 As String
Dim String_De_Conexao2 As String
Dim String_De_Conexao3 As String
Dim Instrucao_sql As String
[ô]---------------------------
[ô]Transfere dados
[ô]---------------------------
[ô]---------------------------
[ô]Estabelece conexão BD Local
[ô]---------------------------
[ô]Define string de conexao
String_de_conexao1 = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\BD\Db1.mdb;Persist Security Info=False;Jet OLEDB:Database Password=minha_senha[Ô]
[ô]Atribui [ô]String de conexão[Ô] para conexao [ô]Con1[ô]
Con1.ConnectionString = String_de_conexão1
[ô]Abre conexão
Con1.Open
[ô]Posiciona ponteiro
Con1.CursorLocation = adUseClient
[ô]---------------------------
[ô]Estabelece conexão BD remota
[ô]---------------------------
[ô]Define String de conexão2
String_de_conexao2 = [Ô]Driver=MySQL ODBC 3.51 Driver;DATABASE=minhaBD;SERVER=10.777.0.49;UID= usuario;PASSWORD=minha_senha;[Ô]
[ô]Atribui [ô]String de conexao2[ô] para conexão [ô]Con2[ô]
Con2.ConnectionString = String_de_conexao2
[ô]Posiciona ponteiro
Con2.CursorLocation = adUseServer
[ô]Abre a conexão2
Con2.Open
Amigo Marcos,
Se vc ja consegiu realizar a conexão, com a base local e a base remota e as duas bases tem sua estrutura iguais, basta vc abrir um Recordset, na tabela e cliente, selecionando todo os registros, criar um laço, e em quanto houver valor a ser gravado, executar um insert into na base local.
Set rsT = banco.openrecordset(SqlRemota)
Do while not rsT.EOF
[ô]Inseri aqui os valores da base remota, na base local.
rsT.MoveNext
Loop
rsT.Close
Set rsT = Nothing
Se vc ja consegiu realizar a conexão, com a base local e a base remota e as duas bases tem sua estrutura iguais, basta vc abrir um Recordset, na tabela e cliente, selecionando todo os registros, criar um laço, e em quanto houver valor a ser gravado, executar um insert into na base local.
Set rsT = banco.openrecordset(SqlRemota)
Do while not rsT.EOF
[ô]Inseri aqui os valores da base remota, na base local.
rsT.MoveNext
Loop
rsT.Close
Set rsT = Nothing
Bom dia,Pessoal!
Tempestade, obrigado por sua resposta. Eu já havia pensado nisto
que sugeriu. De fato, é a solução mais óbvia. Eu postei o tópico,
porque, fiquei imaginando se os colegas não conheceriam um
modo de fazer a transferência dos dados entre as tabelas usando
uma única instrução SQL.Mas....estou começando a achar, que
[Ô]somente[Ô] com sql, não é possivel transferir os dados de uma tabela
de um Banco para outra tabela em outro BD.Minha conclusão é correta????
Tempestade, obrigado por sua resposta. Eu já havia pensado nisto
que sugeriu. De fato, é a solução mais óbvia. Eu postei o tópico,
porque, fiquei imaginando se os colegas não conheceriam um
modo de fazer a transferência dos dados entre as tabelas usando
uma única instrução SQL.Mas....estou começando a achar, que
[Ô]somente[Ô] com sql, não é possivel transferir os dados de uma tabela
de um Banco para outra tabela em outro BD.Minha conclusão é correta????
Então a sua dúvida é na linguagem SQL?
Eu digo SQL, pois repare que normalmente nós desenvolvedores quando
precisamos transportar o conteúdo de uma tabela para outra com mesma
estrutura, usamos SQL . Por isto, perguntei aos colegas se seria possÃvel
no código acima, usar uma instrução sql para fazer isto. Toda dificuldade
em usar o Insert do SQL neste caso, é que as tabelas ,embora idênticas,
estão em BD [Ô]diferentes[Ô].
Alguém, sabe se isto é possivel de ser feito???
precisamos transportar o conteúdo de uma tabela para outra com mesma
estrutura, usamos SQL . Por isto, perguntei aos colegas se seria possÃvel
no código acima, usar uma instrução sql para fazer isto. Toda dificuldade
em usar o Insert do SQL neste caso, é que as tabelas ,embora idênticas,
estão em BD [Ô]diferentes[Ô].
Alguém, sabe se isto é possivel de ser feito???
cara dá uma olhada nesse link
http://www.criarweb.com/artigos/acesso-banco-dados-externos.html
http://office.microsoft.com/pt-br/access/HA012314881046.aspx
acredito que vc possa fazer um insert com select adaptando o exemplo do link.
há muito tempo, me lembro de um exemplo onde o externo era o SQL Server.
http://www.criarweb.com/artigos/acesso-banco-dados-externos.html
http://office.microsoft.com/pt-br/access/HA012314881046.aspx
acredito que vc possa fazer um insert com select adaptando o exemplo do link.
há muito tempo, me lembro de um exemplo onde o externo era o SQL Server.
Bom, eu sugiro que voce faz um export da base no mysql para um arquivo texto e em seguida importe.
Ou ainda, voce pode tentar fazer um insert into para cada linha em um loop.
Vale lembrar voce vai star fazendo isso tudo via rede, o que nao eh recomendado dependendo do tamanho da base. De preferencia exporte um arquivo que poss ser inserido em lote
Ou ainda, voce pode tentar fazer um insert into para cada linha em um loop.
Vale lembrar voce vai star fazendo isso tudo via rede, o que nao eh recomendado dependendo do tamanho da base. De preferencia exporte um arquivo que poss ser inserido em lote
Amigo, se você quer simular um replicação nos BDs use como ja fora dito acima INSERT COM SELECT
INSERT INTO contato (nome, email, telefone, obs)
SELECT nome, email, telefone, obs FROM contato
WHERE replicado_status =false;
Tópico encerrado , respostas não são mais permitidas