quarta-feira, 8 de novembro de 2017

Listando dados do Banco de Dados

Olá nobre especialista, como você tem acompanhado, publicamos recentemente 2 módulos em VBA para você conectar sua aplicação a um banco de dados Access. Hoje vamos continuar trabalhando para darmos continuidade a este projeto, a baixo você vai aprender a trabalhar com o RecordSet, ou seja, você vai carregar na memoria os dados retornados de uma consulta SQL feita no seu banco de dados através do VBA e copia-los em uma nova aba. Siga-me os bons...
Nesta etapa você precisa ter o ConectaBanco() em seu projeto e funcionando, com a String de conexão e o nome do banco 100%. Caso ainda não tenha visto sobre o ConectaBanco() clique aqui para abrir o artigo!
Para começar, abra o Visual Basic Advanced clicando em Alt+F11, ou, na guia Desenvolvedor > Visual Basic (Primeira opção à esquerda). Caso você não encontre a guia Desenvolvedor, clique aqui para saber como ativa-la.









Public Sub AbreRecordSet(sql As String, ActCnn As ADODB.Connection)

 Dim boxResult As VbMsgBoxResult
 Dim rs As ADODB.Recordset
 Dim plan As Worksheet
 
 On Error Resume Next  

 'VERIFICANDO SE HÁ CONEXÃO EXISTENTE

 If ActCnn.State <> 1Then 
  Do
   boxResult = MsgBox("Falha na conexão, deseja conectar ao banco?", vbYesNo + vbCritical)
   If boxResult = vbYes Then
    Call ConectaBanco
   Else
    MsgBox "Sem a conexão é impossível continuar, a operação foi abortada.", vbCritical
    End
   End If
  Loop While ActCnn.State <> 1
 End If

 'É CRIADO UMA NOVA SHEET(ABA) NO WORKBOOK
 Set  plan = ActiveWorkbook.Sheets.Add

 'EXECUTA A INSTRUÇÃO SQL NA CONEXÃO EXISTENTE E GRAVAR NA MEMORIA
 On Error Goto falhou:
 rs.Open sql, ActCnn, adOpenStatic, adLockReadOnly, adCmdText
falhou:
 MsgBox "A instrução SQL não pode ser executada"

 'COPIA OS REGISTROS RETORNADOS DA CONSULTA QUE ESTÃO EM MEMORIA E COPIA NA ABA CRIADA
 plan.Range("A1").CopyFromRecordset rs.Open

 'OUTRA FORMA DE COPIAR OS REGISTROS DA MEMORIA PARA A PLANILHA
        'ESTE COMANDO TRÁS O CABEÇALHO DA CONSULTA, O ACIMA TRÁS APENAS OS DADOS
        '>>> plan.QueryTables.Add(rs, plan.Range("A1")).Refresh 

End Sub

Nos proximos dias irei postar como a incluir alterar e excluir dados no banco através do VBA, fiquem de olho!
Deixe nos comentários oque você precisa, suas dúvidas, com certeza vamos responder você!
Qualquer dúvida entre em contato conosco, com certeza vamos encontrar a melhor forma para resolver o seu problema! Até a próxima!

Deixe sua sugestão, elogio ou reclamação para o blog.
EmoticonEmoticon