[firebase-br] (meio off)Erro ao retornar parametro DECIMAL de SP

Moisés Silva zeismoinet em yahoo.com.br
Seg Out 10 08:48:08 -03 2005


Tente o seguinte:
showmessage(formatfloat('##0.00',SQLStoredProc1.ParamByName('LIMIT_CREDIT').Value));
 
  Até mais...


Francis <francisodisi em brturbo.com> escreveu:
Olá!

Estou iniciando com SP's e criei uma SP para retornar os dados de um registro de uma tabela (no meu caso, CUSTOMER).
Criei a SP da seguinte maneira:

SET TERM ^ ;

CREATE PROCEDURE SELECT_CUSTOMER (
ID INTEGER)
RETURNS (
KIND VARCHAR(1),
NAME VARCHAR(80),
ADDRESS VARCHAR(40),
ADDRESS_COMPLEMENT VARCHAR(40),
DISTRICT VARCHAR(40),
CITY VARCHAR(40),
POSTCODE VARCHAR(12),
STATE_ID INTEGER,
COUNTRY_ID INTEGER,
PHONE_1 VARCHAR(18),
PHONE_2 VARCHAR(18),
EMAIL_ADDRESS VARCHAR(60),
HOME_PAGE VARCHAR(60),
CELEBRATION_DATE DATE,
LIMIT_CREDIT DECIMAL(13,2),
REG_DATE_TIME TIMESTAMP,
FANTASY_NAME VARCHAR(80),
CNPJ VARCHAR(20),
IE VARCHAR(20),
FAX VARCHAR(18),
ID_CARD VARCHAR(20),
CPF VARCHAR(20))
AS
BEGIN
/* Procedure Text */
SELECT
KIND, NAME, ADDRESS, ADDRESS_COMPLEMENT, DISTRICT, CITY, POSTCODE,
STATE_ID, COUNTRY_ID, PHONE_1, PHONE_2, EMAIL_ADDRESS, HOME_PAGE,
CELEBRATION_DATE, LIMIT_CREDIT, FANTASY_NAME, CNPJ, IE, FAX,
ID_CARD, CPF, REG_DATE_TIME
FROM
CUSTOMER
WHERE
ID = :ID
INTO
:KIND, :NAME, :ADDRESS, :ADDRESS_COMPLEMENT, :DISTRICT, :CITY, :POSTCODE,
:STATE_ID, :COUNTRY_ID, :PHONE_1, :PHONE_2, :EMAIL_ADDRESS, :HOME_PAGE,
:CELEBRATION_DATE, :LIMIT_CREDIT, :FANTASY_NAME, :CNPJ, :IE, :FAX,
:ID_CARD, :CPF, :REG_DATE_TIME;
SUSPEND;
END
^

SET TERM ; ^

Até aí tudo bem. A SP está certa e qdo executo ela através do IBExpert, tudo funciona perfeitamente.

Na tabela CUSTOMER tenho os sguintes registros (Vou definir apenas as colunas ID, NAME e LIMIT_CREDIT)
ID Name Limit_Credit
1 João 1000,00
2 Maria 1500,50
3 José 1250,56 

Depois de criada a SP, fui fazer um teste com ela utilizando Delphi 7, com DBExpress.
Primeiramente utilizei um component TSQLQuey e na propriedade SQL coloquei o seguinte comando:

select name, limit_credit from select_customer (4)



OK!!! O comando está correto e a query retornou os valores corretos.



O problema vem agora!!!

Depois de utilizar o component TSQLQuery, resolvi testar utilizando um TSQLStordProc.

Defini a propriedade StoredProcName igual ao nome da SP criada anteriormente e implementei o seguinte código num TButton:

procedure TForm1.Button1Click(Sender: TObject);
begin
SQLStoredProc1.ParamByName('ID').Value := '3';
SQLStoredProc1.Prepared := True;
SQLStoredProc1.ExecProc;

showmessage(SQLStoredProc1.ParamByName('NAME').AsString);
showmessage(SQLStoredProc1.ParamByName('LIMIT_CREDIT').AsString);
end;



qdo a linha "showmessage(SQLStoredProc1.ParamByName('LIMIT_CREDIT').AsString);" foi executada o valor mostrado foi 1250,5, e não 1250,56, como está armazenado no DB.

Alguém poderia me dizer porque e como eu faço para resolver isso?? Já tentei trazer como asFloat, mas não funcionou.

Desculpem o off!!

Desde já agradeço!!!


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

		
---------------------------------
 Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula cupons e concorre a mais de 500 prêmios! Participe!


Mais detalhes sobre a lista de discussão lista