DevMedia

Fórum DevMedia

Navegação: Fórum HOME - Sala: Delphi (Win32, Mac, iOS, DataSnap, FireMonkey, FireDac, dbExpress etc)

Tópico: Relação de tabelas na exclusao de itens

Novo Tópico 
Autor
Mensagem

Relação de tabelas na exclusao de itens

Daniel
Sem Foto

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
Ícone Post  Postado em:
 
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;

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
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;
  Atenciosamente   Eriley

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
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;   Atenciosamente   Eriley

Relação de tabelas na exclusao de itens

Daniel
Sem Foto

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
Ícone Post  Postado em:
 

Citação:
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;   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)

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
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

Relação de tabelas na exclusao de itens

Daniel
Sem Foto

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
Ícone Post  Postado em:
 

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.   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 

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
No uses do seu DataModule declare a Unit Dialogs, como abaixo:   uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;   Atenciosamente   Eriley

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
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);     Abort; 
end;   Atenciosamente   Eriley

Relação de tabelas na exclusao de itens

Daniel
Sem Foto

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
Ícone Post  Postado em:
 

Citação:
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);     Abort; 
end;   Atenciosamente   Eriley

Relação de tabelas na exclusao de itens

Daniel
Sem Foto

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
Ícone Post  Postado em:
 

Citação:
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);     Abort; 
end;   Atenciosamente   Eriley
    Eriley quando executo o programa ele continua excluindo os dados mesmo interligao com outras tabelas

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
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);     Abort; 
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

Relação de tabelas na exclusao de itens

Daniel
Sem Foto

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
Ícone Post  Postado em:
 

Citação:
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);     Abort; 
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;
  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

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 

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);     Abort; 
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.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   else
    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

Relação de tabelas na exclusao de itens

ERILEY VILAGRANDE BARBOSA
ERILEY VILAGRANDE BARBOSADevMaster

País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
Ícone Post  Postado em:
 
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;