Fórum Problema com E.Message do E:Exception #458249

11/10/2013

0


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

Responder

Posts

11/10/2013

Ricardo Rodrigues

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.
Responder

Gostei + 0

11/10/2013

Alessandro Yamasaki

Ola Ricardo

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

Vlw

Abs
Responder

Gostei + 0

11/10/2013

Diego Garcia

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
Responder

Gostei + 0

11/10/2013

José

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

Gostei + 0

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

Aceitar