Fórum estackoverflow #383277

10/08/2010

0

olá Galera que sempre me ajuda!!!!!!!!!!!!!!!!! Estou com um problema de estackoverflow no applyupdates, algumas pessoas falam que codigo com loop.Porem acredito que nao seja !!!!! segue o codigo: unit UfrmCadastraUsuario; interface uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls, ImgList; type
  TFrmCadastroUsuario = class(TForm)
    ImgLstCadastroUsuario: TImageList;
    Panel1: TPanel;
    BtbtnEdita: TBitBtn;
    BtBtnInserir: TBitBtn;
    BtBtnSalva: TBitBtn;
    BtbtnCancel: TBitBtn;
    BtBtnExcluir: TBitBtn;
    DbEdtCodigo: TDBEdit;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    procedure BtBtnInserirClick(Sender: TObject);
    procedure BtbtnEditaClick(Sender: TObject);
    procedure BtBtnSalvaClick(Sender: TObject);
    procedure BtbtnCancelClick(Sender: TObject);
    procedure BtBtnExcluirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end; var
  FrmCadastroUsuario: TFrmCadastroUsuario; implementation uses UDMLogin; {$R *.dfm} procedure TFrmCadastroUsuario.BtBtnInserirClick(Sender: TObject);
begin
  IF NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
  DmLogin.CdtstLogin.Insert;
 
end; procedure TFrmCadastroUsuario.BtbtnEditaClick(Sender: TObject);
begin
  IF NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
  DmLogin.CdtstLogin.Edit;
end; procedure TFrmCadastroUsuario.BtBtnSalvaClick(Sender: TObject);
begin
  IF  NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
  DmLogin.CdtstLogin.Post;
end; procedure TFrmCadastroUsuario.BtbtnCancelClick(Sender: TObject);
begin
  DmLogin.CdtstLogin.Cancel;
end; procedure TFrmCadastroUsuario.BtBtnExcluirClick(Sender: TObject);
begin
  DmLogin.CdtstLogin.Delete;
end; end. Valeu Galera
Gustavo Matos

Gustavo Matos

Responder

Posts

10/08/2010

Gustavo Matos

olá Galera que sempre me ajuda!!!!!!!!!!!!!!!!! Estou com um problema de estackoverflow no applyupdates, algumas pessoas falam que codigo com loop.Porem acredito que nao seja !!!!! segue o codigo: unit UfrmCadastraUsuario; interface uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls, ImgList; type
  TFrmCadastroUsuario = class(TForm)
    ImgLstCadastroUsuario: TImageList;
    Panel1: TPanel;
    BtbtnEdita: TBitBtn;
    BtBtnInserir: TBitBtn;
    BtBtnSalva: TBitBtn;
    BtbtnCancel: TBitBtn;
    BtBtnExcluir: TBitBtn;
    DbEdtCodigo: TDBEdit;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    procedure BtBtnInserirClick(Sender: TObject);
    procedure BtbtnEditaClick(Sender: TObject);
    procedure BtBtnSalvaClick(Sender: TObject);
    procedure BtbtnCancelClick(Sender: TObject);
    procedure BtBtnExcluirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end; var
  FrmCadastroUsuario: TFrmCadastroUsuario; implementation uses UDMLogin; {$R *.dfm} procedure TFrmCadastroUsuario.BtBtnInserirClick(Sender: TObject);
begin
  IF NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
  DmLogin.CdtstLogin.Insert;
 
end; procedure TFrmCadastroUsuario.BtbtnEditaClick(Sender: TObject);
begin
  IF NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
  DmLogin.CdtstLogin.Edit;
end; procedure TFrmCadastroUsuario.BtBtnSalvaClick(Sender: TObject);
begin
  IF  NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
  DmLogin.CdtstLogin.Post;
end; procedure TFrmCadastroUsuario.BtbtnCancelClick(Sender: TObject);
begin
  DmLogin.CdtstLogin.Cancel;
end; procedure TFrmCadastroUsuario.BtBtnExcluirClick(Sender: TObject);
begin
  DmLogin.CdtstLogin.Delete;
end; end. Valeu Galera
Segue a mensagem de erro:   Project Raised exception class estackoverflow with message 'stack overflow' Process stopped.use Step or run to Continue
Responder

Gostei + 0

10/08/2010

Eriley Barbosa

Mova este código para o evento onshow do seu formulário: IF NOT DmLogin.CdtstLogin.Active THEN
    DmLogin.CdtstLogin.OPEN;
Amigo é possível fazer esta tela com teclas de atalho e sem nenhuma linha de código, veja meu artigo:   https://www.devmedia.com.br/post-17655-Criando-um-formulario-padrao-de-cadastro-com-teclas-de-atalho-e-sem-nenhuma-linha-de-codigo.html   Atenciosamente   Eriley
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Olá bom amigo!!!!!!!!!! Tenho uma classe pai de cadastro baseado no imagelist e no actionlist como vc ensina, porem tive alguns problemas e resolvi como primeiro form seguir dessa forma . Porem continuo com o problema de over flow no applyupdates tirei o codigo com vc indico mas esta entrando em loop no applyupdates sera pq esse loop
Responder

Gostei + 0

10/08/2010

Eriley Barbosa

Stack Overflow é um estouro de pilha de memória, tipo tentar gravar um valor maior do que uma variável comporta. Onde você está dando o ApplyUpdates? no código que passou ta dando post e delete. No seu clientDataset no seus eventos AfterPost e AfterDelete, coloque o ApplyUpdates(0);   Atenciosamente   Eriley
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Bom Eriley, meu applyupdates estava no beforepost, porem troquei e esta retornando outra mensagem RAISED EXCEPTION CLASS E DATABASEERROR WITH MESSAGE 'TABLE UNKNOWNLOGIN'
Responder

Gostei + 0

10/08/2010

Eriley Barbosa

Esta dizendo que a tabela login não existe.   Atenciosamente   Eriley
Responder

Gostei + 0

10/08/2010

Gustavo Matos

putz a tabela existi, o que eu fiz foi dar um drop na tabela Login e criei outar tabela com o mesmo nome pq ele nao acha minha  tabela
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Eriley, isto esta meio ilogico pois em modo de leitura minha tabela é reconhecida
Responder

Gostei + 0

10/08/2010

Eriley Barbosa

Após criar, você deu o COMMIT? Desative e ative o SQLConnection, desative e ative o ClientDataset.   Atenciosamente   Eriley
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Após criar, você deu o COMMIT? Desative e ative o SQLConnection, desative e ative o ClientDataset.   Atenciosamente   Eriley
Entao ja tinha me certificado disso!!!!!!!!!!! E nao da erro ao ativar e desativar estes componentes
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Muito esquisito.......... Devo estar comentendo um erro grande sem perceber hah help.............................................
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Muito esquisito.......... Devo estar comentendo um erro grande sem perceber hah help.............................................
segue o erro exato project raised exception class edatabase error with message 'table unknown LOgin' at line 1 , column 8 process stopped.use step or run to continue help.....
Responder

Gostei + 0

10/08/2010

Eriley Barbosa

Na pior das hipoteses, apague os componentes ligados a esta tabela e recrie-os.   Atenciosamente   Eriley
Responder

Gostei + 0

10/08/2010

Felipe Caputo

alguns erros assim contumam acontecer aki na empresa pq compilamos o executavel em outra pasta diferente da pasta do projeto e as vezes esquecemos de verificar o banco que o executavel está acessando por ser diferente do banco de dados do projeto (o q é bem útil para analisarmos o comportamento das atualizações nas maquinas dos clientes.) pode ser que seja o seu  caso.
Ou então, como golpe de sorte que funciona as vezes, dê um build all no projeto
Responder

Gostei + 0

10/08/2010

Gustavo Matos

Na pior das hipoteses, apague os componentes ligados a esta tabela e recrie-os.   Atenciosamente   Eriley
putz mesmo erro com outro quarteto de componentes
Responder

Gostei + 0

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

Aceitar