Fórum O que pode estar errado, Delphi #481293

04/06/2014

0

procedure tfrm_principal.conectardb();
var destino:string;
begin
destino := extractfilepath(paramstr(0));
if fileexists(destino+'CoCDB.mdb') then
BEGIN
 if datamodule1.conectarDB.Connected = false then
 begin
datamodule1.conectarDB.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+destino+'CoCDB.mdb;Persist Security Info=False';
datamodule1.conectarDB.Connected:=true;
showmessage('Conectado com sucesso!');
 end
 else
 datamodule1.conectarDB.Connected:=false;
 showmessage('Virou Falso conectado.');
 end

ELSE
showmessage('Erro ao conectar!!'+ #10+ 'Porfavor, coloque o Banco de Dados na mesma Pasta do Aplicativo:' +#10+ destino);
application.Terminate;

end;



ERRO QUE ACONTECEU EH ESTE ABAIXO, QUANDO EU EXECUTO O APLICATIVO
Acess Violation at address 0046aBE9 in module 'Projeto.exe' Read...
Alexandre

Alexandre

Responder

Post mais votado

04/06/2014

Olá Alexandre, aparentemente seu código esta correto, só pra descartar todas as possibilidades o DataModule esta sendo criado corretamente ou esta no autocreate?

Cauê Nishijima

Cauê Nishijima
Responder

Gostei + 1

Mais Posts

04/06/2014

Joel Rodrigues

Olá, Alexandre. Você conseguiu identificar em que ponto exatamente está sendo gerado o erro?
Responder

Gostei + 1

04/06/2014

Claudio Ferreira

O erro provável ao ver esse codigo é o datamodule não ter sido criado no autocreate da aplicação e nem criado manualmente.
Responder

Gostei + 1

04/06/2014

Itamar Souza

Fiz um teste:

Acredito que o problema seja a chamada da procedure conectardb(); que se encontra no tfrm_principal.
provável que não esteja criando o DataModule ou chamando a procedure.

procedure TForm1.Button1Click(Sender: TObject);
var
  destino:string;
begin
  destino := extractfilepath(paramstr(0));
  lbLocalEXE.Caption := destino;
  lbLocalBanco.Caption := destino+'CoCDB.mdb';
end;



Responder

Gostei + 1

05/06/2014

Alexandre

Linha do erro:
 if datamodule1.conectarDB.Connected = false then

Vou ir dando uma olhada agora no que pode ser, em cima do que vocês me apresentam.
Responder

Gostei + 0

05/06/2014

Alexandre

Galera, problema resolvido.
Bom, o projeto estava inicialmente iniciando desta maneira:
  Application.Initialize;
  Application.CreateForm(Tfrm_principal, frm_principal);
  Application.CreateForm(TDataModule1, DataModule1);
  Application.Run;


E a procedure estava no evento onCreate, o frm_principal era criado antes do TDataModule, logo ele não reconhecia o DataModule pois DataModule ainda não havia sido criado, pelo menos eu entendi como se fosse isso..
Obrigado a todos!
Responder

Gostei + 0

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

Aceitar