Ir ao conteúdo
  • Cadastre-se
Carlos Primo

MySQL Select com variável não funciona

Recommended Posts

Olá, fiz um código VBA Sql para consultar dados de uma tabela e atribuí os valores dos dados em 3 variveis, porém uma das váriaveis não funciona corretamente.

Os dados desta variavel que não funciona possui letras e números, pois os dados da tabela referente a esta variavel possui letras e números.

Quando coloco o valor direto dentro do select o código funciona, mas com variável não da certo.

Também funciona quando retiro esta variável.

No código o nome da variável é PREFIX

 

O erro que aparece é esse:

Run-time error '-2147217900 (80040e14)':

[Microsoft][ODBC SQL Server Driver]

Invalid column name 'Y18HW'.


 

segue o código completo:

Sub sb_RetornaConsulta()

Application.ScreenUpdating = False

    Dim obj_Connection As New ADODB.Connection
    Dim obj_RecordSet As New ADODB.Recordset
    Dim str_SQL As String
    Dim str_PlanilhaDestino As String
    Dim str_ConnString As String
    Dim str_LinhaInicial As String
    Dim nr_coluna As Integer
    Dim Prefix As Variant
    Dim S_Inicia As Variant
    Dim S_Fina As Variant
    
     Prefix = frm_Serie.Pref.Value        'Valor do prefixo digitado no textbox da userform = Y18HW 
     S_Inicia = frm_Serie.S_Inicial.Value 'Valor do Inicial digitado no textbox da userform = 177781 
     S_Fina = frm_Serie.S_Final.Value     'Valor do Final digitado no textbox da userform = 179780
          
    str_PlanilhaDestino = "Resultado"
    str_ConnString = "Driver={SQL Server};server=NOME DO SERVER; Database=NOME DA BASE; UID=USUÁRIO;PWD=SENHA"
    str_LinhaInicial = 3
    
    
    
    str_SQL = "SELECT TABELA.NRSerie AS Serie, TABELA.BancadaID AS Bancada, " & _
                " TABELA.ResQn AS Qn, TABELA.ResQt AS Qt, " & _
                " TABELA.ResQm AS Qm, TABELA.Data AS [Data Produção] " & _
                " FROM TABELA " & _
                " WHERE TABELA.Serie >= " & S_Inicia & " " & _
                " AND TABELA.Serie <= " & S_Fina & " " & _
                " AND TABELA.Prefixo = " & Prefix & " " & _
                " ORDER BY TABELA.NRSerie DESC "

        
    ' Limpa dados
    Sheets(str_PlanilhaDestino).Select
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
 
    ' Executa query no SQL
    obj_Connection.Open str_ConnString
    obj_RecordSet.Source = obj_Connection
    obj_RecordSet.Open str_SQL, obj_Connection
        
    ' Inclui cabeçalhos da query:
    For nr_coluna = 0 To obj_RecordSet.Fields.Count - 1
        Worksheets(str_PlanilhaDestino).Cells(str_LinhaInicial, nr_coluna + 1).Value = obj_RecordSet.Fields(nr_coluna).Name
    Next
     
    ' Salva dados no Excel
    Sheets(str_PlanilhaDestino).Cells(CInt(str_LinhaInicial + 1), 1).CopyFromRecordset obj_RecordSet
 
    ' Finaliza conexão e objetos
    obj_RecordSet.Close
    obj_Connection.Close
    Set obj_RecordSet = Nothing
    Set obj_Connection = Nothing
     
     
     Application.ScreenUpdating = True
     
     frm_Serie.Hide
     
End Sub

Na TABELA que faz a consulta existem as seguintes colunas:

NRSerie, Serie, Prefixo, BancadaID, Fucnionário, ResQn, ResQt, ResQm, Data,

 

No entanto, preciso das colunas:

NRSerie, BancadaID, ResQn, ResQt, ResQm, Data,

 

A coluna NRSerie é a junção da coluna Prefixo + Coluna Serie.

 

Quando faço a consulta, tenho as informações de Prefixo e Serie, porém existe uma sequencia numérica da Serie, onde tenho a Serie inicial e final.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×