Ir para conteúdo
Donizera

Parâmetro em Querry DELPHI [como usar paramentros do tipo string?] [HELP]

Recommended Posts

Tenho tentado criar uma procedimento para busca dentro de um tabela de um banco;
E adotei o seguinte código para o procedimento;

procedure Busca(campo:string);
begin
    DM.qtester.Active :=false ;
    DM.qtester.ParamByName('campo').AsString := campo;// PARAMETRO CAMPO , RECEBE A INFORMAÇÃO DE QUAL COLUNA SERA SELECIONADA
    DM.qtester.ParamByName('valor').Value := frmTabelaFuncionario.Edit1.Text;// PARAMENTRO VALOR, RECEBE A INFORMAÇÃO DO VALOR DE COMPARAÇÃO 
    DM.qtester.Active := true ;
    frmTabelaFuncionario.gridExibeFuncionario.DataSource :=  DM.dsTester;// TABELA RECEBE A NOVA QUERY ADOTADA PARA EXIBIÇÃO

end;

QUERRY MENCIONADA NO METODO BUSCA
 

[code=sql]
select 
codFuncionario, 
nome, 
idade, 
cpf, 
endereco, 
numero,
cep, 
telefone,
codSetor 
from projetoestacionamento.funcionario 

where  
:campo = :valor and
excluido <> 'e' order by (codFuncionario)

 

O problema é que, quando executo o método tudo ocorre certo até o ponto da onde a tabela exibirá as informações da busca; 
Acontece que o teste feito no sql(where) acaba dando falso. (Pelo fato de que eu entendi o paramentro :campo esta vazio)

Testando o codigo percebi que, ao passar somente o valor de comparação (no caso o paramentro :valor), a tabela exibe corretamente a busca,

e pesquisando descobri q parametros podem ser tipados;

 

  • Tenho que estipular algum tipo pra o meu parametro campo ?
  • existe outro método mais eficiente que esse, para busca em tabela ?

Desde ja agracedo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é possível referenciar um campo da tabela utilizando um parâmetro, da forma que você está fazendo a consulta executada está sendo.

SELECT 
  codFuncionario, 
  nome, 
  idade, 
  cpf, 
  endereco, 
  numero,
  cep, 
  telefone,
  codSetor 
FROM
  projetoestacionamento.funcionario 
WHERE  
  /*:campo = :valor */
  'Campo selecionado' = 'Texto do Edit'
  AND excluido <> 'e'
ORDER BY
  (codFuncionario)

Está comparando dois valores do tipo string.

 

A solução que me passa pela cabeça seria ajustar a consulta do qtester dependendo do campo selecionado, algo como:

procedure Busca(campo:string);
const
  cSQL: string = 
    'SELECT ' +
    '  codFuncionario, nome, idade, cpf, endereco, numero,cep, telefone,codSetor ' +
    'FROM ' +
    '  projetoestacionamento.funcionario ' +
    'WHERE ' +
    '  %s = :valor AND excluido <> ''e'' ' +
    'ORDER BY ' +
    '  (codFuncionario)';
begin
  DM.qtester.Active :=false;
  //Dependendo do componente utilizado DM.qtester.SQL.Text pode ser DM.qtester.CommandText
  DM.qtester.SQL.Text := Format(cSQL, [campo]);
  {
    Equivalente a
    DM.qtester.SQL.Text := 'SELECT ' +
    '  codFuncionario, nome, idade, cpf, endereco, numero,cep, telefone,codSetor ' +
    'FROM ' +
    '  projetoestacionamento.funcionario ' +
    'WHERE ' +
    '  ' + campo + ' = :valor AND excluido <> ''e'' ' +
    'ORDER BY ' +
    '  (codFuncionario)';
  }
  DM.qtester.ParamByName('valor').Value := frmTabelaFuncionario.Edit1.Text;// PARAMENTRO VALOR, RECEBE A INFORMAÇÃO DO VALOR DE COMPARAÇÃO 
  DM.qtester.Active := true ;
  frmTabelaFuncionario.gridExibeFuncionario.DataSource :=  DM.dsTester;// TABELA RECEBE A NOVA QUERY ADOTADA PARA EXIBIÇÃO
end;

 

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 Claudia França
      Prezados há dias consegui chegar no fim do projeto e, agora resta apenas corrigir o erro que ocorro no fim da transação. "Atualizar informações de pagamento. "
       Eu tenho aqui a doc. Mas não seu exatamente o que alterar no código para corrigir isso. E preciso de ajuda,
       
      https://www.userede.com.br/desenvolvedores/pt/produto/e-Rede#documentacao-3ds
       
      function updatePaymentAPI($apikey, $secret, $callid, $currencyCode,$total, $subtal){
          $time = time();
          $query_string = "apikey=".$apikey;
          $resource = "payment/info/".$callid;
          $body = "{\"updateInfo\":[{\"payInfo\":{\"reason\":\"ProductionKey Test\",
          \"avsResponseCode\":\"Y\",\"total\":".$total.",\"currencyCode\":\"".$currencyCode."\",
          \"eventStatus\":\"Success\",\"eventType\":\"Authorize\"}},{\"orderInfo\":{\"currencyCode\":\"".$currencyCode."\",
          \"discount\":0,\"eventType\":\"Confirm\",\"giftWrap\":0,\"misc\":0,
          \"reason\":\"Order_placed\",\"shippingHandling\":0,\"subtotal\":".$subtal.",\"tax\":0,\"total\":".$total."}}]}";
          $certificatePath = 'cert.pem';
          $privateKey = 'key_9e082920-8ec4-441a-8cfa-588b0829d326.pem';
          //Hash for x-pay-token
          $token = $time.$resource.$query_string.$body;
          $hashtoken = "xv2:".$time.":".hash_hmac('sha256', $token, $secret); //X-PAY-TOKEN String
          //$url = "https://api.visa.com/wallet-services-web/".$resource."?".$query_string;
          $url = "https://api.visa.com/wallet-services-web/".$resource."?".$query_string;
          updatePaymentLog("=========================================\n\n");
          updatePaymentLog("CallID : ".$callid."\n");
          updatePaymentLog("URL : ".$url."\n\n");
          updatePaymentLog("Update Payment Request Parameters : \n");
          updatePaymentLog($body);
          //Header
          $header = (array("X-PAY-TOKEN: ".$hashtoken, "Accept: application/json", "Content-Type: application/json","X-FRAME-OPTIONS: SAMEORIGIN"));
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
          curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch, CURLOPT_SSLVERSION , 1);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
          //curl_setopt($ch, CURLOPT_SSLCERT, $certificatePath);
          //curl_setopt($ch, CURLOPT_SSLKEY, $privateKey);
          curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
          curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
          //getting response from server
          $response = curl_exec($ch);
          if(!$response) {
              die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
          }
          $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
          curl_close($ch);
          $json = "";
          $ret = array(
            'status' =>"",
            'data' => ""
          );
          if($statusCode == 200) { //If success => empty Object.
              $ret['status'] = 'success';
              updatePaymentLog("\nUpdate Payment Info called Successfully...\n");
          }else{ // Return Error Object
              $ret['status'] = 'fail';
              $ret['data'] = $response;
              updatePaymentLog("\nSomething Went Wrong....\n");
              $json = json_decode($response);
              $json = json_encode($json, JSON_PRETTY_PRINT);
          }
          updatePaymentLog("\nStatus Code : " . $statusCode ."\n");
          updatePaymentLog($json);
          updatePaymentLog("\n");
          echo json_encode($ret);
      }
      updatePaymentAPI($visaApiKey, $sharedSecret, $callid, $currencyCode, $total, $subtotal);
      ?>
       
       
       
       
       
    • Por Claudia França
      Pessoal estou com um problema para homologar um pagamento service.
       o resultado do Status deve ser sucessfull.
      Parte do codido do index.
      "

          $('#payButton').one('click', function(){
              var amount = $('input[name=amount]').val();
              var currency = $('[name=currency]').val();
              console.log(amount, currency);
              V.init( {
                  apikey: '<?php echo $visaApiKey ?>',
                  settings: {
                      //logoUrl: 'https://www.novachance.org.br/wp-content/uploads/2018/06/xLogo_INC.jpg.pagespeed.ic.QrM-Azm3n5.jpg',
                      locale: 'en_US',
                      displayName: 'Viva a Musica',
                      websiteUrl: 'https://www.vivaamusica.org.br',
                      customerSupportUrl: 'https://www.vivaamusica.org.br/contato',
                      dataLevel: 'FULL'
                  },
                  paymentRequest: {
                      currencyCode: currency,
                      total: amount,
                      merchantRequestId: 'you can send any value to API ang get it in callback',
                      orderId: 'you can send any value to API ang get it in callback',
                      description: 'any order description if needs'
                  }
              });
                V.on('payment.success', function(payment) {
                  console.log('Visa success:', JSON.stringify(payment));
                  $('#succesOverlay').show();
                  $.ajax({
                      type: 'POST',
                      url: 'mailer.php',
                      data: {json: JSON.stringify(payment)},
                      dataType: 'json',
                      success: function(data){
                        console.log('Ajax success');
                        console.log(data);
                        location = 'thanks.php';
                      },
                      error: function(jqXHR, textStatus, errorThrown) {
                        console.log('Ajax error:');
                        console.log(textStatus, errorThrown);
                      }
                  });
              });
              V.on('payment.cancel', function(payment){
                  console.log('Canceled:', payment);
              });
              V.on('payment.error', function(payment, error){
                  console.log('Visa error:', payment, error);
              });
              $('.v-button').click();
          })
       
      "
       Chamada Json
       
      "
      "Customer": {
              "Name": "[$userFullName]"
          },
          "Payment": {
              "ServiceTaxAmount": 0,
              "Installments": 1,
              "Interest": 0,
              "Capture": false,
              "Authenticate": false,
              "Recurrent": false,
              "CreditCard": {
                  "CardNumber": "453211******1521",
                  "Holder": "Gama Gama",
                  "ExpirationDate": "08/2020",
                  "SaveCard": false,
                  "Brand": "Visa"
              },
              "Tid": "0319040817883",
              "ProofOfSale": "817883",
              "AuthorizationCode": "027795",
              "Wallet": {
                  "Type": "VisaCheckout",
                  "WalletKey": "1140814777695873901",
                  "Eci": 0
                  },
              
              "SoftDescriptor": "123456789ABCD",
              "Amount": 100,
              "ReceivedDate": "2018-03-19 16:08:16",
              "Status": "eventStatus",
              "IsSplitted": false,
              "ReturnMessage": "Operation Successful",
              "ReturnCode": "4",
              "PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
              "Type": "CreditCard",
              "Currency": "BRL","en_US",
              "Country": "BRA","USA",
              
              
          
      "updateInfo":  {
               "payInfo": {
               "reason": "Pagamento","Payment",
               "avsResponseCode": "Y",
               "Amount": 91.00,
               "currencyCode": "USD",
               "eventStatus": "Success",
               "eventType": "Authorize",
               "PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
              
               }
      }
           
            }
      }
      {
       
       
      "
       
       
      O pessoal da empresa me fala que tenho que enviar o CallID gerado ( não sei como faço isso) e fazer a chamado do alteração de evento quando a transação for sucesso.
       
      Pensei em criar um aquivo payment.php mas pelo que li no manual necessariamente, não eh necessário.
       
    • Por Wil_sf
      Olá pessoal. Estou desenvolvendo um pequeno site de vendas(apenas para aprendizagem, nada comercial) e me deparei com uma dúvida que está tirando meu sono kkk
      Fiz um esquema para que os produtos posam ser cadastrados e apareçam em uma pagina para a exibição, porém gostaria que quando o cliente clicasse na foto do produto seria aberta uma pagina com as descrições e detalhes do produto(da mesma forma que o Mercado Livre ou outro site de E-commerce).
       
      <table cellpadding="8" cellspacing="5" border="0" width="100%">
              <tr>
                <?php

                  $loopH = 3;
                  $sql = "SELECT id, produto, preco, descricao, foto FROM postagem";
                  $dados=mysqli_query($con, $sql);
                  $linha = mysqli_fetch_assoc($dados);
                  $total = mysqli_num_rows($dados);
                  $x = 1;
       
                  if($total > 0){
                    while($linha = mysqli_fetch_assoc($dados)){
                      if($x < $loopH){
                      $linha = $id[4];
                    $x++;
                ?>
       
                <td align="center" varign="top">
                  <a href="descricao_L.php"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
                  <h3> <?php echo $linha['produto'] ?> </h3>
                  <h4>R$: <?php echo $linha['preco'] ?></h4>
                  </a>
                </td>
              <?php }elseif($x = $loopH){
              ?>

                <td align="center" varign="top">
                  <a href="descricao_L.php?perfil=$id"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
                  <h3> <?php echo $linha['produto'] ?> </h3>
                  <h4>R$: <?php echo $linha['preco'] ?></h4>
                  </a>
                </td>
              </tr>
              <tr>
              <?php $i = 0 ?>
              <?php }}} ?>
              </tr>
            </table>
       
      este é a tabela onde os produtos são exibidos(e apesar do código estar horrível essa parte está funcionando perfeitamente haha). bom, gostaria que alguém me desse uma luz, não sei o que devo fazer.
       
      Desde já, obrigado a todos do fórum.
    • Por webChaos
      Olá, amigos, boa noite.
       
      Uma pergunta para quem já trabalha utilizando DevOps:
       
      Se vocês fossem começar hoje a aprender DevOps, qual ordem de coisas vocês aprenderiam, metodologias e programas utilizariam?
       
      Iniciando do zero ao avançado em DevOps mesmo.
       
      Obrigado!
    • Por clusher_lost
      Olá devs gostaria de saber se conhecem algum método de eu conseguir editar e testar um modificação no meu código JavaScript pelo próprio navegador sem mexer no fonte já testei o fire bug e nao deu certo conhecem algum outro método ?
       
×

Informação importante

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