Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EderDias

Erro Ao Gerar Relatorio No Quickreport

Recommended Posts

Olá...pessoal...montei um relatorio no delphi....e qdo fui testa-lo com um relatorio mais grande....no meio da geração deu o seguinte erro:

 

erro: edbengineerror 9495 lock file has grown too large

 

 

então procurando na net achei esta dica do RamosDelphi que diz que o problema é com o BDE/netdir.

 

 

 

Questão/Problema:

 

Mensagem de erro no Paradox “LOCK FILE HAS GROWN TOO LARGE”. Confira como corrigir:

 

Resposta:

 

Este erro é específico de tabelas Paradox e pode ser causado em qualquer BDE (16 ou 32 Bits)

 

Para resolver o problema, tenha certeza que sua aplicação está da seguinte forma:

 

Abaixo do diretório onde está o executável, crie três novos diretórios: TABLES, PRIV, e REDE. Coloque todas as tabelas para a aplicação no diretório de TABLES. Altere o diretório privado da sessão para o diretório de PRIV. Faça o seguinte no seu programa em Delphi

 

DELPHI:

Session.PrivateDir :=

ExtractFilePath(ParamStr(0)) + ‘ PRIV’;

 

Altere o diretório de rede da sessão para o diretório Rede. Faça o seguinte:

 

DELPHI:

Session.NetFileDir :=

ExtractFilePath(ParamStr(0)) + ‘ REDE’;

 

Se o LOCAL SHARE for igual a True e você não está compartilhando as tabelas ao mesmo tempo entre aplicações diferentes, mude o LOCAL SHARE para False. Estes passos resolverão o problema.

 

Então crie as duas pastas Priv e Red dentro da pasta do programa

 

então eu coloquei o codido abaixo na inicialização do meu programa

 

 

 

Session.PrivateDir := ExtractFilePath(ParamStr(0)) + 'PRIV';

Session.NetFileDir := ExtractFilePath(ParamStr(0)) + 'REDE';

 

 

Codigo da inicialização: em vermelho

 

{$R *.RES}

 

begin

Application.Initialize;

//AQUI

Session.PrivateDir := ExtractFilePath(ParamStr(0)) + 'PRIV';

Session.NetFileDir := ExtractFilePath(ParamStr(0)) + 'REDE';

Splash:=tsplash.create(application);

Splash.show; // mostra o form na tela...

Splash.refresh; //aqui é opcional , depende do caso... como eu tenho uma barra de progresso , para que ela nao fique oscilando dou este comando

Sleep(1500); // o tempo que o form vai aparecer (esta em milesegundos)...

Application.ShowMainForm:= false; //retira o splash de exibiçao e cria os outros forms na memoria e bota a aplicação para rodar

{daqui para baixo deve aparecer os demais formularios como mostra abaixo}

Application.CreateForm(TFormPrincipal, FormPrincipal);

Application.CreateForm(TFormSenha, FormSenha);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(Tsplash, splash);

Só que qdo compilo o programa da a seguinte mensagem de erro:

DIRECTORY IS CONTROLED BY OTHER *.NET FILE.

 

analisando este erro cheguei a conclusão que o programa ta criando 2(dois arquivos) *.NET , um pelo codigo que eu coloquei na inicilização do programa e outro pelo BDE na configurado o NETDIR....e tbem ta duplicando o nr de *.lck

então resumindo ....ta dando um conflito...

 

Então eu gostaria que alguem me desse uma luz de como resolver este problema.....pela dica que achei na net não mencionava este fato.

 

Muito Grato.... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok..resolvido...tinha um erro interno no programa...tinha no caso algumas table´s attive=true ..ai coloquei false....e apaguei tbem os .net e .lck ai resolveu o problema....... eadicionei na inicialização do programa o codigo:

Session.PrivateDir := ExtractFilePath(ParamStr(0)) + 'PRIV';Session.NetFileDir := ExtractFilePath(ParamStr(0)) + 'REDE';

{$R *.RES}beginApplication.Initialize;//AQUISession.PrivateDir := ExtractFilePath(ParamStr(0)) + 'PRIV';Session.NetFileDir := ExtractFilePath(ParamStr(0)) + 'REDE';Splash:=tsplash.create(application);Splash.show; // mostra o form na tela...Splash.refresh; //aqui é opcional , depende do caso... como eu tenho uma barra de progresso , para que ela nao fique oscilando dou este comandoSleep(1500); // o tempo que o form vai aparecer (esta em milesegundos)...Application.ShowMainForm:= false; //retira o splash de exibiçao e cria os outros forms na memoria e bota a aplicação para rodar{daqui para baixo deve aparecer os demais formularios como mostra abaixo}Application.CreateForm(TFormPrincipal, FormPrincipal);Application.CreateForm(TFormSenha, FormSenha);Application.CreateForm(TForm3, Form3);Application.CreateForm(TForm2, Form2);Application.CreateForm(Tsplash, splash);

t+valeu a todos que tentaram ajudar... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.