| 
			
				|  | 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: |   |  
				| 
 |  
				| Bom dia, então se não ter valor no parametro pUF não deve vir nada 	  | 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
 
 | 
 
 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.
 
 |  |