16/03/2006

Unique Index

Olá pessoal,

Porque quando eu vou criar uma FK ele dá esse erro:

alter table LANCAMENTOCONT
add constraint FK_LANCAMENTOCONT
foreign key (TIPODEDEBITO)
references TIPODEDEBITO(CODIGODACURIAD)

Estou criando assim:

alter table LANCAMENTOCONT
add constraint FK_LANCAMENTOCONT
foreign key (TIPODEDEBITO)
references TIPODEDEBITO(CODIGODACURIAD)


Estou tentando tb pelo IBExpert mas dá o mesmo erro.

Rodrigo


Rodrigorpb

Respostas

16/03/2006

Paullsoftware

a tabela já contém dados?

pode ser que ajá algum dado repetido!


Responder Citar

16/03/2006

Rodrigorpb

DEU CERTO,
AMIGOS OUTRA COISA, COMOTRADUZ AS MENSAGENS DE INTEGRIDADE NO DELPHI PARA O USUÁRIO. TIPO QUANDO DELETA UMA COM INTEGRIDADE DA AQUELA MENSAGEM HORRÍVE.


RODRIGO


Responder Citar

16/03/2006

Paullsoftware

eu uso tratamento de exceções, você pode procurar mais sobre o assunto no fórum:
procedure TfPRINCIPAL.CapturaErros(Sender: TObject; E: Exception);
var mensagem: string;
    Pos1, Pos2: integer;
    NomeDoLog: string;
    Arquivo: TextFile;
begin
    NomeDoLog := ChangeFileExt(Application.Exename, ´.log´);
    AssignFile(Arquivo, NomeDoLog);
    if FileExists(NomeDoLog) then
      Append(arquivo)
    else
      ReWrite(arquivo);
    try
      WriteLn(arquivo, ´****************** ´+DateTimeToStr(Now)+ ´ ****************** ´);
      Writeln(arquivo, ´Erro Ocorrido: ´);
      Writeln(arquivo,E.Message);
      Writeln(arquivo, ´Janela: ´+ Screen.ActiveForm.Name + ´ Controle Ativo: ´+Screen.ActiveControl.Name);
      WriteLn(arquivo, ´----------------------------------------------------------------------´);
       MessageDlg(´Ocorreu o seguinte erro:´+e.Message,mtError,[mbOK&93;,0);//aqui você pode persolizar a mensagem de erro
    finally
      CloseFile(arquivo)
    end;
   If Pos(UpperCase(´is not a valid date´), UpperCase(E.Message)) <> 0 then
           MessageDlg(´Data inválida, proceda a correção.´,mtError,[mbOK&93;,0)
   else
      if Pos(UpperCase(´must have a value´), UpperCase(E.Message)) <> 0 then
           begin
              Pos1:=Pos(´´´´, E.Message);
              mensagem:=E.Message;
              Delete(mensagem, Pos1, 1);
              Pos2:=Pos(´´´´, mensagem);
              mensagem:=copy(E.Message, Pos1 + 1, Pos2 - Pos1);
              MessageDlg(´É obrigatório o preenchimento do campo ´+ mensagem +´.´,mtError,&91;mbOK&93;,0);
           end
   else
      If Pos(UpperCase(´key violation´), UpperCase(E.Message)) <> 0 then
           MessageDlg(´Houve violação de chave. Registro já incluso.´,mtError,&91;mbOK&93;,0)
   else
      If Pos(UpperCase(´Input value´), UpperCase(E.Message)) <> 0 then
           MessageDlg(´Campo preenchido com valor não válido. Proceda a correção.´,mtError,[mbOK&93;,0)
   else
      If Pos(UpperCase(´is not a valid time´), UpperCase(E.Message)) <> 0 then
           MessageDlg(´Hora inválida, proceda a correção.´,mtError,&91;mbOK&93;,0)
   else
      If Pos(UpperCase(´master has detail records´), UpperCase(E.Message)) <> 0 then
          MessageDlg(´Proibida a Exclusão e Modificação deste Registro, pois ele faz referência a Outro(s) Registro(s)!´,mtError,&91;mbOK&93;,0)
   else
      If Pos(UpperCase(´field value required´), UpperCase(E.Message)) <> 0 then
        Begin
          Pos1:=Pos(´:´,E.Message);
          Delete(Mensagem,Pos1,1);
          Mensagem:=copy(E.Message,Pos1+2,30);
          MessageDlg(´É obrigatório o preenchimento do campo "´+mensagem+´".´,mtError,&91;mbOK&93;,0)
        End;
      If Pos(UpperCase(´RECORD LOCKED BY ANOTHER USER.´), UpperCase(E.Message)) <> 0 then
         MessageDlg(´O Registro está sendo Utilizado por Outro Usuário da Rede. Cancele a Operação e Aguarde a Liberação do Mesmo!´,mtError,[mbOK&93;,0)
   else
      MessageDlg(´Ocorreu o seguinte Erro: ´+E.Message,mtError,&91;mbOK&93;,0);

end;

para funcionar coloque o OnCreate do form principal!
Application.OnException := CapturaErros;


espero ter ajudado!


Responder Citar