Erro ao Gravar

Delphi

25/08/2011



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***

Frederico Brigatte***

Curtidas 0

Respostas

Geversom Sousa

Geversom Sousa

25/08/2011

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
Geversom Sousa

Geversom Sousa

25/08/2011


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
Frederico Brigatte***

Frederico Brigatte***

25/08/2011


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
Frederico Brigatte***

Frederico Brigatte***

25/08/2011


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
Frederico Brigatte***

Frederico Brigatte***

25/08/2011


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
POSTAR