Notifications
Clear all

transferir dados de uma listView para o Acess

6 Posts
1 Usuários
0 Reactions
1,694 Visualizações
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Bom dia
conforme abaixo, esta um Form em excel.

Tenho 2 ListView1 e 2 , a maior e a menor. Escolho os itens da TextView1 ( maior ) e lanco em TextView2 ( a menor ), neste exemplo lancei 3 itens. Norte que a esquerda esta o numeo do Recibo desta venda.
gostaria de criar uma tabela em Acess em que a chave primaria fosse o Numero do Pedido=Recibo. e juntamente com este recibo estivesse agregado os itens da ListView2 ( a menor ). Assim ficando no Acess armazenado todas as vendas feitas.

Caso quizesse transferir do Acess para o Excel, A ListView seria recuperada novamente e Em Pedido Nº iria aparecer o Recibo da venda armazenada.

Alguem teria um exemplo a me dar ?

 
Postado : 28/09/2017 8:36 am
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Ate aqui seu fazer conforme codigo abaixo, mas jogar a ListView com suas tres linas associadas ao Numero do Pedido que vai ser criada no Acess, ja nao sei como fazer.

Private Sub salvar_Click()

'Se houver erro de acesso aos dados id já cadastrado, desvia para o rótulo Sai
 On Error GoTo Sai:

' Me.Venda1.Enabled = True

'Cria variável que armazena os comandos SQL
    Dim ComandoSQL As String
    Dim Recibo 'As Integer
    
    Recibo = Pedido 'Pega o Nº do registro que esta na TextBox Pedido
    
    'Armazena na variável o comando que fará a consulta SQL no BD Access
     ComandoSQL = "select * from Pedidos_Gauer"
        
        'Chama a rotina que faz a conexão com o BD
        Call Conecta
        
        'Atribui a variável de Objeto de BD a execução dos comandos SQL
        Set Consulta = banco.OpenRecordset(ComandoSQL)
        
       'Enquanto consulta (variável objeto do BD)...
       With Consulta
            'Abre o Recordset do BD para inserção
            .AddNew
            
            'Armazena em cada um dos campos do BD os valores constantes nas caixas de texto e combo do formulário
            
            .Fields("Recibo") = Recibo
                      
            'Efetiva a atualização do BD
            .Update
            
       End With
       
       'Fecha o Recorset e a conexão com o BD
        Consulta.Close
        banco.Close
        
        'Chama a rotina que desconecta do BD (libera variáveis objeto de BD)
        Call Desconecta
                                   
'        Call limpar_campos
        
        'Abandona a subrotina
        Exit Sub
        
Sai: 'Se houver erro de acesso aos dados o processamento é desviado para cá
           
        'Exibe mensagem de código já cadastrado
        MsgBox "O código " & id & " já foi cadastrado! "
       
                   
End Sub
 
Postado : 28/09/2017 8:57 am
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Segue modelo em anexo

Falta somente incrementar a Tabela de Banco de Dados em Acess que nao estou conseguindo fazer.

Grato

Andre

 
Postado : 28/09/2017 12:28 pm
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Bom dia, como faço as vezes, venho aqui muitas das vezes pois eu mesmo acabo resolvendo ou achando a solucao, mas nao consegui .

Vi que 1 pessoa baixou meu modelo de planilha anexado acima. Gostaria que outros baixassem tb para quem sabe me dar uma resposta.

Grato

Andre

 
Postado : 29/09/2017 5:30 am
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Bem consegui a chegar proximo do que quero, depois de varias tentativas usando outros codigo do meu sistema, cheguei a isso:

* Se eu por apenas 1 item na ListBox menor, os dados sao salvos no Banco de Dados Acess corretamente
* Se eu por varios itens ai nao rola

Outro problema é que nao consegui como fazer com que no Acess o Registro seja igual ao Nº do Pedido e nesse mesmo registro fiquem armazenados os dados da ListView. Digamos que o Pedido seja o 420, Neste caso seria isso que ficaria no BD do Acess:

Recibo COd Produto Valor QNT Total
420 1 Feijao 30,00 1 30.00
6 Arroz 15.00 1 15.00

421 ................................

Nao sei se da pra fazer isso, pois assim para carregar as vendas do Acess para o Form, eu puxaria pelo Recibo.

Private Sub Salvar_Click()


'Cria variável que armazena os comandos SQL
    Dim ComandoSQL As String
    Dim id 'As Integer
    
'    id = Pedido        'Esta TextBox Pedido é o Nº do Pedido que devra ir na Coluna 0 da Tabela Acess
    
    'Armazena na variável o comando que fará a consulta SQL no BD Access
     ComandoSQL = "select * from Pedidos"
        
        'Chama a rotina que faz a conexão com o BD
        Call Conecta
        
        'Atribui a variável de Objeto de BD a execução dos comandos SQL
        Set Consulta = banco.OpenRecordset(ComandoSQL)
        
       'Enquanto consulta (variável objeto do BD)...
       With Consulta
            'Abre o Recordset do BD para inserção
            .AddNew
            
            'Armazena em cada um dos campos do BD os valores constantes nas caixas de texto e combo do formulário
            
       For i = 1 To ListView1.ListItems.Count

        .Fields("Recibo") = ListView1.ListItems(i).text
        
        'Loop as colunas
        For j = 1 To ListView1.ColumnHeaders.Count - 1
       .Fields("1") = ListView1.ListItems(i).ListSubItems(1).text
       .Fields("2") = ListView1.ListItems(i).ListSubItems(2).text
       .Fields("3") = ListView1.ListItems(i).ListSubItems(3).text
       .Fields("4") = ListView1.ListItems(i).ListSubItems(4).text
       .Fields("5") = ListView1.ListItems(i).ListSubItems(5).text
       .Fields("6") = ListView1.ListItems(i).ListSubItems(6).text
        
        Next j
    Next i

            'Efetiva a atualização do BD
            .Update

       End With

       'Fecha o Recorset e a conexão com o BD
        Consulta.Close
        banco.Close
        
        'Chama a rotina que desconecta do BD (libera variáveis objeto de BD)
        Call Desconecta

End Sub
 
Postado : 29/09/2017 8:58 am
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Fechando o topico, pois nao consegui fazer, mas consegui fazer atarves do Excel. Ficou perfeito e nao pesou o sistema aqui.

Grato

Andre

 
Postado : 02/10/2017 7:14 pm