Usuário com melhor resposta
Select com variável não funciona

Pergunta
-
Olá, fiz um código VBA Sql para consultar dados de uma tabela e atribuí os valores dos dados em 3 variveis, porem 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][SQL Server] 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 INFOHIDRO.dbo.afericoes.Prefixo = " & S_Inicia & " " & _ " 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
Respostas
-
Deleted
- Sugerido como Resposta Mariana Del Nero terça-feira, 16 de outubro de 2018 16:12
- Marcado como Resposta Carlos Primo terça-feira, 16 de outubro de 2018 16:40
Todas as Respostas
-
-
José, obrigado pela respota.
Na verdade digitei errado o código nas linhas 6 e 7, o código correto é:
... 1 str_SQL = "SELECT TABELA.NRSerie AS Serie, TABELA.BancadaID AS Bancada, " & _ 2 " TABELA.ResQn AS Qn, TABELA.ResQt AS Qt, " & _ 3 " TABELA.ResQm AS Qm, TABELA.Data AS [Data Produção] " & _ 4 " FROM TABELA " & _ 5 " WHERE TABELA.Serie >= " & S_Inicia & " " & _ 6 " AND TABELA.Serie <= " & S_Fina & " " & _ 7 " AND TABELA.Prefixo = " & Prefix & " " & _ 8 " ORDER BY TABELA.NRSerie DESC " ...
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.
-
Deleted
- Sugerido como Resposta Mariana Del Nero terça-feira, 16 de outubro de 2018 16:12
- Marcado como Resposta Carlos Primo terça-feira, 16 de outubro de 2018 16:40
-