Erro em instruções SQL

31/01/2007

0

Estou com uma dúvida básica, talvez algum de vocês possa me ajudar.

Qdo se usa o componente IBDataSet e alguma das instruções SQL está errada (em SelectSQL, RefreshSQL, ModifySQL...) o compilador não mostra quais das instruções contém o erro!! Não existe uma forma de saber qual das rotinas contém o erro pra não ficar na ´tentativa e erro´ até achar a instrução com falha??

Desde já, eu agradeço a quem puder me ajudar.


Sandrad

Sandrad

Responder

Posts

31/01/2007

Sandrad

Bom, por tentativa e erro cheguei nas instruções com erro.

As instruções sem erro são:
[b:c9171cf49e]SelectSQL [/b:c9171cf49e]- select * from ALUNOS
[b:c9171cf49e]InsertSQL [/b:c9171cf49e]- insert into ALUNOS (RA, NOME, MAILID, MAILSERVER) values (:RA, :NOME, :MAILID, :MAILSERVER)
[b:c9171cf49e]RefreshSQL[/b:c9171cf49e] - select * from ALUNOS where RA=RA

As instruções com erro são DeleteSQL e ModifySQL

inicialmente [b:c9171cf49e]DeleteSQL[/b:c9171cf49e] estava assim:
delete from ALUNOS where RA:=OLD_RA
o que causava a seguinte mensagem:
´SQL Parse Error: Parameter name expected´

Iniciante em SQL q sou, tirei os dois pontos ...where RA=OLD_RA
o que causou outra mensagem de erro:
´Dynamic SQL Error
SQL error code = -206
Column unknown
OLD_RA´

Pelo que vi, o prefixo ´OLD_´ é usado nesses casos para se referir ao valor do campo antes da alteração. É necessário declará-lo ou ativar alguma opção para que o SQL possa identificá-lo??

A instrução [b:c9171cf49e]ModifySQL[/b:c9171cf49e] está assim:
update Alunos
set RA:=RA, NOME:=NOME, MAILID:=MAILID, MAILSERVER:=MAILSERVER where RA=OLD_RA

Caso eu entenda o q está errado antes de uma resposta neste fórum, eu posto aqui. Também gostaria que o oposto acontecesse. Isto não é um trabalho de faculdade, como pode parecer :) é um sistema para controle de pagamento de mensalidade de comissão de formatura. Não temos Delphi ou SQL neste semestre e, como este não é o meu foco, estou apanhando um pouco.

Mais uma vez, obrigada.


Responder

31/01/2007

Ramms

Vocês está usando Interbase/Firebird ou SQL Server?


Responder

31/01/2007

Sandrad

Firebird


Responder

01/02/2007

Ramms

Aqui é o forum de SQL Server, você deveria ter postado em Interbase/Firebird, mas vou te ajudar.

Está coluna OLD_RA existe na tabela alunos?

Essa instrução está errada

update Alunos
set RA:=RA, NOME:=NOME, MAILID:=MAILID, MAILSERVER:=MAILSERVER where RA=OLD_RA

O Correto é

update Alunos
set RA = :RA, NOME = :NOME, MAILID = :MAILID, MAILSERVER = :MAILSERVER where RA = :OLD_RA

Na última instrução considerei que OLD_RA seja um parametro.

Observe que eu passei os dois pontos (:) para dps do sinal de igual (=).


Responder

01/02/2007

Sandrad

putz, que vergonha

Obrigada


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar