Erro em instruções SQL
31/01/2007
0
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
Curtir tópico
+ 0Posts
31/01/2007
Sandrad
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.
Gostei + 0
31/01/2007
Ramms
Gostei + 0
31/01/2007
Sandrad
Gostei + 0
01/02/2007
Ramms
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 (=).
Gostei + 0
01/02/2007
Sandrad
Obrigada
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)