Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

gastao

passar de bases de uma base de dados para outra!!!

Recommended Posts

gastao

Boa noite,

É a primeira vez que escrevo no forum, e tou a ver que aqui ajudam dentro dos possiveis, tenho as bases notórias de .net, e desde ja tou a fazer migraçao de vb.net 2003 para 2008 pelo q ando um bocado a nora em termos de ligações e por ai fora...

Pronto falando de coias serias, o q eu desejo fazer e do genero de um integrador de bases de dados, ou seja tenho Base de dados A e B, e quero passar por exemplo campos existentes de uma tabela econtrada na base de dados A para uma tabela completamente distinta da base de dados B, estas bases dados sem tar interligadas uma a outra. sejam bases de dados feitas em access pra ja

Se alguem me puder dar umas luzes sobre este assunto agradecia

a todos Abraços;

Share this post


Link to post
Share on other sites
José Lopes

integrador de bases de dados :dontgetit:

A mim parece-me que queres criar código para criares objectos numa BD que existam noutra....

Pelo que conheço... à excepçao da utilização das próprias ferramentas da BD para importação de dados... não existe nada para fazeres o que queres.... nos grandes SGBD's... tu podes criar todos os objectos por código... é na boa... mas em access... nao me lembra de ter visto isso...

Estou aqui a lembrar-me por exemplo dos CMS em PHP, e de alguns scripts de php... trazem código embutido para criar e povoar base de dados... logo é possivel.... agora.. copiar de uma para a outra.... não sei não....


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
jpaulino

Pelo que estou a ler parece-me que vais ter de ler uma e depois verificar se existe na outra e, caso não exista, escrever.

No entanto é melhor, e uma vez que parece algo complexo, explicares um pouco melhor e dares alguns exemplos.

Share this post


Link to post
Share on other sites
gastao

sim jpaulino, entendes te me o que eu keria, ou seja Base de dados A com tabela x com os campos exemplo id,nome,tipo e base de dados B com tabela y com is campos id, nome, idade mas so eu querendo verificar se esse nome ja existe na base dados B se nao existir escrever...

Share this post


Link to post
Share on other sites
jpaulino

Mas os campos têm algo em comum ?

Isto não é uma questão que se responde com um exemplo e aplica-se no teu código. Tens de ler um pouco, fazer alguns testes, antes de funcionar como deve ser.

Vê este exemplo:

VB.NET: Utilizando o controlo ComboBox

Mostra como ler informação de uma tabela de access e preencher um dataset. O dataset poder ter uma ou mais tabelas, mas a ideia é leres a informação para um dataset da tabela A e repetir para a tabela B.

Depois poder verificar que informação tens em uma e não em outra (de acordo com um critério que defines) e escrever na tabela que está em falta.

Dá trabalho mas não é nada que não se faça.

Poder explicar no entanto qual é o objectivo ? Pode ser que exista uma solução mais agradável e simples de implementar.

Share this post


Link to post
Share on other sites
gastao

Os campos tem algo em comum como assim???  so mesmo o tipo do campo!

Pois a Base dados B encotrasse  Vazia!

o objectivo  q quero construir, e mais do genero de ter umas bases de dados com dados e ir buscar informaçao que me vao preenchendo a Vazia;

Share this post


Link to post
Share on other sites
gastao

ou seja base de dados A tenho a tabela alunos, e nessa tabela existem os campos ids, nome, idade, mail... e na base de dados tambem existe uma tabela alunos (com outro nome), com os campos ids, nome, idade.... por ai fora, mas esta bd B estando vazia, so quero passar os dados de uma pra outra sem colidir informação e repetir no intuito de tentar fazer uma base de dados de varias!

Share this post


Link to post
Share on other sites
jpaulino

ou seja base de dados A tenho a tabela alunos, e nessa tabela existem os campos ids, nome, idade, mail... e na base de dados tambem existe uma tabela alunos (com outro nome), com os campos ids, nome, idade.... por ai fora, mas esta bd B estando vazia, so quero passar os dados de uma pra outra sem colidir informação e repetir no intuito de tentar fazer uma base de dados de varias!

Então só tens de ler como te mostrei e depois criar um ciclo nos dados lidos e inserir na base de dados final.

Vê o exemplo que te mostrei para ler a informação, implementa ou tenta implementar, e à medida que vais tendo dúvidas vais perguntando.

Não se pode colocar o código e dizer: "toma, é assim" porque envolve muita coisa.

Share this post


Link to post
Share on other sites
gastao

tenho as tabelas a aparecerem me no form e agora tenho um botao que me vai fazer a passagem de um lado pro outro nAS bases de dados mas tou uma beca a nora...

tenho que abrir as conexoes do genero:

If ****.State = ConnectionState.Open Then ****.Close()

        If conB.State = ConnectionState.Open Then conB.Close()

        Dim st = "Insert into conb.tabela(id,nome,value) Select * from ****.tabela"

        Dim cmd As New OleDbCommand(st, ****)

        Dim cmd1 As New OleDbCommand(st, conB)

        ****.Open()

        cmd1.ExecuteNonQuery()

so que isto da erro

Share this post


Link to post
Share on other sites
jpaulino

E as tabelas têm os mesmos campos ? É que isso é para inserir os id,nome,value com todos os que vêm da tabela.

Não testei mas devia ser assim

"insert into tabela(id,nome,value) values (select a,b,c from outratablea)"

Share this post


Link to post
Share on other sites
jpaulino

Em access nunca testei esses comandos complexos (ler e escrever ao mesmo tempo) mas acho que funciona sem problemas.

Vou ter de testar melhor mas confere se os campos são do mesmo tipo (tamanho, tipo, etc)

Share this post


Link to post
Share on other sites
gastao

isso confirmo te pk sao duas bases de dados iguais so q a base de dados B q kero passar as coisas esta vazia

Share this post


Link to post
Share on other sites
gastao

Boas novamente,

tendo duas bases de dados,em mdb como vou conseguir passar a informação de uma para outra.

Ja abri as conexoes a base de dados, agora o q me falta e do genero ter um botao e fazer a query q nao tou a ver como! alguem csg dar uma ajudinha?

Share this post


Link to post
Share on other sites
gastao

- Como assim?? e q eu nao sei como faço para passar de uma base de dados para outra percebes!

Share this post


Link to post
Share on other sites
gastao

tal e qual o que eu quero fazer... so que nao sei do genero sei  q tenho de abrir as duas bases de dados ou seja liga las isso na boa, so q falta me o statement em sql q tou a nora nao sei com ir buscar da tabela A da base de dados A para por na Tabela B na base de dados B, isso depois o que kero fazer e so fazer uma copia tambem dos campos q eu desejo das umas luzes sff?

Share this post


Link to post
Share on other sites
PauloR

Trabalha apenas com uma ligação e uma base de dados.

Fazes o link das tabelas da 2ª DB na primeira e apenas trabalhas com uma DB.

Vai facilitar muito o processo.

Share this post


Link to post
Share on other sites
gastao

Trabalha apenas com uma ligação e uma base de dados.

Fazes o link das tabelas da 2ª DB na primeira e apenas trabalhas com uma DB.

Vai facilitar muito o processo.

Tipo mas isso nao me intressa pk imagina eu tenho varias bases de dados para uma final, eu assim tinha dois ou tres trabalhos, e do genero tenho uma base de dados destino e nas q kero comparar ou ir buscar dados posso sempre indo mundando! uma das razoes que quero bases de dados diferentes, so precisava de um pequeno exemplo, e q tou completamente a nora

Share this post


Link to post
Share on other sites
PauloR

Não vejo porque razão vais ter mais trabalho assim.

Tens a BD "x" que é para onde vais copias os dados correcto?

Tens as BD "a" "b" "c" etc que é onde trabalhas correcto?

Se tiveres as tabelas da BD "x" linkadas na "a", "b", "c" sabes sempre o que tens na BD final e o que deves ou não copiar.

Assim apenas precisas de trabalhar com "a" ou com a "b" ou com a "c" etc ... e a "x" tem os registos de todas as outras BD...

Share this post


Link to post
Share on other sites
gastao

nao pk eu para isso tenho q tar a abrir a base de dados e espetar la as tabelas assim faço logo em runtime pk vou usar campos especificos msm

Share this post


Link to post
Share on other sites
PauloR

Se queres inserir na tabela final os valores que te falta da tabela inicial tens de fazer o insert assim:

Isto é um exemplo mas acho que é isto que necessitas


INSERT INTO BDFinal_Table1 (codigo, desc1, desc2) 
SELECT * FROM table1 WHERE ((table1.codigo) NOT IN (select codigo FROM BDFinal_Table1))

Com o cenário das tabelas linkadas só tinhas de correr este SQL quando precisasses de fazer actualizações a base de dados final.

nem mais nem menos  :)

Share this post


Link to post
Share on other sites
gastao

tenho de momento algo assim do genero que nao esta a funcionar, alguem me consegue dar uma dica?

    
    Dim conB As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider = Microsoft.jet.OleDB.4.0;Data Source = " & OpenFileDialog1.FileName)
        Dim **** As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider = Microsoft.jet.OleDB.4.0;Data Source = " & OpenFileDialog1.FileName)
        ****.Open()
        conB.Open()
        Dim selecao As String
        selecao = "select * from Tabela1"
        Dim oledbselect As New OleDbCommand(selecao, conB)
        oledbselect.ExecuteNonQuery()

        Dim insere As String
        insere = "insert into Tabela1"
        Dim oledbinsere As New OleDbCommand(insere, ****)
        oledbinsere.ExecuteNonQuery()
        ****.Close()
        conB.Close()
   

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.