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.