estackoverflow
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
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
Curtidas 0
Respostas
Gustavo Matos
10/08/2010
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
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
GOSTEI 0
Eriley Barbosa
10/08/2010
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
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
GOSTEI 0
Gustavo Matos
10/08/2010
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
GOSTEI 0
Eriley Barbosa
10/08/2010
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
GOSTEI 0
Gustavo Matos
10/08/2010
Bom Eriley,
meu applyupdates estava no beforepost, porem troquei e esta retornando outra mensagem
RAISED EXCEPTION CLASS E DATABASEERROR WITH MESSAGE 'TABLE UNKNOWNLOGIN'
GOSTEI 0
Eriley Barbosa
10/08/2010
Esta dizendo que a tabela login não existe.
Atenciosamente
Eriley
GOSTEI 0
Gustavo Matos
10/08/2010
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
GOSTEI 0
Gustavo Matos
10/08/2010
Eriley, isto esta meio ilogico
pois em modo de leitura minha tabela é reconhecida
GOSTEI 0
Eriley Barbosa
10/08/2010
Após criar, você deu o COMMIT?
Desative e ative o SQLConnection, desative e ative o ClientDataset.
Atenciosamente
Eriley
GOSTEI 0
Gustavo Matos
10/08/2010
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
GOSTEI 0
Gustavo Matos
10/08/2010
Muito esquisito..........
Devo estar comentendo um erro grande sem perceber
hah
help.............................................
GOSTEI 0
Gustavo Matos
10/08/2010
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.....
GOSTEI 0
Eriley Barbosa
10/08/2010
Na pior das hipoteses, apague os componentes ligados a esta tabela e recrie-os.
Atenciosamente
Eriley
GOSTEI 0
Felipe Caputo
10/08/2010
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
Ou então, como golpe de sorte que funciona as vezes, dê um build all no projeto
GOSTEI 0
Gustavo Matos
10/08/2010
Na pior das hipoteses, apague os componentes ligados a esta tabela e recrie-os.
Atenciosamente
Eriley
putz mesmo erro com outro quarteto de componentes
GOSTEI 0
Gustavo Matos
10/08/2010
Continua nao encontrando minha tabela na hora de inseri no registro
GOSTEI 0
Felipe Caputo
10/08/2010
você verificou se o banco acessado pelo sistema é o mesmo do projeto?
qual sgbd está usando?
qual sgbd está usando?
GOSTEI 0
Eriley Barbosa
10/08/2010
Execute este select e veja se sua tabela está na lista de resultados:
SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE
RDB$SYSTEM_FLAG=0 Se estiver, cole aqui o resultado e o script de criação da tabela de login. Atenciosamente Eriley
RDB$SYSTEM_FLAG=0 Se estiver, cole aqui o resultado e o script de criação da tabela de login. Atenciosamente Eriley
GOSTEI 0
Gustavo Matos
10/08/2010
galera que sempre me ajuda !!!!!!!!!!!!!!!!!!!!!!!!!!
Venho por meio desta!!!!!!!!!!!!!!!!
hahahahha
Agradecer o apoio concedido
a aplicação ja esta salvando
nao me pergutem o pq
acredito que seja o build all no projeto
fiz isso sem saber pra que funciona na integra o build
GOSTEI 0