QUAL A SOLUCAO MAIS INTELIGENTE NESTE CASO?

MARCOS 29/03/2010 14:39:02
#338126
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




TEMPESTADE 29/03/2010 15:38:39
#338135
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
MARCOS 30/03/2010 09:18:14
#338202
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????
EDERMIR 30/03/2010 23:24:18
#338299
Então a sua dúvida é na linguagem SQL?
MARCOS 31/03/2010 10:18:38
#338312
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???
LLAIA 31/03/2010 10:22:38
#338313
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.
WEBMASTER 31/03/2010 12:30:21
#338324
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
JESUEL.OLIVEIRA 02/04/2010 15:10:46
#338432
Resposta escolhida
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