CACO8 Posted June 6, 2013 at 05:22 PM Report #511406 Posted June 6, 2013 at 05:22 PM Boa tarde. A minha dúvida tem a ver com a possibilidade ou não de relacionar tabelas de diferentes bases de dados. Na prática o que tenho em mãos são 2 tabelas access (BDPROJ1 e BDPROJ2), cada uma na sua base de dados (BD1 e BD2). O que pretendo é selecionar informação destas duas tabelas e copiá-la para uma terceira tabela (BDPROJ3) que se encontra numa terceira base de dados (BD3). Estou a trabalhar em Visual Basic Express 2010 e access 2007. É possível fazer isto? Obrigado pela atenção e ajuda.
legd1991 Posted June 6, 2013 at 07:55 PM Report #511421 Posted June 6, 2013 at 07:55 PM Vê se este link te ajuda http://office.microsoft.com/pt-pt/access-help/ligar-tabelas-num-projecto-do-access-utilizando-o-assistente-para-ligacao-de-tabelas-adp-HP003089371.aspx
Solution bioshock Posted June 7, 2013 at 08:29 AM Solution Report #511465 Posted June 7, 2013 at 08:29 AM É. Envias a informação das duas tabelas inciais para DataSets (por exemplo), depois juntas os dois DataSets num só e por fim envias para a 3ª base de dados. https://wiki.portugal-a-programar.pt/dev_net/vb.net/access/
CACO8 Posted June 7, 2013 at 10:48 PM Author Report #511609 Posted June 7, 2013 at 10:48 PM (edited) Funcionou obrigado pela ajuda até então. Mas em relação ao trabalho que estou a desenvolver tenho mais uma questão. Na tabela BDPROJ2 tenho várias valores numa coluna chamada "COD ROTINA". Na tabela BDPROJ1 tenho vários valores de numa coluna chamada "equip". O objetivo é fazer com que os valores que se encontram na coluna "COD ROTINA" surjam sempre que apareça um valor da coluna "equip" associado. Por exemplo na coluna "COD ROTINA" se tiver 8 valores associados a um equipamento e se na coluna "equip" tiver 3 equipamentos que se encontrem associados àquelas rotinas o que pretendo é que para cada valor da coluna "equip" apareçam os 8 valores da tabela "COD ROTINA". OU seja 8*3 = 24 linhas. No código que desenvolvi em baixo o que me está a acontecer é que se tiver os 3 valores na coluna "equip" e os 8 valores na coluna "COD ROTINA" o que aparece no datagridview é apenas o primeiro valor da coluna "equip" associado aos 8 valores da coluna "COD ROTINA". Os outros 2 valores nem sequer surgem. Eu fiz um ciclo FOR nas duas tabelas que pretendo comparar mas não me aparecem os valores todos. Espero ter sido claro na explicação do meu problema. Mais uma vez agradeço toda a ajuda que me prestaram até aqui e toda a que me possam prestar. CÓDIGO: 'define a string de conexão com o banco de dados Dim strConn As String = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC\Documents\IST\Tese\Bases de dados Access\2ªtentativa\MAC01EQ01.accdb" 'define o objeto OledbConnection usando a string de conexão Dim conexao As New OleDbConnection(strConn) 'define a string de conexão com o banco de dados Dim strCon As String = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC\Documents\IST\Tese\Bases de dados Access\2ªtentativa\BD2.accdb" 'define o objeto OledbConnection usando a string de conexão Dim conex As New OleDbConnection(strCon) 'define a instrução SQL que será usada para extrair as linhas da tabela Authors Dim sql1 As String = "SELECT * FROM BDPROJ1 ORDER BY [COD EQUIPAMENTO]" 'define a instrução SQL2 que será usada para extrair as linhas da tabela Publishers Dim sql2 As String = "SELECT * FROM BDPROJ2" 'Cria o objeto DataAdapter Dim adaptador1 As New OleDbDataAdapter(sql1, conexao) Dim ds1 As New DataSet("BDPROJ1") adaptador1.Fill(ds1, "BDPROJ1") Dim dt1 As DataTable dt1 = ds1.Tables("BDPROJ1") 'Cria o objeto DataAdapter Dim adaptador2 As New OleDbDataAdapter(sql2, conex) Dim ds2 As New DataSet("BDPROJ2") adaptador2.Fill(ds2, "BDPROJ2") Dim dt2 As DataTable dt2 = ds2.Tables("BDPROJ2") Dim dt3 As New DataTable dt3.Columns.Add("TIPO", GetType(String)) dt3.Columns.Add("COD" GetType(String)) dt3.Columns.Add("REF", GetType(String)) dt3.Columns.Add("MARCA", GetType(String)) dt3.Columns.Add("MODELO", GetType(String)) dt3.Columns.Add("SN", GetType(String)) dt3.Columns.Add("COD ROTINA", GetType(String)) dt3.Columns.Add("OPERAÇÃO", GetType(String)) dt3.Columns.Add("PERIODICIDADE", GetType(String)) dt3.Columns.Add("PERIODICIDADE DIAS", GetType(String)) dt3.Columns.Add("INDICADOR 1", GetType(String)) dt3.Columns.Add("INDICADOR 2", GetType(String)) For Each DR2 As DataRow In dt2.Rows For Each DR1 As DataRow In dt1.Rows If (DR2("COD")) = (DR1("equip")) Then dt3.Rows.Add(DR1("TIPO").ToString, DR1("COD").ToString, DR1("REF").ToString, DR1("MARCA").ToString, DR1("MODELO").ToString, DR1("SN").ToString, DR2("COD ROTINA").ToString, DR2("OPERAÇÃO").ToString, DR2("PERIODICIDADE").ToString, DR2("PERIODICIDADE DIAS").ToString, DR2("INDICADOR 1").ToString, DR2("INDICADOR 2").ToString) Exit For End If Next Next DATA.DataSource = dt3 Edited June 11, 2013 at 07:14 AM by thoga31 Tags CODE + GeSHi
CACO8 Posted June 9, 2013 at 05:37 PM Author Report #511767 Posted June 9, 2013 at 05:37 PM Já consegui resolver. No código que postei anteriormente bastou retirar o "EXIST FOR" e ficou a funcionar como pretendia. Agora tenho outra questão. Ainda no código que coloquei no post anterior tenho 1 datatable (dt3) gerado a partir de 2 datatables distintos (dt1 e dt2). O que pretendo é que a informação contida no dt3 seja copiada para uma tabela já criada (e que possui os mesmos campos criados no dt3) e existente noutra base de dados. Julgo que esta questão vai de encontro à resposta do bioshock, porém não sei bem como fazer. Agradeço toda a ajuda que me possam prestar.
CACO8 Posted June 11, 2013 at 12:15 AM Author Report #511928 Posted June 11, 2013 at 12:15 AM Já consegui resolver o problema e está tudo a funcionar. Obrigado pela ajuda.
samesdavis Posted June 14, 2013 at 10:34 PM Report #513056 Posted June 14, 2013 at 10:34 PM É. Envias a informação das duas tabelas inciais para DataSets (por exemplo), depois juntas os dois DataSets num só e por fim envias para a 3ª base de dados. http://wiki.portugal-a-programar.pt/dev_net:vb.net:access Estou querendo fazer exatamente esse procedimento, mas não sei como fazer. Acesso uma tabela na base SQL2008 e outra tabela na base Access, quero fazer um relacionamento entre elas, teria como você me explicar como fazer isso?
bioshock Posted June 17, 2013 at 10:52 PM Report #513501 Posted June 17, 2013 at 10:52 PM Bem..não há muito por onde dizer. Seleccionas os dados de uma base de dados para dentro, por exemplo de DataSets, depois só tens de enviar a informação para o SQL. A relação, terás que ser tu a construir via código e com tabelas semelhantes.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now