Ir para conteúdo
Carlos Primo

Consulta Banco de Dados usando 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, 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]  Invalid column name 'Y18HW'.

erro.JPG.c8952d0e18999ccea4b4b91abaac0dcf.JPG

 

Segue o código:

 

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

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

  • Conteúdo Similar

    • Por PlatBubbles
      Ola, estou tendo dificuldade para fazer uma consulta seletiva usando duas tabelas, provavelmente estou errando a sintaxe da busca, agradeço caso alguem possa me passar a forma correta de fazer a busca.
       
      $sqluser = "SELECT aquestion_id, user_id FROM respostas WHERE user_id like '$logado' UNION SELECT * pergunta, question_id FROM questions WHERE question_id!=aquestion_id ORDER BY RAND() LIMIT 1"; Explicando
      Na tabela respostas preciso dos dados aquestion_id e user_id apenas do usuário Logado.
      Da tabela questions preciso da pergunta e da question_id que deve ser gerada de forma aleatória mas apenas com os Ids que não estejam  listados em aquestion_id.
      Na verdade as duas tabelas tinham o campo question_id porem estava confuso e por isso mudei o campo da primeira tabela para aquestion_id.
       
      Agradeço qualquer ajuda, e também pelo tempo dos que leram mesmo se não puderam ajudar.
      PlatBubbles
    • Por rafaelwww
      Sou novo no fórum e essa é a minha primeira postagem.
      não sei se essa é área apropriada para esse tipo de postagem, mas vamos lá eu tenho um site e queria criar uma opção no qual o usuário poderia gravar um áudio que seria salvo em um banco de
      dados, mas não tenho ideia de como fazer isso se existe uma API que faça isso . 
      Peço por gentileza se alguém pudesse me dar uma dica.
       
    • Por rogfranz
      Olá pessoal! Então, estou desenvolvendo um projeto que pode tomar grandes proporções, e estou com uma dúvida que está me tirando o sono!

      Digamos que trata-se de um sistema de pedidos só pra usar como exemplo.

      Vários usuários vão poder se cadastrar no sistema e criar seus pedidos.

      Teremos então as tabelas

      usuarios
      pedidos
      pedido_itens
       
       
      minha dúvida está na seguinte questão.
      Uso bancos de dados separados para cada cliente ?  
      ou
      Uma tabela por exemplo dos pedidos vinculo o id do usuário para todos usuários do sistema ?

      POR FAVOR! Me Deem a opinião do que vocês fariam! e Por que!

      Trazendo para a realidade do meu projeto uma estimativa de volume de dados que eu imagino.
      Levando em conta que um usuário pode cadastrar a média de 10 "pedidos" no mês com aproximadamente 500 ítens

      Agradeço muito a contribuição de vocês!
    • Por LuanMartinsTI
      Tenho o seguinte problema, eu preciso dar um select em duas tabelas, ou ter dois selects tanto faz, eu fiz com inner join e com union all mas nao consigo ter o resultado que eu desejo
      O problema é o seguinte> Pra saber quantos usuarios eu tenho em cada grupo eu preciso dar um select na membros grupo com o id do grupo, mas eu preciso mostrar apenas os 5 primeiros grupos com mais gente, eu nao tenho na tabela falando grupo 1 tem 50 membros, eu tenho 50 linhas com grupo 1 e id do usuario, como eu transformo isso no que eu quero? a unica forma q eu pensei é criar um campo novo em grupos e colocar la o resultado de rowCount, mas gostaria de saber se é possivel fazer sem, eu ja consigo mostrar quantos usuarios cada grupo tem, eu nao consigo mostrar é em ordem e nao é so dar o asc o problema é na logica provavelmente, mas se for possivel resolver isso com uma unica query ficarei grato
      tabela 1
      grupos( id nome dono created stat ) tabela 2
      membros_grupo( id grupo_id user_id )  
      PHP
      public function ultimosGrupos($limite){ try { $query = "SELECT * FROM groups ORDER BY id ASC LIMIT :limite"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':limite' , $limite, PDO::PARAM_INT); $this->Select->execute(); if($this->Select->rowCount() > 0){ return $this->Select->fetchAll(PDO::FETCH_ASSOC); }else{ return FALSE; } } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } } public function users_por_grupo($id){ try { $query = "SELECT * FROM group_memberships WHERE group_id = :id"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':id' , $id, PDO::PARAM_INT); $this->Select->execute(); return $this->Select->rowCount(); } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } }  
    • Por Fabricio Guilherme
      Olá pessoal, esse é meu primeiro post, gostaria de uma ajuda de alguém que tenha contato com Woocommerce/ Wordpress.
      Eu recebi uma solicitação de um cliente para conectar um web service a loja dele, com o objetivo de verificar vagas existentes em pousadas, depois de agrupar os dados do pedido, enviar um formulário para os colaboradores dele e assim, efetuar a venda.
      A principio a loja funciona no modo orçamento apenas e por enquanto vai permanecer assim, minha solução foi criar um plugin para o Woocommerce que faz todo esse trabalho de forma externa, usando os ganchos do wordpress.
      A minha questão é se o cliente for colocar a loja no modo venda, como vou tratar a quantidade de variações?
      O Woocommerce é preparado pra isso ou seria melhor outro gerenciador de loja?
      OBS: Pra ficar mais fácil de entender a cliente é uma agência de viagens, como a decolar por exemplo. E portanto se conecta a outros bancos com uma infinidade de variáveis, restrições e métodos diferentes em cada atividade diferentes.
      OBS: Estou disposto a novas plataformas que suportem essa complexibilidade de dados, se houver algo PHP + MySQL é muito bem vindo kkkk
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.