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 ?
---------------------------
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
Curtir tópico
+ 0
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)
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
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)