Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

  • Conteúdo Similar

    • Por ILR master
      No código abaixo, funciona perfeitamente quando chamo: dominio.com.br/noticia/todas
       
      <?php
          $url = (isset($_GET['url'])) ? $_GET['url'] : 'principal';
          $url = array_filter(explode('/', $url));
          //var_dump($url);
          $file = $url[0] . '.php';
          if (is_file($file)) {
              include $file;
          } else {
              include '404.php';
          }
          ?>
       
      Porém, quero usar variáveis com ? e &, tipo: dominio.com.br/busca/?campo=assunto
       
      Como faço pra conseguir isso?
       
      Valeu!!!
    • Por ILR master
      Fala pessoal, tudo na boa?
      Eu uso o wamp para desenvolver e testas meu site antes de jogar no servidor.
      A dúvida é o seguinte:
       
      No servidor, eu consigo ler as variáveis numa boa, mas no localhost não. Meu código no index está assim:
       
      $atual = (isset($_GET['pg'])) ? $_GET['pg'] : 'principal';
      $permissao = array('principal','contribua','quem-somos','politica-de-privacidade','termos-de-uso','evento','busca','galeria','galerias','clickbanner','noticia','noticias','contato','video');
      if(substr_count($atual, '/') > 0){
          $atual = explode('/', $atual);
          $pagina = (file_exists($atual[0]. '.php') && in_array($atual[0], $permissao)) ? $atual[0] : 'erro';
          $pg1 = $atual[1];
          $pg2 = $atual[2];
          $pg3 = $atual[3];
          $urltitulo = $atual[3];
      }else{
          $pagina = (file_exists($atual. '.php') && in_array($atual, $permissao)) ? $atual : 'erro';
          $codigo =0;
      };
       
      No servidor, quando chamo: dominio.com.br/pagina/variavel
      ele já identifica as variáveis  $pg1 = $atual[1]; e $pg2 = $atual[2];
      print $pg1 = pagina
      print $pg2 = variavel
      Ele me tras os resultados 

      No localhost não. Ele não reconhece as variáveis

      Alguém sabe como arrumo isso no wamp?
       
      At,
    • Por daemon
      Tenho 3 selects assim com varias categorias...
       
              $sql = "SELECT * FROM topicos          WHERE idcategoria = $idcategoria          AND pubdate BETWEEN NOW() - INTERVAL $intervalo1_horas_ou_minutos $tipo_intervalo1_horas_mnutos AND          NOW() - $intervalo2_horas_ou_minutos ORDER BY pubdate DESC LIMIT 1"; Preciso que na minha pagina principal (index) mostre este registro por 10minutos.. passando de 10 minutos mostra o resultado do proximo select (categoria)..
    • Por ILR master
      Fala pessoal.
      Tudo bem?
       
      Tenho o seguinte código que funcionda perfeitamente:
       
      date_default_timezone_set("America/Sao_Paulo");
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+30  day'));
       
      Mas eu quero definir a quantidade de dias pegando o valor que a variável:
       
      date_default_timezone_set("America/Sao_Paulo");
      $tempo = 30;
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+$tempo  day'));
       
      Mas quando declaro com variável não funciona.
      Obrigado pela ajuda.
    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
×

Informação importante

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