PDA

Ver la Versión Completa : EAccessViotaton al intentar conectar


Tomás
06-04-2004, 14:02:24
Hola a todos:

Tengo una tabla IB conectada con IBX. El código para conectarla funciona bien en el evento OnCreate de cualquier form que no sea el principal, e incluso en un procedure del form principal llamado desde una opción del menú, pero da error si lo pongo en el evento OnCreate del form principal.

El error es: ... raised exception class EAccessViolation with message 'Violación de acceso en la dirección 0052B3E2 en módulo 'PComunidad.exe'. Leer de dirección 00000058.



//en este procedure del form principal da error

procedure TFMenu.FormCreate(Sender: TObject);
begin
//conectar base de datos, transación
DM.IBDB.DatabaseName := ExtractFilePath(ExpandFileName(ParamStr(0))) + 'COMUNIDAD.GDB';
DM.IBDB.Connected := True;
DM.IBT.Active := True;
end;


// en este procedure del mismo form funciona bien

procedure TFMenu.AbrirperodoClick(Sender: TObject);
begin
//conectar base de datos, transación
DM.IBDB.DatabaseName := ExtractFilePath(ExpandFileName(ParamStr(0))) + 'COMUNIDAD.GDB';
DM.IBDB.Connected := True;
DM.IBT.Active := True;
end;


//en el evento OnCreate de cualquier otro form llamado desde este principal funciona bien



¿Qué puede ser?

Un saludo. Tomás.

__cadetill
06-04-2004, 14:35:51
Seguramente que si miras el DPR del proyecto verás que el DataModule DM se crea después del formulario principal. Invierte el orden o haz la conexión en el OnShow del formulario principal

Tomás
06-04-2004, 19:53:31
Hola:

Muchisimas gracias, cadetill.

Efectivamente, tenía primero el form principal y luego el DM, los he invertido y funciona perfectamente.

Un saludo. Tomás.