Fórum Erro ao Gravar #407101
25/08/2011
0
E para na linha INHERITED.
NÃO SEI O QUE ACONTECE!!!!!!!!
procedure TFrmCadUsuarios.btnSalvarClick(Sender: TObject);
var
i : Integer;
begin
if dsCadastro.State in [dsInsert] then
codUsuario := retornaCodUsuario
else
codUsuario := dsCadastro.DataSet.FieldByName('USU_CODIGO').AsInteger;
inherited;
with DMPrincipal.datasetAux do
begin
Close;
CommandText := 'DELETE FROM GRUPOS_USUARIOS WHERE USU_CODIGO = ' + IntToStr(codUsuario);
ExecSQL(True);
for i := 0 to Pred(clbGrupos.Items.Count) do
begin
if clbGrupos.Checked[i] then
begin
Close;
CommandText := 'INSERT INTO GRUPOS_USUARIOS (GRU_CODIGO, USU_CODIGO) VALUES (' +
TString(clbGrupos.Items.Objects[i]).Texto + ', ' +
IntToStr(codUsuario) + ')';
ExecSQL(True);
end;
end;
for i := 0 to Pred(clbGrupos.Items.Count) do
clbGrupos.Checked[i] := False;
end;
end;
Frederico Brigatte***
Curtir tópico
+ 0Posts
31/08/2011
Geversom Sousa
abraço
Gostei + 0
31/08/2011
Geversom Sousa
a presença do inherited, indica que esse form herda de outro, por isso tem que dar uma olhada no código que está implementado no btnSalvar do formulário pai. Esse código é chamado pelo inherited.
abraço
Gostei + 0
01/09/2011
Frederico Brigatte***
a presença do inherited, indica que esse form herda de outro, por isso tem que dar uma olhada no código que está implementado no btnSalvar do formulário pai. Esse código é chamado pelo inherited.
abraço
O código é esse:
unit untFrmCadastroBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBClient, DBCtrls, CheckLst,
ComCtrls;
type
TFrmCadastroBase = class(TForm)
Panel1: TPanel;
btnNovo: TBitBtn;
btnSalvar: TBitBtn;
btnApagar: TBitBtn;
btnCancelar: TBitBtn;
btnFechar: TBitBtn;
btnPesquisar: TBitBtn;
dsCadastro: TDataSource;
btnAlterar: TBitBtn;
sbInfo: TStatusBar;
procedure btnFecharClick(Sender: TObject);
procedure btnNovoClick(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
procedure btnApagarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure dsCadastroStateChange(Sender: TObject);
procedure btnAlterarClick(Sender: TObject);
private
procedure HabilitaCampos(const tof: Boolean);
{ Private declarations }
protected
novo, alterar, apagar : String;
public
{ Public declarations }
end;
var
FrmCadastroBase: TFrmCadastroBase;
implementation
{$R *.dfm}
procedure TFrmCadastroBase.btnFecharClick(Sender: TObject);
begin
Close;
end;
procedure TFrmCadastroBase.btnNovoClick(Sender: TObject);
begin
dsCadastro.DataSet.Append;
end;
procedure TFrmCadastroBase.btnSalvarClick(Sender: TObject);
begin
dsCadastro.DataSet.Post;
(dsCadastro.DataSet as TClientDataSet).ApplyUpdates(0);
dsCadastro.DataSet.Refresh;
end;
procedure TFrmCadastroBase.btnCancelarClick(Sender: TObject);
begin
dsCadastro.DataSet.Cancel;
(dsCadastro.DataSet as TClientDataSet).CancelUpdates;
end;
procedure TFrmCadastroBase.btnApagarClick(Sender: TObject);
begin
if MessageDlg('Confirma exclusão do registro selecionado?', mtWarning, [mbYes, mbNo], 0) = mrYes then
begin
try
dsCadastro.DataSet.Delete;
(dsCadastro.DataSet as TClientDataSet).ApplyUpdates(0);
except
on E : Exception do
MessageDlg('Erro ao tentar apagar o registro!' + #13 + E.Message, mtError, [mbOk], 0);
end;
end;
end;
procedure TFrmCadastroBase.FormCreate(Sender: TObject);
begin
if Assigned(dsCadastro.DataSet) then
dsCadastro.DataSet.Open;
end;
procedure TFrmCadastroBase.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dsCadastro.DataSet.Close;
end;
procedure TFrmCadastroBase.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if btnSalvar.Enabled then
begin
CanClose := False;
MessageDlg('Você deve salvar ou cancelar o registro corrente antes de fechar a janela!', mtInformation, [mbOk], 0);
end;
end;
procedure TFrmCadastroBase.HabilitaCampos(const tof : Boolean);
var
i : Integer;
begin
for i := 0 to Pred(ComponentCount) do
if (Components[i] is TDBEdit) then
begin
(Components[i] as TDBEdit).Enabled := tof;
if (Components[i] as TDBEdit).Enabled then
(Components[i] as TDBEdit).Color := clWindow
else
(Components[i] as TDBEdit).Color := clBtnFace;
end
else
if (Components[i] is TDBRadioGroup) then
(Components[i] as TDBRadioGroup).Enabled := tof
else
if (Components[i] is TCheckBox) then
(Components[i] as TCheckBox).Enabled := tof
else
if (Components[i] is TDBCheckBox) then
(Components[i] as TDBCheckBox).Enabled := tof;
end;
procedure TFrmCadastroBase.dsCadastroStateChange(Sender: TObject);
begin
btnNovo.Enabled := ((Sender as TDataSource).State in [dsBrowse]) and (novo = 'S');
btnSalvar.Enabled := (Sender as TDataSource).State in [dsEdit, dsInsert];
btnCancelar.Enabled := btnSalvar.Enabled;
btnAlterar.Enabled := (btnNovo.Enabled) and not ((Sender as TDataSource).DataSet.IsEmpty) and (alterar = 'S');
btnApagar.Enabled := (btnAlterar.Enabled) and (apagar = 'S');
btnPesquisar.Enabled := btnNovo.Enabled;
btnFechar.Enabled := btnNovo.Enabled;
HabilitaCampos((Sender as TDataSource).State in [dsEdit, dsInsert]);
end;
procedure TFrmCadastroBase.btnAlterarClick(Sender: TObject);
begin
dsCadastro.DataSet.Edit;
end;
end.
Obrigado pela resposta..
Gostei + 0
01/09/2011
Frederico Brigatte***
a presença do inherited, indica que esse form herda de outro, por isso tem que dar uma olhada no código que está implementado no btnSalvar do formulário pai. Esse código é chamado pelo inherited.
abraço
O código é esse:
unit untFrmCadastroBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBClient, DBCtrls, CheckLst,
ComCtrls;
type
TFrmCadastroBase = class(TForm)
Panel1: TPanel;
btnNovo: TBitBtn;
btnSalvar: TBitBtn;
btnApagar: TBitBtn;
btnCancelar: TBitBtn;
btnFechar: TBitBtn;
btnPesquisar: TBitBtn;
dsCadastro: TDataSource;
btnAlterar: TBitBtn;
sbInfo: TStatusBar;
procedure btnFecharClick(Sender: TObject);
procedure btnNovoClick(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
procedure btnApagarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure dsCadastroStateChange(Sender: TObject);
procedure btnAlterarClick(Sender: TObject);
private
procedure HabilitaCampos(const tof: Boolean);
{ Private declarations }
protected
novo, alterar, apagar : String;
public
{ Public declarations }
end;
var
FrmCadastroBase: TFrmCadastroBase;
implementation
{$R *.dfm}
procedure TFrmCadastroBase.btnFecharClick(Sender: TObject);
begin
Close;
end;
procedure TFrmCadastroBase.btnNovoClick(Sender: TObject);
begin
dsCadastro.DataSet.Append;
end;
procedure TFrmCadastroBase.btnSalvarClick(Sender: TObject);
begin
dsCadastro.DataSet.Post;
(dsCadastro.DataSet as TClientDataSet).ApplyUpdates(0);
dsCadastro.DataSet.Refresh;
end;
procedure TFrmCadastroBase.btnCancelarClick(Sender: TObject);
begin
dsCadastro.DataSet.Cancel;
(dsCadastro.DataSet as TClientDataSet).CancelUpdates;
end;
procedure TFrmCadastroBase.btnApagarClick(Sender: TObject);
begin
if MessageDlg('Confirma exclusão do registro selecionado?', mtWarning, [mbYes, mbNo], 0) = mrYes then
begin
try
dsCadastro.DataSet.Delete;
(dsCadastro.DataSet as TClientDataSet).ApplyUpdates(0);
except
on E : Exception do
MessageDlg('Erro ao tentar apagar o registro!' + #13 + E.Message, mtError, [mbOk], 0);
end;
end;
end;
procedure TFrmCadastroBase.FormCreate(Sender: TObject);
begin
if Assigned(dsCadastro.DataSet) then
dsCadastro.DataSet.Open;
end;
procedure TFrmCadastroBase.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dsCadastro.DataSet.Close;
end;
procedure TFrmCadastroBase.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if btnSalvar.Enabled then
begin
CanClose := False;
MessageDlg('Você deve salvar ou cancelar o registro corrente antes de fechar a janela!', mtInformation, [mbOk], 0);
end;
end;
procedure TFrmCadastroBase.HabilitaCampos(const tof : Boolean);
var
i : Integer;
begin
for i := 0 to Pred(ComponentCount) do
if (Components[i] is TDBEdit) then
begin
(Components[i] as TDBEdit).Enabled := tof;
if (Components[i] as TDBEdit).Enabled then
(Components[i] as TDBEdit).Color := clWindow
else
(Components[i] as TDBEdit).Color := clBtnFace;
end
else
if (Components[i] is TDBRadioGroup) then
(Components[i] as TDBRadioGroup).Enabled := tof
else
if (Components[i] is TCheckBox) then
(Components[i] as TCheckBox).Enabled := tof
else
if (Components[i] is TDBCheckBox) then
(Components[i] as TDBCheckBox).Enabled := tof;
end;
procedure TFrmCadastroBase.dsCadastroStateChange(Sender: TObject);
begin
btnNovo.Enabled := ((Sender as TDataSource).State in [dsBrowse]) and (novo = 'S');
btnSalvar.Enabled := (Sender as TDataSource).State in [dsEdit, dsInsert];
btnCancelar.Enabled := btnSalvar.Enabled;
btnAlterar.Enabled := (btnNovo.Enabled) and not ((Sender as TDataSource).DataSet.IsEmpty) and (alterar = 'S');
btnApagar.Enabled := (btnAlterar.Enabled) and (apagar = 'S');
btnPesquisar.Enabled := btnNovo.Enabled;
btnFechar.Enabled := btnNovo.Enabled;
HabilitaCampos((Sender as TDataSource).State in [dsEdit, dsInsert]);
end;
procedure TFrmCadastroBase.btnAlterarClick(Sender: TObject);
begin
dsCadastro.DataSet.Edit;
end;
end.
Obrigado pela resposta..
Mandei para seu email também.
Gostei + 0
08/09/2011
Frederico Brigatte***
a presença do inherited, indica que esse form herda de outro, por isso tem que dar uma olhada no código que está implementado no btnSalvar do formulário pai. Esse código é chamado pelo inherited.
abraço
O código é esse:
unit untFrmCadastroBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBClient, DBCtrls, CheckLst,
ComCtrls;
type
TFrmCadastroBase = class(TForm)
Panel1: TPanel;
btnNovo: TBitBtn;
btnSalvar: TBitBtn;
btnApagar: TBitBtn;
btnCancelar: TBitBtn;
btnFechar: TBitBtn;
btnPesquisar: TBitBtn;
dsCadastro: TDataSource;
btnAlterar: TBitBtn;
sbInfo: TStatusBar;
procedure btnFecharClick(Sender: TObject);
procedure btnNovoClick(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
procedure btnApagarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure dsCadastroStateChange(Sender: TObject);
procedure btnAlterarClick(Sender: TObject);
private
procedure HabilitaCampos(const tof: Boolean);
{ Private declarations }
protected
novo, alterar, apagar : String;
public
{ Public declarations }
end;
var
FrmCadastroBase: TFrmCadastroBase;
implementation
{$R *.dfm}
procedure TFrmCadastroBase.btnFecharClick(Sender: TObject);
begin
Close;
end;
procedure TFrmCadastroBase.btnNovoClick(Sender: TObject);
begin
dsCadastro.DataSet.Append;
end;
procedure TFrmCadastroBase.btnSalvarClick(Sender: TObject);
begin
dsCadastro.DataSet.Post;
(dsCadastro.DataSet as TClientDataSet).ApplyUpdates(0);
dsCadastro.DataSet.Refresh;
end;
procedure TFrmCadastroBase.btnCancelarClick(Sender: TObject);
begin
dsCadastro.DataSet.Cancel;
(dsCadastro.DataSet as TClientDataSet).CancelUpdates;
end;
procedure TFrmCadastroBase.btnApagarClick(Sender: TObject);
begin
if MessageDlg('Confirma exclusão do registro selecionado?', mtWarning, [mbYes, mbNo], 0) = mrYes then
begin
try
dsCadastro.DataSet.Delete;
(dsCadastro.DataSet as TClientDataSet).ApplyUpdates(0);
except
on E : Exception do
MessageDlg('Erro ao tentar apagar o registro!' + #13 + E.Message, mtError, [mbOk], 0);
end;
end;
end;
procedure TFrmCadastroBase.FormCreate(Sender: TObject);
begin
if Assigned(dsCadastro.DataSet) then
dsCadastro.DataSet.Open;
end;
procedure TFrmCadastroBase.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dsCadastro.DataSet.Close;
end;
procedure TFrmCadastroBase.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if btnSalvar.Enabled then
begin
CanClose := False;
MessageDlg('Você deve salvar ou cancelar o registro corrente antes de fechar a janela!', mtInformation, [mbOk], 0);
end;
end;
procedure TFrmCadastroBase.HabilitaCampos(const tof : Boolean);
var
i : Integer;
begin
for i := 0 to Pred(ComponentCount) do
if (Components[i] is TDBEdit) then
begin
(Components[i] as TDBEdit).Enabled := tof;
if (Components[i] as TDBEdit).Enabled then
(Components[i] as TDBEdit).Color := clWindow
else
(Components[i] as TDBEdit).Color := clBtnFace;
end
else
if (Components[i] is TDBRadioGroup) then
(Components[i] as TDBRadioGroup).Enabled := tof
else
if (Components[i] is TCheckBox) then
(Components[i] as TCheckBox).Enabled := tof
else
if (Components[i] is TDBCheckBox) then
(Components[i] as TDBCheckBox).Enabled := tof;
end;
procedure TFrmCadastroBase.dsCadastroStateChange(Sender: TObject);
begin
btnNovo.Enabled := ((Sender as TDataSource).State in [dsBrowse]) and (novo = 'S');
btnSalvar.Enabled := (Sender as TDataSource).State in [dsEdit, dsInsert];
btnCancelar.Enabled := btnSalvar.Enabled;
btnAlterar.Enabled := (btnNovo.Enabled) and not ((Sender as TDataSource).DataSet.IsEmpty) and (alterar = 'S');
btnApagar.Enabled := (btnAlterar.Enabled) and (apagar = 'S');
btnPesquisar.Enabled := btnNovo.Enabled;
btnFechar.Enabled := btnNovo.Enabled;
HabilitaCampos((Sender as TDataSource).State in [dsEdit, dsInsert]);
end;
procedure TFrmCadastroBase.btnAlterarClick(Sender: TObject);
begin
dsCadastro.DataSet.Edit;
end;
end.
Obrigado pela resposta..
Mandei para seu email também.
Ninguém? Não sei mais o que fazer....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)