Transformar Inteiro em Caracter
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.
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
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
Curtidas 0
Respostas
Rjun
10/10/2005
Eu não conheço Firebird, mas você não pode dar um Cast para Char?
GOSTEI 0
Digitom
10/10/2005
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
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
GOSTEI 0
Digitom
10/10/2005
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
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
GOSTEI 0
Digitom
10/10/2005
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
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
GOSTEI 0