|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qua Jun 16, 2021 1:38 pm Assunto: problema com position firebird 2.5? |
|
|
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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jun 17, 2021 9:53 am Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Jun 18, 2021 8:34 am Assunto: |
|
|
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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Jun 18, 2021 10:37 am Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|