Notifications
Clear all

Integracao Excel Acess em mao dupla

5 Posts
2 Usuários
0 Reactions
1,302 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Tenho um cadastro de clientes que esta no Acess e minha planilha de venda no Excel

Quando desejo criar um novo cliente ou consultar algum ja cadastrado, dentro do Excel faco todo o procedimento. Mas aqui esta configurado o excel para importar os dados do Acess.

Porem dentro de minha planilha excel existe, procedimentos que preciso as vezes alterar o cadastro de clientes que importei do acess, como exempl disso , ao realizar uma venda contabilizo ao cliente +1 na coluna devida, e outras coisas a mais. Desta forma queria saber , estando eu dentro da planilha em excel, e com inetrecao ao Acess ja possivel, ao inves de receber os dados atualizar entao os dados pelo ACess. Ou seja quero que fique em mao dupla, ou seja, O Excel tanto pode receber os dados como atualizar os dados do Acess.

Isso e possivel ?

Andre

 
Postado : 24/10/2016 8:27 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Use um módulo...

Sub Exportar()
Dim cn As ADODB.Connection 'variável para base
Dim rs As ADODB.Recordset 'variável para tabela
Dim r As Long 'variável para o númerdo da linha na planilha
'conectando ao banco de dados access
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
"Source=C:nome_do_banco.mdb;"
'abrindo a tabela do banco de dados
Set rs = New ADODB.Recordset
rs.Open "nome_da_tabela", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' Todos os registros da tabela
'número da linha que irá começar na planilha
r = 4
Do While Len(Range("A" & r).Formula) > 0 ' repete enquanto a coluna a for maior que Zero
With rs
.AddNew 'insere novo registro no banco de dados
'adiciona valores para cada campo na tabela
.Fields("Campo_A") = Range("A" & r).Value
.Fields("Campo_B") = Range("B" & r).Value
.Fields("Campo_C") = Range("C" & r).Value
.Update 'atualiza o novo registro
End With
r = r + 1 'próxima linha da planilha para o banco de dados
Loop
'fecha a tabela
rs.Close
Set rs = Nothing
'fecha o banco de dados
cn.Close
Set cn = Nothing
End Sub

 
Postado : 24/10/2016 9:42 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Fcarlossc, seguinte, como faco pra quando eu cadastrar um novo cliente fazer iaso:

Meu cadastro clientes ja esta integrado ao acess, e os textbox:

Txt_indicados - se refere a quantos clientes este indicou a loja, 1, 2, 3 ...,essa text box não é editavel sera atualizada ao inicializar a userform.

Txt_Cod2 e txt_cli - é o codigo e nome de quuem o indicou , caso tenha vindo indicado por alguem, esta e editavel.

Preciso o seguinte, ao cadastrar um novo cliente exista uma forma deste novo cliente ser somado a textbox do cliente que o indicou. Digamos que o novo cliente e o joao, e pedro e o cara que o indicou. Entao ao abrir a ficha do pedro que antes era 2 ( clienets indicados ), agora aparacera 3. Isso no excel e mole fazer, mas no acess, estou iniciando rsrsr.
Eu imagino que ao salvar o novo cliente joao no banco de dados , seria feito uma varredura encontrado encontrando o cliente pedro, assim que encontrado digamos que na coluna indicados esteja la selecionado 2, entao seria acrescido + 1. Entendeu !

Grato

Andre

 
Postado : 24/10/2016 7:39 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Ola, nao rodou, deu erro nesta linha

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _

E nao tenho isto nas referencias do Excel

Mando anexo o que eu gostaria pra entender melho, esta explicado na planilha Dados

Andre

 
Postado : 25/10/2016 9:20 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

faltou o BD

no anexo agora

 
Postado : 25/10/2016 9:23 am