ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

problema com position firebird 2.5?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Jun 16, 2021 1:38 pm    Assunto: problema com position firebird 2.5? Responder com Citação

Tenho essa sql
Código:
    SELECT                                                       
           distinct a.cd_produto                                 
           ,a.descricao_produto                                 
      FROM produtos a,                                           
           comercializacao b,                                   
           comercializacao_cobertura c,                         
           tipocobertura d,                                     
           coberturas e                                         
     WHERE a.cd_situacao_produto = 1                             
       AND position(:pUF in a.uf_comercializacao) > 0
       AND a.permite_conjugado = :pFamiliar                     
       AND b.cd_tabela = a.cd_tabela                             
       AND b.exibe_comercializacao = 'S'
       AND c.cd_comercializacao = b.cd_comercializacao           
       AND b.idade_de <= :pIdade                                 
       AND d.tp_cobertura = c.tp_cobertura                       
       AND e.cd_produto = a.cd_produto                           
       AND e.tp_cobertura = d.tp_cobertura                       
  ORDER BY a.cd_produto                                         


tenho o campo a.uf_comercializacao que contém valores tipo
PR,SC,RS,AM,RO
e as vezes em branco sem valor

Meu problema é que qundo passo um parametro SP por exemplo ele retorna null o que está correto, porém se eu não passar nenhum parametro ou seja vazio ele retorna e eu não quero que retorna nada se simplesmente estiver sem valor nesse parametro. Como faço isso?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Jun 17, 2021 9:53 am    Assunto: Responder com Citação

Bom dia,

Não sei se entendi corretamente, mas acho que uma alternativa seria verificar na aplicação o valor que vai ser passado, e se estiver em branco passar null:

Código:
DataSet1.ParamByName('pUF').DataType := ftString;
DataSet1.ParamByName('pUF').Clear;


Ou talvez exigir que esse parâmetro seja preenchido já que se ele não for não será retornado nada.

Espero que ajude


Editado pela última vez por imex em Dom Out 01, 2023 5:42 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jun 18, 2021 8:34 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Não sei se entendi corretamente, mas acho que uma alternativa seria verificar na aplicação o valor que vai ser passado, e se estiver em branco passar null:

Código:
DataSet1.ParamByName('pUF').DataType := ftString;
DataSet1.ParamByName('pUF').Clear;


Ou talvez exigir que esse parâmetro seja preenchido já que se ele não for não será retornado nada.

Espero que ajude
Bom dia, então se não ter valor no parametro pUF não deve vir nada

Olha como esta o select na aplicação
Código:
cSQL :=
          '    SELECT                                                       '+
          '           distinct a.cd_produto                                 '+
          '           ,a.descricao_produto                                  '+
          '      FROM produtos a,                                           '+
          '           comercializacao b,                                    '+
          '           comercializacao_cobertura c,                          '+
          '           tipocobertura d,                                      '+
          '           coberturas e                                          '+
          '     WHERE a.cd_situacao_produto = 1                             '+
          '       AND position(:pUF in a.uf_comercializacao) > 0            '+
          '       AND a.permite_conjugado = :pFamiliar                      '+
          '       AND b.cd_tabela = a.cd_tabela                             '+
          '       AND b.exibe_comercializacao = ''S''                       '+
          '       AND c.cd_comercializacao = b.cd_comercializacao           '+
          '       AND b.idade_de <= :pIdade                                 '+
          '       AND d.tp_cobertura = c.tp_cobertura                       '+
          '       AND e.cd_produto = a.cd_produto                           '+
          '       AND e.tp_cobertura = d.tp_cobertura                       '+
          /// Este aqui é o unico que a ordem é pelo cd_produto apenas pois serve
          ///   para trazer os produtos por sua ordem de ID
          '  ORDER BY a.cd_produto                                          ';

        cQueryProduto.Close;
        cQueryProduto.SQL.Clear;
        cQueryProduto.SQL.Text := cSQL;
        cQueryProduto.Params.Add('PUF', ftString, ptInput);
        cQueryProduto.Params.Add('PFAMILIAR', ftString, ptInput);
        cQueryProduto.Params.Add('PIDADE', ftInteger, ptInput);
        ///
        cQueryProduto.ParamByName('pUF').DataType := ftString;
        cQueryProduto.ParamByName('pUF').Clear;
        ///
        cQueryProduto.Params[0].AsString := AUf;
        cQueryProduto.Params[1].AsString := AFamiliar;
        cQueryProduto.Params[2].AsInteger := nIdade;
        cQueryProduto.Prepare;
        cQueryProduto.Open;


Inclusive coloquei sua dica, mais não deu certo ainda Imex.

Esse sistema é um datasnap e roda como serviço

A chamada é assim
Código:
http://localhost:4027/consultadados_cm?base=B&data_nascimento=2000-01-15&familiar=N&uf=


No caso ai o parametro pUF não estou mandando, mais traz valores.

Na minha base não tenho RJ por exemplo
e se eu passar assim
Código:
http://localhost:4027/consultadados_cm?base=B&data_nascimento=2000-01-15&familiar=N&uf=RJ

Vem vazio o retorno, e é assim que preciso que venha caso não passe nada na URL

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Jun 18, 2021 10:37 am    Assunto: Responder com Citação

Bom dia,

Acho que essa sugestão do null teria que ser aplicada na camada servidora, mas uma outra alternativa pelo que vi seria passar como parâmetro um valor que com certeza não será encontrado, de repente um número zero.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jun 18, 2021 11:20 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

mas uma outra alternativa pelo que vi seria passar como parâmetro um valor que com certeza não será encontrado, de repente um número zero.

Espero que ajude
Boa ideia Imex, não tinha pensado nisso. Obrigado
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB