Mensagem de Erro SQL SERVER

08/03/2005

0

Qdo deleto uma cidade no cad_cidade e tem um cliente com essa cidade (uso relacionamento no BD) o programa dah uma mensagem enorme q o cliente pediu pra muda-la, alguem sabe como axo o codigo da mensagem e mostro uma com messadlg mesmo ???


Guima

Guima

Responder

Posts

08/03/2005

Bon Jovi

Qual linguagem?

Ex. Delphi:
  try
     StrToInt(´a´);
  except
    on E: Exception do
      if Pos(´is not a valid integer value´, AnsiLowerCase(E.Message)) > 0 then
        Application.MessageBox(´Número inteiro inválido´, ´´, 0)
  end;


Dependendo da situação isso pode furar, se a msg vir diferente/em outra língua. No caso do Oracle ele retorna um código do erro na msg. No Sql Server acho q não tem isso.

Outra opção é usando ClientDataSet, onde possui o evento OnReconcileError, mas não sei se vc está usando cds ou até Delphi.


Responder

10/03/2005

Guima

mas no caso do SQL Server qdo apaga uma cidade relacionada com um cliente, o proprio BD dah uma mensagem enorme q naun pode deletar pq existe registros usando aquela cidade q vc quer apagar - eu quero trocar essa mensagem do BD por uma MessageDlg(´Tem cliente usando essa cidade, impossivel apaga-la´) ... help=me please


Responder

11/03/2005

Felipe_cduarte

Fala !

vou dar um help. vc pode criar um procedimento +- assim

procedure TrataErrosSQLServer(CodErro: Integer);
Var Descricao : String;
begin
Descricao := DtModule.ADOConnection1.Errors.Item[0].Description;

if ( CodErro = 2627 ) then // Violação de constraint unique
begin
if ( Pos( ´nome_da_chave´, Descricao ) > 0 ) then
begin
Application.MessageBox(´Já existe um ?? cadastrado.´, ´Atenção !!!´, MB_ICONSTOP );
end;
end
else if ( CodErro = 547 ) then // Conflitos ( Inserção, Alteração ou Exclusão )
begin
if ( Pos( ´fk_cliente´, Descricao ) > 0 ) then
Application.MessageBox(´cliente nao pode ser excluido´ , ´Atenção!!!´ , MB_ICONSTOP )
end
else
Application.MessageBox( PChar( ´Erro: ´ + IntToStr( CodErro ) + ´ - ´ + Descricao ), ´Atenção !!!´, MB_ICONEXCLAMATION );
end;

esses códigos estão documentados no BOL

pra chamar o procedimento vc pode usar um bloco de try/except

try
dm.begintrans;
// codigo
dm.committrans;
except
on EOleException do
begin
TrataErrosSQLServer( DtModule.ADOConnection1.Errors.Item[0].NativeError );
end;
end;

[]´s


Responder

11/03/2005

Guima

Cara, brigadaun, vou tentar arrumar isso lah, por hora obrigado, c eu naun consegui te falo again .... mas por hora brigadaun mesmo


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar