Fórum Erro ao deletar um registro com referencia em outro. #401970
30/05/2011
0
Debugger Exception Notification
---------------------------
Project MATERIAIS.exe raised exception class EUIBError with message ´violation of FOREIGN KEY constraint "FK_FUNCIONARIO" on table "SEPARACAO"
Foreign key references are present for the record
violation of FOREIGN KEY constraint ""
Error Code: 146´.
---------------------------
Break Continue Help
--------------------------- Então criei um codigo com tratamento de exceções mas ainda da erro o codigo é esse abaixo: procedure TFrmFuncionario.btnDeletarClick(Sender: TObject);
begin
if Application.MessageBox(
'Tem certeza que deseja excluir o registro?',
'Confirmação', MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = mrYes then
begin
DataSource1.DataSet.Delete;
if DataSource1.DataSet is TClientDataSet then
begin
try
if (TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) =0)then
DataSource1.OnStateChange(DataSource1);
except
application.MessageBox('Exclusão não Permitida,Registro Presente na Aplicatção','SEPARACAO',MB_ICONERROR);
end;
end;
end;
end;
end.
Sera que alguem pode me ajudar o chegar a solução do problema? obrigado....
Rogerio Sena
Curtir tópico
+ 0Posts
30/05/2011
Rogerio Sena
Debugger Exception Notification
---------------------------
Project MATERIAIS.exe raised exception class EUIBError with message ´violation of FOREIGN KEY constraint "FK_FUNCIONARIO" on table "SEPARACAO"
Foreign key references are present for the record
violation of FOREIGN KEY constraint ""
Error Code: 146´.
---------------------------
Break Continue Help
--------------------------- Então criei um codigo com tratamento de exceções mas ainda da erro o codigo é esse abaixo: procedure TFrmFuncionario.btnDeletarClick(Sender: TObject);
begin
if Application.MessageBox(
'Tem certeza que deseja excluir o registro?',
'Confirmação', MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = mrYes then
begin
DataSource1.DataSet.Delete;
if DataSource1.DataSet is TClientDataSet then
begin
try
if (TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) =0)then
DataSource1.OnStateChange(DataSource1);
except
application.MessageBox('Exclusão não Permitida,Registro Presente na Aplicatção','SEPARACAO',MB_ICONERROR);
end;
end;
end;
end;
end. Notei agora que o erro acontece na lina:if (TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) =0)then
Sera que alguem pode me ajudar o chegar a solução do problema? obrigado....
Gostei + 0
30/05/2011
Wilson Junior
Espero ter colaborado.
Gostei + 0
30/05/2011
Rogerio Sena
Gostei + 0
30/05/2011
Rogerio Sena
Gostei + 0
30/05/2011
Wilson Junior
http://www.mail-archive.com/delphi-br@yahoogrupos.com.br/msg20124.html
http://www.activedelphi.com.br/forum/viewtopic.php?t=58675&sid=19c8e644800f4200d8e17c9ab16d39e6
Espero ter colaborado.
Gostei + 0
31/05/2011
Rogerio Sena
Gostei + 0
31/05/2011
Wilson Junior
if pos(UpperCase('violation of foreign key constraint'), UpperCase(e.Message)) > 0 then
Application.MessageBox( 'Exclusão não Permitida, Registro Presente na Aplicação'#13'Erro:'#13 + e.Message, 'SEPARACAO', MB_ICONERROR )
;
No seu código coloque assim:
if TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) = 0 then
DataSource1.OnStateChange( DataSource1 )
else
ShowMessage('Ocorreu erro ao gravar!')
;
Espero ter colaborado.
Gostei + 0
31/05/2011
Rogerio Sena
Gostei + 0
31/05/2011
Rogerio Sena
Dialogs, DB, ExtCtrls, DBCtrls, StdCtrls, Buttons, Mask,DBClient, TConnect; ai passou o application, mas agora o erro esta no e.Message if pos(UpperCase('violation of foreign key constraint'), UpperCase(e.Message)) > 0 then
application.MessageBox( 'Exclusão não Permitida, Registro Presente na Aplicação'#13'Erro:'#13 + (TRAVOU AQUI-->e.Message), 'SEPARACAO', MB_ICONERROR );
;
Gostei + 0
09/06/2011
Rogerio Sena
erro:
E.Message não , ao clicar em não aparece a terceira mensagem: titulo PSEPARACAO ocorreu um erro ao gravar! ok , ao clicar em ok o form fica vazio mas o registro não é excluido. Se eu rodar em tempo de desing(construção) não executa aparece o erro logo apos + E.Message,(aqui). [Error] UDMClient.pas(91): Incompatible types: 'String' and 'PAnsiChar' [Fatal Error] PSeparacao.dpr(16): Could not compile used unit 'UDMClient.pas' Tenho que declarar o pos como uma variavél? Não estou conseguindo fazer a coisas funcionar legal sera que alguem pode me ajudar? Obrigado amigos....
Gostei + 0
09/06/2011
Wilson Junior
Espero ter colaborado.
Gostei + 0
09/06/2011
Rogerio Sena
Gostei + 0
13/06/2011
Rogerio Sena
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
if pos(UpperCase('violation of foreign key constraint'), UpperCase(e.Message)) > 0 then
application.MessageBox( 'Exclusão não Permitida, Registro Presente na Aplicação'#13'Erro:'#13 + E.Message, 'SEPARACAO', MB_ICONERROR );
; o erro em execução aparece depois da virgula E.Message,<--aqui. outra coisa tenho que declar alguma variável antes do begin? No formulario de funcionario o código para o botão deletar e esse: procedure TFrmFuncionario.btnDeletarClick(Sender: TObject);
begin
if Application.MessageBox(
'Tem certeza que deseja excluir o registro?',
'Confirmação', MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = mrYes then
begin
DataSource1.DataSet.Delete;
if DataSource1.DataSet is TClientDataSet then
if TClientDataSet(DataSource1.DataSet).ApplyUpdates(0) = 0 then
DataSource1.OnStateChange( DataSource1 )
else
ShowMessage('Ocorreu erro ao gravar!')
; To pesquisando em sites e foruns mas até agora nao consegui me desculpe se estou sendo demais com meus post mas quero aprender e não economizo esforços para issso rsrsrs...
Gostei + 0
14/06/2011
Rafael Mattos
procedure TDMClient.cdsFuncionarioReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
if Pos('VIOLATION OF FOREIGN KEY',UpperCase(E.Message))>0 then begin
Action := raCancel;
MessageDlg('Registro não pode ser excluido'+#13+
'Por ter relacionamento Pendente',mtWarning,[mbOK],0);
Exit;
end;
end;
Gostei + 0
14/06/2011
Wilson Junior
Espero ter colaborado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)