Array
(
)

Erro em instruções SQL

Sandrad
   - 31 jan 2007

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
   - 31 jan 2007

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

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

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

inicialmente DeleteSQL 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 ModifySQL 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.

Ramms
   - 31 jan 2007

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

Sandrad
   - 31 jan 2007

Firebird

Ramms
   - 01 fev 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 (=).

Sandrad
   - 01 fev 2007

putz, que vergonha

Obrigada