[firebase-br] Erro de Conversão -303?
Kleber Caneva
kdcc em terra.com.br
Qui Fev 26 13:11:51 -03 2009
Por usar parametros não deveria ser necessário, mas tente passar os tipos
string com QuotedStr().
Ex: ParamByName('CLIENTE').AsString := QuotedStr( txtNome.Caption; )
Eu pessoalemnte não gosto de usar componentes proprio para executar SP.
Eu uso uma Query com 'EXECUTE PROCEDURE SP_NOME( :PARM1, :PARAM2, etc)'
Uma sugestão:
Ao invés de usar
ParamByName('CLIENTE').Value := null
use
ParamByName('CLIENTE').Clear;
Fica mais legivel na minha opinão.
[]´s
Kléber Caneva
----- Original Message -----
From: <cazon em tecnolab.mus.br>
To: <lista em firebase.com.br>
Sent: Wednesday, February 25, 2009 9:12 PM
Subject: [firebase-br] Erro de Conversão -303?
Ola Pessoal td bem?
Sou novato em SP e encontrei uma dificuldade em um teste que estou fazendo.
{Firebird 2.1 + Delphi 2009}
Criei esta procedure para atualizar os dados de uma Ordem de Serviços:
SET TERM ^ ;
CREATE PROCEDURE SP_UPDATE_ORDEM (
CODIGO Integer,
RELACAO Integer,
CLIENTE Varchar(60),
EQUIPO Varchar(50),
MARCA Varchar(30),
MODELO Varchar(30))
as
Begin
if (EXISTS(SELECT ORD_CODIGO from ORDEM where (ORD_codigo = :codigo)) )
then
update ORDEM
set ORD_CODIGO = :codigo,
ORD_RELACAO = :relacao,
ORD_CLIENTE = :cliente,
ORD_EQUIPO = :equipo,
ORD_MARCA = :marca,
ORD_MODELO = :modelo
WHERE (ORD_CODIGO = :codigo);
end^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE SP_UPDATE_ORDEM TO SYSDBA;
** Codigo no delphi:
begin
with Dm.Sp_Update_Ordem do
begin
ParamByName('CODIGO').AsInteger :=
StrToInt(edtCodigo.Text);
ParamByName('RELACAO').AsInteger :=
StrToInt(edtCliente.Text);
if (txtNome.Caption = '') then
ParamByName('CLIENTE').Value := null
else
ParamByName('CLIENTE').AsString := txtNome.Caption;
if (edtEquipo.Text = '' )then
ParamByName('EQUIPO').Value := null
else
ParamByName('EQUIPO').AsString := edtEquipo.Text;
if (edtMarca.Text = '' )then
ParamByName('MARCA').Value := null
else
ParamByName('MARCA').AsString := edtMarca.Text;
if (edtModelo.Text = '' )then
ParamByName('MODELO').Value := null
else
ParamByName('MODELO').AsString := edtModelo.Text;
ExecProc;
Dm.Transaction.Commit;
end;
end;
** quando executo recebo este erro:
First chance exception at $7C812AEB. Exception class EIBInterBaseError
with message 'Dynamic SQL Error
SQL error code = -303
conversion error from string "NOME DO CLIENTE"'. Process Tecsystem.exe (404)
Alguem ja passou por algo semelhante que possa me dar uma ajuda?
Obrigado.
Mario Cezar
______________________________________________
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
E-mail verificado pelo Terra Anti-Spam.
Para classificar esta mensagem como spam ou não spam, visite
http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0NDU0NzM0I3Blcm0hdGVycmEmMSwxMjM1NjA3NzQ1LjgwNDQ3OS41MDAyLmNhYnJldG9uLnRlcnJhLmNvbSw1ODEz
Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.
Mais detalhes sobre a lista de discussão lista