[firebase-br] Retirar pontos de um campo

Henrique Ribeiro kikeribeiro em gmail.com
Ter Set 3 08:12:29 -03 2013


Bom dia amigo,

Eu resolvi isto via programação no Delphi.

Segue a função:

function SomenteNumero(s: string; nao: Char): string;
var
  i: integer;
  sa: string;
begin
  sa := '';
  for i := 1 to length(s) do
    begin
      Application.ProcessMessages;
      if nao = '' then
        begin
          if s[i] in ['0'..'9'] then
            sa := sa + s[i];
        end
      else if s[i] in ['0'..'9', nao] then
        sa := sa + s[i];
    end;
  Result := sa;
end;


E quando eu preciso, uso da seguinte forma:

Edit1.text:= SomenteNumero(Edit1.Text, #255);


Abraço,
lher


2013/8/29 Denis Dias <denisdias em sociativa.com.br>

> Olá Pessoal,
>
> Estou utilizando a sentença abaixo para retornar somente os números de um
> campo (NCM) de uma tabela (Est_adicionais), preciso implementá-la agora
> para atualizar (Update) o campo com o retorno da consulta, mas estou
> encontrando dificuldades, alguém pode me ajudar?
> *Obs: utilizo o Firebird 2.0.3 e o IBmanager para executar a sentença.*
>
> SELECT
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  1 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  1 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  2 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  2 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  3 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  3 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  4 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  4 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  5 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  5 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  6 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  6 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  7 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  7 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  8 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  8 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM  9 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM  9 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM 10 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM 10 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM 11 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM 11 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM 12 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM 12 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM 13 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM 13 FOR 1) ELSE '' END ||
>    CASE WHEN SUBSTRING(EST_ADICIONAIS.ncm FROM 14 FOR 1) IN
> ('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(EST_ADICIONAIS.ncm
> FROM 14 FOR 1) ELSE '' END
>
>    AS SO_NUMERO
>   FROM EST_ADICIONAIS
>
> OBS: Já utilizei no Ibexpert e no IBmanager a senteça
> *Update Est_Adicionais Set NCM = Replace(NCM,'.','')*
>
> *mas me retornou a mensagem: *
> An error was found in the application program input parameters for the SQL
> statement.
> Dynamic SQL Error.
> SQL error code = -804.
> Function unknown.
> REPLACE
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista