4 participantes
[Resolvido]Acessando e preenchendo com dados de outra tabela
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
- Mensagem nº1
Acessando e preenchendo com dados de outra tabela
Olá pessoal, antes de qualquer coisa gostaria de expressar a minha alegria em fazer parte deste fórum dos amantes do access. A minha dúvida creio que irá ajudar muitas pessoas, Tenho uma base de dados que todo ano tenho que criar outro arquivo, exemplo 2009, 2010 e 2011. Porém tem um banco de dados do access aonde o utilizo como principal, Ele contém uma área de cadastro, como cod_cliente, nome_cliente. O fato é que preciso entrar com o nome do cliente, ele ir busca nos arquivos anteriores (chamados 2009, 2010). Então quando eu entrar com o nome do arquivo, ele teria que localizar a tabela tal, e preencher automaticamente os dados, tais como endereço, telefone, etc. Eu utilizo a função DLookup, quando acesso no mesmo banco, funciona legal. Agora eu não consigo fazê-lo buscar os dados de outro banco de dados, em outra tabela. Um abraço, e obrigado pela atenção.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Amigo:
Muito simples. Ligue a(s) tabela(s) do outro banco de dados ao principal. Faça um form com os dados que necessita e já pode usar a função dlookup para pesquisar e acessar a tabela externa. É uma solução simples e que funciona.
Muito simples. Ligue a(s) tabela(s) do outro banco de dados ao principal. Faça um form com os dados que necessita e já pode usar a função dlookup para pesquisar e acessar a tabela externa. É uma solução simples e que funciona.
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Obrigado mestre vieirasoft, pela ajuda. E pela velocidade da resposta. Só que para eu fazer isso, seria tranquilo, agora o problema é que quem tem que fazer isso todas as vezes é o Usuário que utiliza o sistema, e quem utiliza o sistema tem o conhecimento muito precário. E não tem acesso a parte da estrutura. Existe alguma maneira dele importar somente os dados, como DLookup faz, de bases de dados externa?. Obrigado pela grande atenção, Mestre.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Se os dados dos arquivos forem sempre 2009/2010 a solução anterior mantém-se válida, noutro caso o ideal seria enviar esses dados para uma tabela única do tipo histórico, pois se assim é problema, será sempre problema todos os anos e fazer um form para receber esses dados utilizando a função dlookup ou um form de pesquisa que é eficaz.
Para isso tem que exportar os dados para uma tabela única assim:
Dim strSQL As String
DoCmd.SetWarnings False
strSQL = "INSERT INTO tabelahistorico (Chaveprimária, meucampo1, meucampo2,meucampo3,e por aí fora ) IN 'C:\minhahistorico.mdb'" & _
"SELECT tabelaclientes.Chaveprimária, meucampo1, meucampo2,meucampo3,e por aí fora" & _
" FROM TabelaClientes WHERE TabelaCliente.Chaveprimária= " & Me.Chaveprimária
DoCmd.RunSQL strSQL
strSQL = "DELETE * FROM TabelaClientes WHERE Chaveprimária = " & Me.Chaveprimária
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
End If
Para isso tem que exportar os dados para uma tabela única assim:
Dim strSQL As String
DoCmd.SetWarnings False
strSQL = "INSERT INTO tabelahistorico (Chaveprimária, meucampo1, meucampo2,meucampo3,e por aí fora ) IN 'C:\minhahistorico.mdb'" & _
"SELECT tabelaclientes.Chaveprimária, meucampo1, meucampo2,meucampo3,e por aí fora" & _
" FROM TabelaClientes WHERE TabelaCliente.Chaveprimária= " & Me.Chaveprimária
DoCmd.RunSQL strSQL
strSQL = "DELETE * FROM TabelaClientes WHERE Chaveprimária = " & Me.Chaveprimária
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
End If
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Mestre, me perdoe eu não expliquei direito, ou de repente você me deu a resposta e eu não entendi. Eu tenho um banco de dados bd_2009, com os campos cod, nome, end e bairro. Tenho um outro banco de dados com o nome bd_principal. Com os mesmos campos, só que tenho neste formulário uma caixa de combinação(este campo chamado "comb_arquivo"), aonde o usuário irá escolher o nome do arquivo (este arquivo sempre estará dentro da pasta c:\colegio). A minha idéia é a seguinte, quando o usuário escolher o nome do arquivo, e digitar o código do aluno, os outros campos nome, end e bairro serão preenchidos automaticamente. Desde já, agradeço muito a ajuda, que tem causado grande admiração.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Então está aqui uma grande confusão. Vamos ver:
o Banco 2009 éum back end? O banco principal é o front end.
Ou o banco 2009, não está ligado ao bd principal e funciona autónomo? Clarifique porque já estou confuso.
o Banco 2009 éum back end? O banco principal é o front end.
Ou o banco 2009, não está ligado ao bd principal e funciona autónomo? Clarifique porque já estou confuso.
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Me perdoe, mestre a confusão. O sistema é escolar, todos os anos gera uma base de dados, (2009,2010 e assim sucessivamente são autonomos, e este nome 2009 é o nome do arquivo mesmo "2009.mdb). Daí tenho um sistema de emissão de histórico, que funciona separado dele. Para evitar que o usuário digite novamente os dados do aluno, ele escolhe o nome do arquivo que tem os dados do aluno( 2009.mdb ou 2010) numa caixa de combinação, e entra com o código do aluno, para que automaticamente preencha os outros campos. Obrigado, pela atenção.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Amigo, não vejo vantagem nenhuma em criar BD's umas atrás das outras. Por outro lado quantas BD's criar, quantas instruções terá que dar para aceder individualmente a cada uma.
Na minha perspectiva exportar os dados´é o certo e chamar os dados através de uma pesquisa que pode incluir o Ano, por exemplo.
Na minha perspectiva exportar os dados´é o certo e chamar os dados através de uma pesquisa que pode incluir o Ano, por exemplo.
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Mestre, a instrução que você me deu anterior, eu creio que é a mais correta. Eu testei e aconteceu o seguinte, eu criei um botão e coloquei a linha de código que você me mandou, eu digitei os dados no formulário e ele exportou os dados para o arquivo de destino(no caso bd_2009.mdb) de acordo com o número. O que eu estou querendo é o fluxo contrário, que traga do arquivo bd_2009, para o formulário com dados em branco que eu estou digitando no momento. Obrigado, pela atenção!!!
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Você tem que ter a tabela exportada na outra Bd ligada à bd principal. Agora faça uma cópia do seu form no qual tem os dados e dê-lhe por exemplo o nome frm2009 para testar. A origem dos registos passa a ser a nova tabela ligada. Agora mude o nome tabela na caixa de combinação para a nova tabela na instrução DLookup e pronto, tudo vai funcionar direitinho.
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Permitam-me participar:
Você armazena a emissão de históricos no bd_principal?
Você usa o bd_principal somente para emitir históricos?
Você armazena a emissão de históricos no bd_principal?
Você usa o bd_principal somente para emitir históricos?
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Dilson, Sim isto mesmo. Armazeno no bd_principal, e uso bd_principal somente para emitir históricos. Obrigado, por participar.
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Então antes da tela de login poderia colocar um form para revincular a base de dados, assim o usuário final escolheria qual arquivo trabalhar em seguida a revinculação no arquivo desejado apareceria a tela de login.
Logava-se e estaria o bd_principal conectado na base desejada.
Se surgir a necessidade de emitir um outro histórico de um outro ano, então faria o logof
Logava-se e estaria o bd_principal conectado na base desejada.
Se surgir a necessidade de emitir um outro histórico de um outro ano, então faria o logof
criquio- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 11229
Registrado : 30/12/2009
Desculpem me intrometer, mas pegando a ideia do Dilson, não seria melhor então logar primeiro e depois escolher a base de dados em uma combo? Assim, na hora de mudar, não precisa deslogar e logar de novo.
.................................................................................
Meu novo site: www.vcssistemas.com.br Clique aqui e veja um vídeo que explica como fazer pesquisas no forum. DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo: 1 - faça uma cópia do aplicativo 2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar 3 - use o Compactar/Reparar 4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem) Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário. Positive as mensagens que achar útil, no canto superior direito delas. |
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Os dados coletados no formulário, poderia salvar na tabela desejada usando DAO em um botão Salvar ou Gravar por exemplo
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Sem dúvida Criquio ficaria mais prático e eficiente, também pode colocar um botão que vai chamar esse formulario de revinculo, depois dá um refresh e acredito terá sido revinculado na nova base.
Suporte, seu Oficce é 2003?
Suporte, seu Oficce é 2003?
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Office 2003.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Amigos:
Só um pitaco. Todos os anos ele vai criar uma BD nova? Daquia cino anos são 5 BD's e o problema será ele fazer já uma combobox desde o ano 2009 a 2020, pelo menos para prevenir até essa data e inserido já os acessos antecipadamente. Quanto a mim a exportação de dados era o melhor a fazer na minha humilde opinião.
Só um pitaco. Todos os anos ele vai criar uma BD nova? Daquia cino anos são 5 BD's e o problema será ele fazer já uma combobox desde o ano 2009 a 2020, pelo menos para prevenir até essa data e inserido já os acessos antecipadamente. Quanto a mim a exportação de dados era o melhor a fazer na minha humilde opinião.
criquio- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 11229
Registrado : 30/12/2009
Eu acho que seria mais funcional ter uma única base de dados para todos os anos. Menos trabalho. Caso o volume de dados venha a se tornar muito grande, pode-se exportar um arquivo de texto daqui a alguns anos. Mas acredito que isso demore a acontecer, se e que vai acontecer. Aí então, à essa altura, vincularia a base de textos com um critério para que as pesquisas fossem feitas nessa base de textos quando necessário.
.................................................................................
Meu novo site: www.vcssistemas.com.br Clique aqui e veja um vídeo que explica como fazer pesquisas no forum. DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo: 1 - faça uma cópia do aplicativo 2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar 3 - use o Compactar/Reparar 4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem) Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário. Positive as mensagens que achar útil, no canto superior direito delas. |
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Levado pela razão concordo plenamente com Vieira e Criquio, agora levado pelo querer que seja, acho que tem uma saída pelo formulario de vinculação, daqui a pouco posto um exemplo, isso é se ele funcionar aqui rsrsrs.
Convidad- Convidado
Mais um intrometido
E que tal meia duzia de linhas de codigo e cada vez que mudar o ano criava uma tabela nova com a mesma estrutura ?
E que tal meia duzia de linhas de codigo e cada vez que mudar o ano criava uma tabela nova com a mesma estrutura ?
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Pessoal fiz um exemplo aqui que funciona, mas, não consigo anexar.
Vieira posso mandar para o seu e-mail e aí você tenta colocar no ar?
Ricardo é uma boa, se tiver fácil nos diga como.
Vieira posso mandar para o seu e-mail e aí você tenta colocar no ar?
Ricardo é uma boa, se tiver fácil nos diga como.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Sim Dilson podes mandar que eu coloco.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Aqui vai amigo:
http://dl.dropbox.com/u/8157744/VincularSuporte.rar
http://dl.dropbox.com/u/8157744/VincularSuporte.rar
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Obrigado Vieira.
Explicando o funcionamento lógico:
Criei um diretório chamado VincularSuporte que contém as pastas 2009, 2010 e 2011 e ainda a pasta Bd_Principal
Coloque VincularSuporte em C:\
Vá na pasta Bd_Principal e abra o aplicativo.
Lá para cada ano fiz um form de vinculação igual como na estrutura do diretório criei três pastas nomeadas individualmente com o nome do ano a qual conterá a base de dados correspondente, experimente e veja se servirá.
Explicando o funcionamento lógico:
Criei um diretório chamado VincularSuporte que contém as pastas 2009, 2010 e 2011 e ainda a pasta Bd_Principal
Coloque VincularSuporte em C:\
Vá na pasta Bd_Principal e abra o aplicativo.
Lá para cada ano fiz um form de vinculação igual como na estrutura do diretório criei três pastas nomeadas individualmente com o nome do ano a qual conterá a base de dados correspondente, experimente e veja se servirá.
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Lembrando que tentei criar uma variável para buscar o nome da base dentro do diretório que seria o ideal para não ter que triplicar os forms, mas, não consegui.
Dilson- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1743
Registrado : 11/11/2009
Suporte,
Conseguiu resolver?
Conseguiu resolver?
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Sim, eu postei o meu agradecimento, mas não saiu. Gostaria de agradecer à todos que ajudaram e muito rápido com a solução para o meu problema. Um abraço à todos, e mais uma vez, muito obrigado.
criquio- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 11229
Registrado : 30/12/2009
Obrigado pelo retorno. E não se esqueça de colocar o Resolvido.
.................................................................................
Meu novo site: www.vcssistemas.com.br Clique aqui e veja um vídeo que explica como fazer pesquisas no forum. DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo: 1 - faça uma cópia do aplicativo 2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar 3 - use o Compactar/Reparar 4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem) Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário. Positive as mensagens que achar útil, no canto superior direito delas. |
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Só é pena o colega não ter posto a forma como resolveu. Todos apreciaria-mos saber dado ter sido um tópico que gerou variadas intervenções e palpites.
suporte- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 80
Registrado : 18/01/2011
Eu não alterei em nada o arquivo do mestre Dilson. Só acrescentei campos com a mesma rotina. A propósito quero agradecer ao mestre Vieira, pelos códigos de exportação, também me foram muito úteis. Este mesmo código sendo colocado numa base de dados x, ele consegue exportar dados para um banco definitivo. Obrigado.
vieirasoft- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 7304
Registrado : 11/05/2010
Obrigado pelo retorno. è muito importante este conhecimento para que os colegas que visitem o tópico saibam exactamente o que deu certo e possam aproveitar.
Um grande abraço
Um grande abraço
» [Resolvido]VBA - Acessando um banco de dados e alterar dados na tabela
» [Resolvido]Atualizar dados de uma tabela com os dados de outra tabela
» [Resolvido]Inserir dados de uma tabela em outra tabela
» [Resolvido]Selecionar Dados de uma tabela por um comboBox de outra tabela no Formulario
» [Resolvido]Importar dados de outra tabela
» [Resolvido]Atualizar dados de uma tabela com os dados de outra tabela
» [Resolvido]Inserir dados de uma tabela em outra tabela
» [Resolvido]Selecionar Dados de uma tabela por um comboBox de outra tabela no Formulario
» [Resolvido]Importar dados de outra tabela