Autor
Mensagem
Gostaria de saber como fazer para relacionar minhas tabelas (interbase 2009), gostaria que na hora dele excluir
ele fizesse uma pesquisa para ver se ele esta linkado em algum lugar e dar um aviso. Tipo no cadastro de produto eu uso a tabela fornecedores, caso excluisse algum fornecedor e ele estivesse linkado com a tabela produto ele mostrasse a mensagem de dado relacionado com outra tabela. O codigo usado no botao exclusao é este:
#Código
if not DataModule_dados.TblProdutos.isEmpty
then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk
then
DataModule_dados.TblProdutos.Delete;
EditPesquisa.Clear;
EditPesquisa.SetFocus;
end
else
showmessage('não ha registros');
end;
then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk
then
DataModule_dados.TblProdutos.Delete;
EditPesquisa.Clear;
EditPesquisa.SetFocus;
end
else
showmessage('não ha registros');
end;
No Before Delete da tabela de fornecedores, coloque o seguinte código:
#Código
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, mbOk,0) ;
Abort;
end;
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, mbOk,0) ;
Abort;
end;
Atenciosamente
Eriley
Ficou meio desformatado:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, mbOk,0) ;
Abort;
end;
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, mbOk,0) ;
Abort;
end;
Atenciosamente
Eriley
Citação:
Ficou meio desformatado:
Ficou meio desformatado:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, mbOk,0) ;
Abort;
end;
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, mbOk,0) ;
Abort;
end;
Atenciosamente
Eriley
Eriley nao consegui juntar estes codigos com os meus (sou iniciante ainda), tem como vc me mostrar onde eu começo eles. (Before delete - nao entendi)
Selecione no seu DataModule o componente Table TblFornecedores ou o nome que você deu para ele, após seleciona-lo, vá no object inspector, na aba events e deum duplo-clique ao lado do evento Before Delete e coloque o código que te dei adaptando para o nome dos seus componentes e nome de campo.
Atenciosamente
Eriley
Citação:
Selecione no seu DataModule o componente Table TblFornecedores ou o nome que você deu para ele, após seleciona-lo, vá no object inspector, na aba events e deum duplo-clique ao lado do evento Before Delete e coloque o código que te dei adaptando para o nome dos seus componentes e nome de campo.
Selecione no seu DataModule o componente Table TblFornecedores ou o nome que você deu para ele, após seleciona-lo, vá no object inspector, na aba events e deum duplo-clique ao lado do evento Before Delete e coloque o código que te dei adaptando para o nome dos seus componentes e nome de campo.
Atenciosamente
Eriley
Consegui achar porem ao digitar messagedlg ela aparece sublinhada de vermelho e ao executar ele da os seguintes erros
E2003: Undeclared identifier: 'Messagedlg'
E2003: Undeclared identifier: 'mtinformation'
E2003: Undeclared identifier: 'mbOK'
E estou usando uma TSimpleDataSet ao inves da Table
Obrigado por enquanto
Também faltou os colchetes no mbok:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end;
end;
Atenciosamente
Eriley
Citação:
Também faltou os colchetes no mbok:
Também faltou os colchetes no mbok:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end;
end;
Atenciosamente
Eriley
Citação:
Também faltou os colchetes no mbok:
Também faltou os colchetes no mbok:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end;
end;
Atenciosamente
Eriley
Eriley quando executo o programa ele continua excluindo os dados mesmo interligao com outras tabelas
Era para funcionar, mova o código abaixo para o onClick do botão excluir fornecedor:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end;
end;
Se não funcionar, poste o seu código do evento onclik do botão excluir fornecedor e a estrutura da tabela fornecedores e produtos.
Atenciosamente
Eriley
Citação:
Era para funcionar, mova o código abaixo para o onClick do botão excluir fornecedor:
Era para funcionar, mova o código abaixo para o onClick do botão excluir fornecedor:
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end;
end;
Se não funcionar, poste o seu código do evento onclik do botão excluir fornecedor e a estrutura da tabela fornecedores e produtos.
Atenciosamente
Eriley
Eriley eu mudei o campo de pesquisa (tinha colocado errado), mas mesmo assim ela da erro, agora ele avisa que o dado nao pode ser excluido mesmo se ele nao estiver interligado em outra tabela ele ainda da o aviso que nao pode ser excluido tanto no before delete como no onclick. O codigo do onclick é este:
#Código
procedure TForm_Exclusao_Fornecedor.BotaoExcluirClick(Sender: TObject);
begin
if not DataModule_dados.Tblfornecedor.isEmpty
then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk
then DataModule_dados.TblFornecedor.Delete;//Confirmação da exclusão do registro
EditPesquisa.Clear;//Apagar dados da edit de pesquisa
EditPesquisa.SetFocus;//Selecionar edit de pesquisa
end
else
ShowMessage('Não existem mais dados a serem excluídos!');
end;
begin
if not DataModule_dados.Tblfornecedor.isEmpty
then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk
then DataModule_dados.TblFornecedor.Delete;//Confirmação da exclusão do registro
EditPesquisa.Clear;//Apagar dados da edit de pesquisa
EditPesquisa.SetFocus;//Selecionar edit de pesquisa
end
else
ShowMessage('Não existem mais dados a serem excluídos!');
end;
Obs: esta linha de codigo peguei da tabela fornecedor.
e a estrutura da tabela fornecedor e
TABELA FORNECEDOR
CODIGOFORNECEDOR - LONG - NOT NULL
FORNECEDOR - VARCHAR - NOT NULL
ENDERECO - VARCHAR
CIDADE - CHAR
ESTADO - CHAR
TELEFONEEMPRESA - CHAR - NOT NULL
REPRESENTANTE - VARCHAR
TELEFONEREPRESENTANTE - CHAR
OBSERVACAO - VARCHAR
TABELA PRODUTOS
CODIGOPRODUTO - LONG - NOT NULL
FORNECEDOR - VARCHAR - NOT NULL
PRODUTO - VARCHAR - NOT NULL
UNIDADE - CHAR
VALORUNITARIO - FLOAT
OBSERVACAO - VARCHAR
Apague o código do Before Delete e salve seu projeto.
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('CampoCodFornecedor', DataModule_dados.TblFornecedores.FieldByName('CampoCodFornecedor'). Value, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, poi, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end;
end;
procedure TForm_Exclusao_Fornecedor.BotaoExcluirClick(Sender: TObject);
begin
if not DataModule_dados.Tblfornecedor.isEmpty then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk then
begin
if not DataModule_dados.Tblfornecedor.isEmpty then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk then
begin
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('FORNECEDOR', DataModule_dados.TblFornecedores.FieldByName('CODIGOFORNECEDOR'). AsString, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, pois, possuí produtos associados a ele', mtInformation, [mbOK], 0);
begin
MessageDlg ('Este fornecedor não pode ser excluído, pois, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end
else
begin
DataModule_dados.TblFornecedor.Delete;//Confirmação da exclusão do registro
EditPesquisa.Clear;//Apagar dados da edit de pesquisa
EditPesquisa.SetFocus;//Selecionar edit de pesquisa
end;
end
EditPesquisa.Clear;//Apagar dados da edit de pesquisa
EditPesquisa.SetFocus;//Selecionar edit de pesquisa
end;
end
else
ShowMessage('Não existem mais dados a serem excluídos!');
end;
ShowMessage('Não existem mais dados a serem excluídos!');
end;
Para fazer a verificação com query, preciso saber se está utilizando dbexpress, IBX,Bde ou outro tipo de componente.
Mas tente com este código.
Atenciosamente
Eriley
A identação ficou errada, o correto é:
procedure TForm_Exclusao_Fornecedor.BotaoExcluirClick(Sender: TObject);
begin
if not DataModule_dados.Tblfornecedor.isEmpty then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk then
begin
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('FORNECEDOR', DataModule_dados.TblFornecedores.FieldByName('CODIGOFORNECEDOR'). AsString, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, pois, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end
else
begin
DataModule_dados.TblFornecedor.Delete;//Confirmação da exclusão do registro
EditPesquisa.Clear;//Apagar dados da edit de pesquisa
EditPesquisa.SetFocus;//Selecionar edit de pesquisa
end;
end;
end
else
ShowMessage('Não existem mais dados a serem excluídos!');
end;
begin
if not DataModule_dados.Tblfornecedor.isEmpty then
begin
if messageDlg ('Confirma exclusão do registro?', mtConfirmation, mbOkCancel,0) = mrOk then
begin
if not DataModule_dados.TblProdutos.Active then
DataModule_dados.TblProdutos.Open;
if DataModule_dados.TblProdutos.Locate('FORNECEDOR', DataModule_dados.TblFornecedores.FieldByName('CODIGOFORNECEDOR'). AsString, []) then
begin
MessageDlg ('Este fornecedor não pode ser excluído, pois, possuí produtos associados a ele', mtInformation, [mbOK], 0);
Abort;
end
else
begin
DataModule_dados.TblFornecedor.Delete;//Confirmação da exclusão do registro
EditPesquisa.Clear;//Apagar dados da edit de pesquisa
EditPesquisa.SetFocus;//Selecionar edit de pesquisa
end;
end;
end
else
ShowMessage('Não existem mais dados a serem excluídos!');
end;






