GARANTIR DESCONTO

Fórum FDQuery_cadastrodeproduto: Cannot perform this operation on a closed dataset. #603045

17/06/2019

0

Estou tentando cadastrar um produto e quando clico no botão cadastrar, aparece essa mensagem:]

---------------------------
Project_telaprincipal
---------------------------
FDQuery_cadastrodeproduto: Cannot perform this operation on a closed dataset.
---------------------------
OK
---------------------------


Segue codigo

unit form_telaprincipal5;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage,
Vcl.ExtCtrls, Data.DB, Vcl.Mask, Vcl.DBCtrls;

type
Tform4_telacadastrodeproduto = class(TForm)
panel1_fundo: TPanel;
label_cadastrodeprodutos: TLabel;
GroupBox2: TGroupBox;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
Panel2_fundo: TPanel;
button_pesquisar: TButton;
button_cadastrar: TButton;
button_salvar: TButton;
button_alterar: TButton;
button_excluir: TButton;
button_sair: TButton;
panel3_fundo: TPanel;
imagem_cadastrodeproduto: TImage;
label_codigodoproduto: TLabel;
label_quantidadeatual: TLabel;
label_descricao: TLabel;
label_ufcliente: TLabel;
Label1: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
procedure button_cadastrarClick(Sender: TObject);
procedure button_excluirClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure button_salvarClick(Sender: TObject);
procedure button_sairClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure button_alterarClick(Sender: TObject);
procedure FormShow(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
form4_telacadastrodeproduto: Tform4_telacadastrodeproduto;

implementation

{$R *.dfm}

uses form_telaprincipal6, datamodule;

procedure Tform4_telacadastrodeproduto.button_alterarClick(Sender: TObject);
begin
Panel3_fundo.Enabled := true;
Dm.FDQuery_cadastrodeproduto.edit;
end;

procedure Tform4_telacadastrodeproduto.button_cadastrarClick(Sender: TObject);
begin
button_cadastrar.Visible := True;
button_alterar.Enabled := False;
button_excluir.Enabled := False;
Panel3_fundo.Enabled := true;
Dm.FDQuery_cadastrodeproduto.append;
Dm.FDQuery_cadastrodeproduto.edit;
end;

procedure Tform4_telacadastrodeproduto.button_excluirClick(Sender: TObject);
begin
if Application.MessageBox(''''Tem certeza que deseja excluir o cadastro?'''',
''''Confirmação'''', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES then
begin
try
Dm.FDQuery_cadastrodeproduto.Delete;
Dm.fdconexao.CommitRetaining;
ShowMessage(''''Cliente excluído com sucesso!'''');
except
on E:exception do
raise Exception.Create(''''Erro ao excluir!'''');
end;
end;
end;

procedure Tform4_telacadastrodeproduto.button_sairClick(Sender: TObject);
begin
Close;
end;

procedure Tform4_telacadastrodeproduto.button_salvarClick(Sender: TObject);
begin
Panel3_fundo.Enabled := false;
try
Dm.FDQuery_cadastrodeproduto.Post;
Dm.fdconexao.CommitRetaining;
ShowMessage(''''Os dados foram Salvos com sucesso!'''');
except
on E:exception do
raise Exception.Create(''''Error ao gravar!'''');
end;
end;

procedure Tform4_telacadastrodeproduto.FormCreate(Sender: TObject);
begin
Panel3_fundo.Enabled := false;
end;

procedure Tform4_telacadastrodeproduto.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=(VK_Escape) then
close;
end;


procedure Tform4_telacadastrodeproduto.FormShow(Sender: TObject);
begin
Dm.FDQuery_cadastrodeproduto.Close;
Dm.FDQuery_cadastrodeproduto.Open;
end;

end.




alguém sabe o que é isso ?
Beatriz Simão

Beatriz Simão

Responder

Post mais votado

17/06/2019

A mensagem está dizendo que o componente TFDQuery que você está usando
não está aberto, tente usar o seguinte:
Dm.FDQuery_cadastrodeproduto.Active := TRUE;
OBS: No seu código tem um APPEND e em seguida tem um EDIT (Retire o EDIT)

Alberto

Alberto
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar