Jump to content

Inserir variável em query SQL


Carlindo

Recommended Posts

Boa tarde,
Estou a tentar resolver uma questão e pesso ajuda aos amigos.

Gostaria de inserir uma variável dentro de uma pesquisa sql, alguém pode me ajudar?

Segue o código

Sub Consultar()
    
    Dim cn As Object 'Variável de conexão com o Access
    Dim rs As Object 'Variável de consulta de registro no Access (Record Set)
    
    Dim strSql As String 'Variável de código SQL
    Dim strConnection As String 'Variável de conexão com a aplicação Access
    Dim sh_capa As Worksheet 'Variável da aba "Capa"
    
    Dim i, j As Long
    
    Application.DisplayAlerts = False 'Desabilitar os alertas
    Application.ScreenUpdating = False 'Desabilitar a atualização de tela
    
    'Salvar a planilha
    ActiveWorkbook.Save
        
    'Configura a variável com a aba "Capa"
    Set sh_capa = Sheets("Capa")
    
    'Realiza a conexão com a aplicação Access
    Set cn = CreateObject("ADODB.Connection")
    
    'Código de conexão com o Access desejado
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source = \\CARLOS_GOMES\Users\Public\Excel com BD\Tesouraria IPB\Consultas bd\Aula 4 - Banco de dados.accdb"
    
                'Variável para pesquisa de acordo com ano
                Dim Ano_Anterior  As Double
                Dim Ano_Atual As Double
            
                Ano_Anterior = Plan1.Cells(1, 1).Value
                Ano_Atual = Plan1.Cells(2, 1).Value


    'Código SQL de consulta
    strSql = "SELECT tbl_vendas.Ano, tbl_vendas.Mês, tbl_vendas.Auxiliar, tbl_vendas.Vendedor, tbl_vendas.[Código 1], tbl_vendas.[Código 2], tbl_vendas.Produto, tbl_vendas.Preço " & _
             "FROM tbl_vendas WHERE tbl_vendas.Mês = 12 And tbl_vendas.Ano =  Ano_Anterior  Or tbl_vendas.Mês = 1 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 2 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 3 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 4 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 5 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 6 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 7 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 8 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 9 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 10 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 11 And tbl_vendas.Ano = Ano_Atual;"
    
    'Abre a conexão com o access desejado
    cn.Open strConnection
    
    'Executa a consulta no access através do código SQL preenchido na variável strSql
    Set rs = cn.Execute(strSql)
    
    'Copiar para o Excel as informações resultantes da consulta no Access
    i = 0
    If Not (rs.EOF And rs.BOF) Then 'Verifica se existem alguma informação na consulta
        
        'Conta quantas linhas existem no Banco de Dados
        j = 0
        Do While sh_capa.Cells(5 + j, "B").Value <> ""
            j = j + 1
        Loop
        
        'Apaga o banco de dados no excel
        sh_capa.Range("B5:I" & j + 6).ClearContents
        
        rs.MoveFirst
        Do Until rs.EOF = True 'Roda linha a linha até chegar no Fim do Arquivo (EOF = End of File)
            'Colocar o nome dos campos inseridos na tabela do Access
            sh_capa.Cells(5 + i, "A").Value = rs("Ano")
            sh_capa.Cells(5 + i, "B").Value = rs("Mês")
            sh_capa.Cells(5 + i, "C").Value = rs("Auxiliar")
            sh_capa.Cells(5 + i, "D").Value = rs("Vendedor")
            sh_capa.Cells(5 + i, "E").Value = rs("Código 1")
            sh_capa.Cells(5 + i, "F").Value = rs("Código 2")
            sh_capa.Cells(5 + i, "G").Value = rs("Produto")
            sh_capa.Cells(5 + i, "H").Value = rs("Preço")
            'Pula de linha no Access
            rs.MoveNext
            'Pula de linha no Excel
            i = i + 1
        Loop
        
        'Avisa ao usuário que as informações foram copiadas
        'MsgBox i & " Registros copiados com sucesso!"
        
    'Else
    
        'Avisa ao usuário que nada foi copiado
        'MsgBox "Nenhum informação disponível!"
    
    End If
    
    'Fecha todas as conexões com o Access
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Muito grato!!!

Link to comment
Share on other sites

  • 3 months later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.