Erro em instruções SQL
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.
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
Curtidas 0
Respostas
Sandrad
31/01/2007
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.
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
Ramms
31/01/2007
Vocês está usando Interbase/Firebird ou SQL Server?
GOSTEI 0
Sandrad
31/01/2007
Firebird
GOSTEI 0
Ramms
31/01/2007
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 (=).
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
Sandrad
31/01/2007
putz, que vergonha
Obrigada
Obrigada
GOSTEI 0