Como Excluir um registro selecionado no DBGrid
Ola Galera do Fórum!!!
Bom pessoal, estou tendo dificuldades em excluir um registro ao clicar no DBGrid, quando clico na linha do DBGrid para
deletar aquele registro ele ta excluindo apenas o registro que acabei de cadastrar, não exclui qualquer registro que eu selecionar no DBGrid.
a linha de comando do botão se encontra abaixo.
=================FORMULÁRIO DE PRODUTOS========================================================
procedure TFrmEntradaDeProdutos.BtnExcluirClick(Sender: TObject);
begin
if MessageDlg(''Deseja Excluir o registro?'', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
DM.TabEntradas_Produtos.Delete;
//ATUALIZAR O ESTOQUE
//RECUPERAR O ESTOQUE ATUAL
dm.QryTabProdutos.Close;
dm.QryTabProdutos.SQL.Clear;
dm.QryTabProdutos.SQL.Add(''select * from produtos where id = :id'');
dm.QryTabProdutos.ParamByName(''id'').Value := idProdutoEst;
dm.QryTabProdutos.Open;
if not DM.QryTabProdutos.isEmpty then
begin
EstoqueProduto := DM.QryTabProdutos[''estoque''];
end;
Estoque := EstoqueProduto - strToFloat(EdtQuantidade.Text);
DM.QryTabProdutos.Close;
DM.QryTabProdutos.SQL.Clear;
DM.QryTabProdutos.SQL.Add(''UPDATE produtos set estoque = :estoque where id = :id'');
DM.QryTabProdutos.ParamByName(''estoque'').Value := Estoque;
DM.QryTabProdutos.ParamByName(''id'').Value := idProduto;
DM.QryTabProdutos.Execute;
MessageDlg(''Deletado com Sucesso!!'', mtInformation, mbOKCancel, 0);
ListarCampos;
//AÇÕES DOS BOTÕES
BtnNovo.Enabled := true;
BtnExcluir.Enabled := false;
end;
end;
========================== FIM DO COMANDO DO BOTÃO EXCLUIR ==========================
Se eu colocar desta forma:
==============FORMULÁRIO DE FORNECEDORES=========================
procedure TFrmCadFornecedores.BtnExcluirClick(Sender: TObject);
begin
if MessageDlg(''Deseja Excluir o Registro?'', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
MessageDlg(''Deletado com Sucesso!!'', mtInformation, mbOKCancel, 0);
LimparCampos;
DesabilitarCampos;
DM.QryTabFornecedores.Close;
DM.QryTabFornecedores.SQL.Clear;
DM.QryTabFornecedores.SQL.Add(''DELETE from fornecedores where id = :id'');
DM.QryTabFornecedores.ParamByName(''id'').Value := id;
DM.QryTabFornecedores.Execute;
Listarcampos;
//AÇÕES DOS BOTÕES
BtnEditar.Enabled := false;
BtnExcluir.Enabled := false;
BtnSalvar.Enabled := false;
BtnNovo.Enabled := true;
BtnCancelar.Enabled := false;
end;
======================FIM DO COMANDO DO FORMULÁRIO DE FORNECEDORES================================================
Ele exclui o registro que selecionei, porem se eu clicar no botão de NÃO excluir ele exclui o registro mesmo assim.
Já pesquisei na web varias formar de como excluir um registro selecionado no DBGrid, mas não tive exito, Alguém poderia me da uma diga
de como excluir um registro selecionado no DBGrid?
OBS.: NO FORMULÁRIO DE PRODUTOS AO EXCLUIR UM ITEM SELECIONADO NO DBGRID O VALOR TERÁ QUE VOLTAR PRO ESTOQUE.
Bom pessoal, estou tendo dificuldades em excluir um registro ao clicar no DBGrid, quando clico na linha do DBGrid para
deletar aquele registro ele ta excluindo apenas o registro que acabei de cadastrar, não exclui qualquer registro que eu selecionar no DBGrid.
a linha de comando do botão se encontra abaixo.
=================FORMULÁRIO DE PRODUTOS========================================================
procedure TFrmEntradaDeProdutos.BtnExcluirClick(Sender: TObject);
begin
if MessageDlg(''Deseja Excluir o registro?'', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
DM.TabEntradas_Produtos.Delete;
//ATUALIZAR O ESTOQUE
//RECUPERAR O ESTOQUE ATUAL
dm.QryTabProdutos.Close;
dm.QryTabProdutos.SQL.Clear;
dm.QryTabProdutos.SQL.Add(''select * from produtos where id = :id'');
dm.QryTabProdutos.ParamByName(''id'').Value := idProdutoEst;
dm.QryTabProdutos.Open;
if not DM.QryTabProdutos.isEmpty then
begin
EstoqueProduto := DM.QryTabProdutos[''estoque''];
end;
Estoque := EstoqueProduto - strToFloat(EdtQuantidade.Text);
DM.QryTabProdutos.Close;
DM.QryTabProdutos.SQL.Clear;
DM.QryTabProdutos.SQL.Add(''UPDATE produtos set estoque = :estoque where id = :id'');
DM.QryTabProdutos.ParamByName(''estoque'').Value := Estoque;
DM.QryTabProdutos.ParamByName(''id'').Value := idProduto;
DM.QryTabProdutos.Execute;
MessageDlg(''Deletado com Sucesso!!'', mtInformation, mbOKCancel, 0);
ListarCampos;
//AÇÕES DOS BOTÕES
BtnNovo.Enabled := true;
BtnExcluir.Enabled := false;
end;
end;
========================== FIM DO COMANDO DO BOTÃO EXCLUIR ==========================
Se eu colocar desta forma:
==============FORMULÁRIO DE FORNECEDORES=========================
procedure TFrmCadFornecedores.BtnExcluirClick(Sender: TObject);
begin
if MessageDlg(''Deseja Excluir o Registro?'', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
MessageDlg(''Deletado com Sucesso!!'', mtInformation, mbOKCancel, 0);
LimparCampos;
DesabilitarCampos;
DM.QryTabFornecedores.Close;
DM.QryTabFornecedores.SQL.Clear;
DM.QryTabFornecedores.SQL.Add(''DELETE from fornecedores where id = :id'');
DM.QryTabFornecedores.ParamByName(''id'').Value := id;
DM.QryTabFornecedores.Execute;
Listarcampos;
//AÇÕES DOS BOTÕES
BtnEditar.Enabled := false;
BtnExcluir.Enabled := false;
BtnSalvar.Enabled := false;
BtnNovo.Enabled := true;
BtnCancelar.Enabled := false;
end;
======================FIM DO COMANDO DO FORMULÁRIO DE FORNECEDORES================================================
Ele exclui o registro que selecionei, porem se eu clicar no botão de NÃO excluir ele exclui o registro mesmo assim.
Já pesquisei na web varias formar de como excluir um registro selecionado no DBGrid, mas não tive exito, Alguém poderia me da uma diga
de como excluir um registro selecionado no DBGrid?
OBS.: NO FORMULÁRIO DE PRODUTOS AO EXCLUIR UM ITEM SELECIONADO NO DBGRID O VALOR TERÁ QUE VOLTAR PRO ESTOQUE.
José Soares
Curtidas 0
Respostas
Emerson Nascimento
27/10/2019
código do botão de exclusão de entrada de produtos:
código do botão de exclusão de fornecedor (faltava o begin...end):
=================FORMULÁRIO DE PRODUTOS======================================================== procedure TFrmEntradaDeProdutos.BtnExcluirClick(Sender: TObject); var QtdEntrada: float; begin if MessageDlg('Deseja Excluir o registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin idProduto := DM.TabEntradas_Produtos.FieldByName('idProduto').AsFloat; // obtém o produto que está sendo manupilado (aqui você põe o campo correto) QtdEntrada := DM.TabEntradas_Produtos.FieldByName('Quantidade').AsFloat; // obtém a quantidade movimentada (aqui você põe o campo correto) DM.TabEntradas_Produtos.Delete; // Apaga a movimentação de entrada //ATUALIZAR O ESTOQUE // O cálculo deve ser feito diretamente na instrução, a partir da quantidade que você está movimentando. // NUNCA efetue o cálculo pra mandar pra tabela porque podem estar acontecendo movimentações simultâneas, // que podem - e irão - prejudicar o resultado se você fizer o cálculo antecipadamente. DM.QryTabProdutos.Close; // aqui você usa o mesmo objeto que usa pra listar o produto? deveria ser execução DM.QryTabProdutos.SQL.Clear; // direta na conexão do banco de dados, visto que você não precisa de resultset. DM.QryTabProdutos.SQL.Add('UPDATE produtos set estoque = estoque - :qtd where id = :id'); DM.QryTabProdutos.ParamByName('qtd').Value := QtdEntrada; DM.QryTabProdutos.ParamByName('id').Value := idProduto; DM.QryTabProdutos.Execute; MessageDlg('Deletado com Sucesso!!', mtInformation, mbOKCancel, 0); ListarCampos; //AÇÕES DOS BOTÕES BtnNovo.Enabled := true; BtnExcluir.Enabled := false; end; end; ========================== FIM DO COMANDO DO BOTÃO EXCLUIR ==========================
código do botão de exclusão de fornecedor (faltava o begin...end):
==============FORMULÁRIO DE FORNECEDORES========================= procedure TFrmCadFornecedores.BtnExcluirClick(Sender: TObject); begin if MessageDlg('Deseja Excluir o Registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin LimparCampos; DesabilitarCampos; DM.QryTabFornecedores.Close; DM.QryTabFornecedores.SQL.Clear; DM.QryTabFornecedores.SQL.Add('DELETE from fornecedores where id = :id'); DM.QryTabFornecedores.ParamByName('id').Value := id; DM.QryTabFornecedores.Execute; Listarcampos; MessageDlg('Deletado com Sucesso!!', mtInformation, mbOKCancel, 0); //AÇÕES DOS BOTÕES BtnEditar.Enabled := false; BtnExcluir.Enabled := false; BtnSalvar.Enabled := false; BtnNovo.Enabled := true; BtnCancelar.Enabled := false; end; end; ======================FIM DO COMANDO DO FORMULÁRIO DE FORNECEDORES================================================
GOSTEI 0
José Soares
27/10/2019
código do botão de exclusão de entrada de produtos:
código do botão de exclusão de fornecedor (faltava o begin...end):
MUITO OBRIGADO PELA AJUDA AMIGO, DEU TUDO CERTO.
=================FORMULÁRIO DE PRODUTOS======================================================== procedure TFrmEntradaDeProdutos.BtnExcluirClick(Sender: TObject); var QtdEntrada: float; begin if MessageDlg('Deseja Excluir o registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin idProduto := DM.TabEntradas_Produtos.FieldByName('idProduto').AsFloat; // obtém o produto que está sendo manupilado (aqui você põe o campo correto) QtdEntrada := DM.TabEntradas_Produtos.FieldByName('Quantidade').AsFloat; // obtém a quantidade movimentada (aqui você põe o campo correto) DM.TabEntradas_Produtos.Delete; // Apaga a movimentação de entrada //ATUALIZAR O ESTOQUE // O cálculo deve ser feito diretamente na instrução, a partir da quantidade que você está movimentando. // NUNCA efetue o cálculo pra mandar pra tabela porque podem estar acontecendo movimentações simultâneas, // que podem - e irão - prejudicar o resultado se você fizer o cálculo antecipadamente. DM.QryTabProdutos.Close; // aqui você usa o mesmo objeto que usa pra listar o produto? deveria ser execução DM.QryTabProdutos.SQL.Clear; // direta na conexão do banco de dados, visto que você não precisa de resultset. DM.QryTabProdutos.SQL.Add('UPDATE produtos set estoque = estoque - :qtd where id = :id'); DM.QryTabProdutos.ParamByName('qtd').Value := QtdEntrada; DM.QryTabProdutos.ParamByName('id').Value := idProduto; DM.QryTabProdutos.Execute; MessageDlg('Deletado com Sucesso!!', mtInformation, mbOKCancel, 0); ListarCampos; //AÇÕES DOS BOTÕES BtnNovo.Enabled := true; BtnExcluir.Enabled := false; end; end; ========================== FIM DO COMANDO DO BOTÃO EXCLUIR ==========================
código do botão de exclusão de fornecedor (faltava o begin...end):
==============FORMULÁRIO DE FORNECEDORES========================= procedure TFrmCadFornecedores.BtnExcluirClick(Sender: TObject); begin if MessageDlg('Deseja Excluir o Registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin LimparCampos; DesabilitarCampos; DM.QryTabFornecedores.Close; DM.QryTabFornecedores.SQL.Clear; DM.QryTabFornecedores.SQL.Add('DELETE from fornecedores where id = :id'); DM.QryTabFornecedores.ParamByName('id').Value := id; DM.QryTabFornecedores.Execute; Listarcampos; MessageDlg('Deletado com Sucesso!!', mtInformation, mbOKCancel, 0); //AÇÕES DOS BOTÕES BtnEditar.Enabled := false; BtnExcluir.Enabled := false; BtnSalvar.Enabled := false; BtnNovo.Enabled := true; BtnCancelar.Enabled := false; end; end; ======================FIM DO COMANDO DO FORMULÁRIO DE FORNECEDORES================================================
GOSTEI 0