Problema com E.Message do E:Exception

Delphi

11/10/2013


Bom Dia Pessoal

Estou com um problema e gostaria da ajuda dos colegas.
Tenho um 2 SQLs distintos, mas o primeiro SQL me dá o seguinte erro

- attempt to store duplicate value (visible to active transactions) in unique index "INDEX_FONES"

mensagem enviada atraves do e.message

Mas, meu problema q a partir deste erro, qualquer sql diferente deste, o e.message assume mesma mensagem do sql 1

Segue mais ou menos a estrutura do problema abaixo


try
for contador := 1 to 2 do
begin
case contador of
lsql:= 'ALTER INDEX INDEX_FONES ACTIVE';
lsql:= 'ALTER TABLE TABELAX ADD CONSTRAINT PK_TABELAX_CODIGO PRIMARY KEY (CODIGO)';
end;
end;
query.close;
query.sql.text := lsql;
query.Execsql;
except
on e:exception do
begin
ShowMessage(e.message);

// se contador for 1, o erro será 'attempt to store duplicate value (visible to active transactions) in unique index "INDEX_FONES" '
// se contador for 2, o erro será 'Index PK_TABELAX_CODIGO already exists'
// mas tanto, o sql 1 e 2 está aparecendo a mesma mensagem

end; // on e:exception do
end;

Alguem sabe o q estou errando ou alguma dica?

Abraços
Alessandro Yamasaki

Alessandro Yamasaki

Curtidas 0

Respostas

Ricardo Rodrigues

Ricardo Rodrigues

11/10/2013

tenta zerar essa variável antes de receber os sql, e também depois do close da query dá um sql.clear. Ae ja elima algumas hipóteses.
GOSTEI 0
Alessandro Yamasaki

Alessandro Yamasaki

11/10/2013

Ola Ricardo

Consegui resolver meu problema com um TIBTransaction, desativando e ativando ele novamente.

Vlw

Abs
GOSTEI 0
Diego Garcia

Diego Garcia

11/10/2013

amigo vc está sempre rodando a mesma query

faça um query.SQL.Clear, antes de atribuir o query.SQL.text

EDIT: Desculpe, acho que fiz um comentário errado.. acredito que quando se atribui o SQL.Text ele substitui o que estava antes, mas já vi que consegui resolver.

[]'s
GOSTEI 0
José

José

11/10/2013

Como a duvida inicial foi sanada, estou finalizando o tópico.
fiquem a vontade para abrir novos.
GOSTEI 0
POSTAR