Ir para conteúdo
Fórum Script Brasil
  • 0

Erro somente no desenvolvimento da aplicação


nsouza

Pergunta

Colegas,

o codigo abaixo apresenta o seguinte erro: " 'sqlExec: Parameter 'DATAFERIADO' not found'.

o problema é que na tabela existe este campo, quando eu a linha de comando SQL:

INSERT INTO FERIADOS (DATAFERIADO, DESCRICAO) VALUES (:DATAFERIADO,:DESCRICAO)

ni IBEXPERT funcionou, mas na aplicação retorna este erro.

alguém poderia de dar uma ajuda?

Obrigado!

function TfrmFeriadoEd.Incluir: Boolean;
begin
  try
      sqlExec.Close;
      sqlExec.SQLConnection := FoSQLConn;
      sqlExec.sql.clear;
      sqlExec.sql.add('INSERT INTO FERIADOS        ');
      sqlExec.sql.add(' ( DATAFERIADO, DESCRICAO)  ');
      sqlExec.sql.add(' VALUES                     ');
      sqlExec.sql.add(' (:DATAFERIADO, :DESCRICAO)');
      sqlExec.ParamByName('DATAFERIADO').AsDateTime := edtData.Date;
      sqlExec.ParamByName('DESCRICAO').AsString := edtDescricao.Text;
      //Se o registro for gravado a função retorna 1
      Result := sqlExec.ExecSQL() = 1;
  except
    on e: exception do
   begin
      result := false;
      showmessage(e.Message + ' na rotina Incluir')
   end;
  end;
  end;

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0
codigo abaixo apresenta o seguinte erro: " 'sqlExec: Parameter 'DATAFERIADO' not found'.
o problema é que na tabela existe este campo, quando eu a linha de comando SQL:

INSERT INTO FERIADOS (DATAFERIADO, DESCRICAO) VALUES (:DATAFERIADO,:DESCRICAO)

sqlExce: O Parametro DATAFERIADO não foi encontrado e não o campo da tabela chamado DATAFERIADO

sqlExec.ParamByName('DATAFERIADO').AsDate := edtData.Date;

experimente mudar o nome do parametro e veja se o erro permanece

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jonas,

estou fazendo um teste e criei um stored procedure, veja:

CREATE PROCEDURE SP_INSERT (

pcodigo integer,

pdescricao varchar(50))

as

begin

insert into teste (codigo, descricao) values (:pcodigo, :pDescricao);

suspend;

end

// Do jeito que esta se eu executar pelo IBExpert funciona normalmente

Agora na aplicação fiz assim:

function TfromCadastro.incluir: Boolean;

var

loSp : TSQLStoredProc;

begin

try

try

loSp := TSQLStoredProc.Create(nil);

loSp.SQLConnection := Conn;

loSp.StoredProcName:= 'SP_INSERT';

loSp.ParamByName('PCODIGO' ).AsInteger := StrToInt(edtCodigo.Text);

loSp.ParamByName('PDESCRICAO' ).AsString := edtDescricao.Text;

loSp.ExecProc

except

on e: exception do

begin

result := false;

showmessage(e.Message + ' na rotina Incluir')

end;

end;

finally

FreeAndNil(loSp);

end;

end;

Nesta condição esta me retornando o mesmo erro:

Paramentro PCodigo não encontrado

Não entendi esse erro uma vez que o paramentro esta com o mesmo nome na stored procedure

Link para o comentário
Compartilhar em outros sites

  • 0

exemplo da sintaxe

INSERT INTO CLIENTE(C1, C2, C3) VALUES ( :par0, :par1, :par2);" 

    ParamByName('par0').AsInteger := 10; 
    ParamByName('par1').AsString   := 'par1'; 
    ParamByName('par2').AsString   := 'par2';
ou seu código
insert into teste (codigo, descricao) values (:pcodigo, :pDescricao);

loSp.ParamByName('PCODIGO' ).AsInteger := StrToInt(edtCodigo.Text);
loSp.ParamByName('PDESCRICAO' ).AsString := edtDescricao.Text;

Nesta condição esta me retornando o mesmo erro:

Paramentro PCodigo não encontrado

procure ver se o motivo não é a colocação de caracteres maiusculos e minusculos .... não me recordo agora

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

insert into teste (codigo, descricao) values (:pcodigo, :pDescricao);

loSp.ParamByName('PCODIGO' ).AsInteger := StrToInt(edtCodigo.Text);

loSp.ParamByName('PDESCRICAO' ).AsString := edtDescricao.Text;

me referi a isso .. do mesmo jeito que colocar na clausula insert colocar tambem no ParamByName

mas se ainda assim estiver dando erro, acompanhe a execução das linhas de comando com o debugger do delphi

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Foi isso que eu fiz, não não quer dar certo de forma alguma.

function TfromCadastro.incluir: Boolean;

var

loSp : TSQLStoredProc;

begin

try

try

loSp := TSQLStoredProc.Create(nil);

loSp.SQLConnection := Conn;

loSp.StoredProcName:= 'SP_INSERT';

loSp.ParamByName('pcodigo' ).AsInteger := StrToInt(edtCodigo.Text);

loSp.ParamByName('pdescricao' ).AsString := edtDescricao.Text;

loSp.ExecProc

except

on e: exception do

begin

result := false;

showmessage(e.Message + ' na rotina Incluir')

end;

end;

finally

FreeAndNil(loSp);

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0
mudei para procedure e nada aconteceu, continuou com o mesmo erro!

Fiz um teste simples aqui e funcionou ... sugiro a voce fazer o mesmo em uma outra aplicação para ver onde está errando

artigo sobre como usar uma stored procedure

http://www.oficinadanet.com.br/artigo/177/...ored_procedures

http://msdn.microsoft.com/en-us/library/ms189915.aspx

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Será que isso é um bug do meu delphi 2007? porque se você fez igual eu fiz e não deu pau, o erro não é de sintaxe concorda?

pode ser, mas como eu disse, para tirar a dúvida faça uma outra aplicação somente para testar o comando sql

estou usando delphi 5 e delphi 7 com interbase e o stored procedure está funcionando nos dois.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...