GARANTIR DESCONTO

Fórum Registro duplicado usando trigger #51003

13/05/2005

0

boa tarde a todos,

meu problema e o seguinte:
tenho uma tabela chamada modelo que tem os seguintes campos:
codigo integer autoincremento que é minha chave primaria e
descricao varchar(30)
e para completar
ALTER TABLE modelo ADD CONSTRAINT UNQ_modelo UNIQUE (DESCRICAO)
a questao e a seguinte como eu crio uma EXCEPTION com a mensagem ´descricao ja existe´ no meu BD e quando executar meu programa cliente feito em delphi usando dbexpress essa mensagem de erro aparaça informando para o cliente que o que ele digitrou ja existe cadastrado no banco de dados.


Tronbr

Tronbr

Responder

Posts

13/05/2005

Gandalf.nho

Nem precisa usar uma EXCEPTION. Já que vc declarou o campo como único basta interceptar a mensagem de erro normal e passar a mensagem amigável pro usuário.


Responder

Gostei + 0

13/05/2005

Tronbr

a titulo de exemplo estou fazendo o seguinte:
no evento onclick de um TButton eu chamo o seguinte processo

var
  TD: TTransactionDesc;
begin
  TD.TransactionID := 1;
  TD.IsolationLevel := XILReadCommitted;
  SQLConnection1.StartTransaction(TD);
  try
    DS.Post;
    DS.ApplyUpdates(0);
    SQLConnection1.Commit(TD);
    DS.Last;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;


onde DS é um TsimpleDataSet que tem em sua propriedade DataSet.CommandText = ´Select * from modelo´. o erro quando estou debugando acontece, mas quando o programa está executando direto sem o delphi a mensagem de erro nem aparece, ele apenas não grava.
para entrar com a descricao e o codigo estou usando Tdbedit linkado ao DS.

muito obrigado pela rapidez com que vc respondeu a primeira pergunta, em outros foruns isto levaria horas senão dias.


Responder

Gostei + 0

13/05/2005

Gandalf.nho

Pelo que sei, em em ClientDataSet e similares vc deve usar o evento OnReconcileError para interceptar as mensagens de erro, pq o Try/Except não funciona nesse caso.


Responder

Gostei + 0

13/05/2005

Tronbr

eu sei que nao e de bom tom estar agradecendo as respostas, para nao entulhar o forum, mas ja entulhando muito obrigado. sua dica funcionou perfeitamente.


Responder

Gostei + 0

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

Aceitar