Fórum Transformar Inteiro em Caracter #298943

10/10/2005

0

Ola Pessoal,

Uso o Firebird com o IBExpert. No IB tenho uma procedure que faz o seguinte: retorna o numero do ultimo pedido e atualiza a tabela.
O problema é o seguinte:
1) O meu campo e Char(5)
2) Preciso transformar em Inteiro para acrescentar + 1
Ate aí beleza conforme citacao abaixo.
CREATE PROCEDURE F_NUMPEDIDO ( RETURNS ( NUMPEDIDO CHAR(5)) AS begin select empnumped from empresa where empcod = :tipo into :numpedido; update empresa set empnumped = cast(empnumped as integer)+ 1; suspend; end


3) Preciso agora de transformar novamente em char com cinco posiçoes.

[b:82f1d1f535]
EX: empnumped = 00035
o numpedido deverá retornar: 00036
[/b:82f1d1f535]


:lol: Alguém pode me ajudar?

Caso ainda não ficou claro, e só postar a dúvida! :o

brigadu.


Morais


Digitom

Digitom

Responder

Posts

10/10/2005

Rjun

Eu não conheço Firebird, mas você não pode dar um Cast para Char?


Responder

Gostei + 0

10/10/2005

Digitom

Se eu usar o CHAR dá erro na hora de executar,
Eu tentei usar assim:

CREATE PROCEDURE F_NUMPEDIDO (
RETURNS (
NUMPEDIDO CHAR(5))
AS
begin
select empnumped
from empresa
where empcod = :tipo
into :numpedido;
update empresa set empnumped = [b:d96ac94c4b]cast([/b:d96ac94c4b] cast(empnumped as integer)+ 1 [b:d96ac94c4b]as char[/b:d96ac94c4b];
suspend;
end

[color=blue:d96ac94c4b]
Erro: Overflow occured during data type conversion.
conversion error from string ´38´.
[/color:d96ac94c4b]

brigadu

Morais


Responder

Gostei + 0

11/10/2005

Digitom

Seguinte.

Consegui resolver o erro abaixo, :oops: Mas ainda preciso que ele retorne os [color=darkblue:0909704040]ZEROS A ESQUERDA[/color:0909704040].

[b:0909704040]
Erro: Overflow occured during data type conversion.
conversion error from string ´38´.
[/b:0909704040]

fiz a seguinte modificação:

CREATE PROCEDURE F_NUMPEDIDO (
RETURNS (
NUMPEDIDO CHAR(5))
AS
begin
select empnumped
from empresa
where empcod = :tipo
into :numpedido;
update empresa set empnumped = [b:0909704040]cast([/b:0909704040]cast(empnumped as integer)+ 1 [b:0909704040]as char(5))[/b:0909704040];
suspend;
end


Ou seja, coloquei o tamanho do caracter 5 que é o meu caso.

Brigadu.

Morais


Responder

Gostei + 0

17/10/2005

Digitom

Para quem estiver passando pelo mesmo problema que passei, eu quero compartilhar a solução do meu problema.

A todos que tentaram responder o meu muito obrigado.


Usando a função UDF lpad eu consigo retornar a quantidade de caracteres desejados.

Ex:

[b:c56dd3c151]lpad(empnumped, 5,´0´) [/b:c56dd3c151]


ps. Tem que definir a utilização desta UDF pelo bd


brigadu.

Morais


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar