DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Daniel
 

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
 Postado em: 2/8/2010 9:36:41 AM

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;
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/8/2010 10:10:14 AM
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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/8/2010 10:12:46 AM
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

 
Daniel
 

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
 Postado em: 2/8/2010 12:22:48 PM

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)

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/8/2010 1:40:23 PM
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

 
Daniel
 

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
 Postado em: 2/8/2010 2:47:11 PM

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 

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/8/2010 2:58:01 PM
No uses do seu DataModule declare a Unit Dialogs, como abaixo:
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
 
Atenciosamente
 
Eriley

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/8/2010 3:06:41 PM
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

 
Daniel
 

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
 Postado em: 2/8/2010 6:59:56 PM

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

 
Daniel
 

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
 Postado em: 2/8/2010 7:02:14 PM

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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 3/8/2010 10:07:15 AM
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

 
Daniel
 

País: Brasil
Estado: SP
Cidade: Franca
Mensagens: 128
 Postado em: 3/8/2010 10:29:33 AM

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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 3/8/2010 10:56:30 AM

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

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 3/8/2010 11:02:32 AM
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;

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03