Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Problemas con un TADOConnection en un DataModule (https://www.clubdelphi.com/foros/showthread.php?t=18245)

Holderhek 07-02-2005 03:56:20

Problemas con un TADOConnection en un DataModule
 
Hola

Dentro de un proyecto agregue un DataModule para que todos los Forms tengan acceso al mismo componente TADOConnection.
Entonces, lo que tengo son varios Forms que en la declaracion del "uses" puse el DataModule y dentro del DataModule esta este TADOConnection seteado a la Base de Datos que tengo (Base de Datos en Acces. Esto esta bien ya que antes tenia el TADOConnection en el mismo Form que lo usaba y funcionaba bien. Ahora que lo separe ya no funciona).

Mi problema es el siguiente.

Me aparece el error de "Access Violation" en la primera linea que ocupa el TADOConnection.

Intente creando nuevamente el TADOConnection y seteando el ConnectionString y otras propiedades en el procedure de creacion del DataModule pero no funciono.

Tambien intente crear el TADOConnection en la primera parte donde ocupo el TADOConnection y tampoco funciono.

Bueno, espero algun consejo.
Gracias por su tiempo.
Saludos.

marcoszorrilla 07-02-2005 07:14:46

Pues tiene que funcionar, lo primero tienes que hacer un "Uses", del Datamodulo en donde se hallan estos componentes.

Otro problema puede ser que como antes lo tenías en el propio formulario, arrastrases en su momento algún campo al formulario o conectases la rejilla al componente que tenías en el formulario y como ahora ya no está es posible que por ahí venga el error.

En resumen haz el Uses mencionado y luego todos los componentes que tengas conectados al TADoConection revisa no estén conectados al que tenías en el formulario.

Un Saludo.

Holderhek 08-02-2005 03:24:25

Hola

Gracias por responder pero el problema es otro.

Estuve haciendo unas pruebas y definitivamente yo estoy mal, asi es que me gustaria saber como se hace bien.
Puse un TADOConnection (ADOConnection1) en un DataModule (DataModule1) y lo configure. Luego en un Form (Form1) puse un ADOQuery (ADOQuery1) y le puse como Connection el ADOConnection del DataModule (O sea DataModule1.ADOConnection1) luego probe el programa y funcionaba.

Pero ahora intente hacer lo que yo querya hacer y es acceder al ADOConnection con codigo.
En el FormCreate del Form1 puse una simple sentencia:
DataModule1.ADOConnection1.LoginPrompt:=False;
Segun yo deberia funcionar, y me da error de Access Violation.

¿Por que no se puede hacer lo que quiero hacer? ¿Por que si se puede linkear un ADOConnection pero no me deja acceder a sus propiedades dentro del codigo en otro Unit? ¿Como se deberia realizar estas operaciones?

Bueno, espero se entienda.

Gracias por su tiempo.

Saludos.

marcoszorrilla 08-02-2005 15:34:45

Con esto simpletemente tendría que funcionarte:
Código Delphi [-]
 ADOConnection1.LoginPrompt:=False;

Tienes que ir al menu de archivo e indicarle que vas a utilizar la Unidad que contiene el DataModlulo.

Un Saludo.

unoccio 08-02-2005 18:29:30

El problema que tenés es de memoria, estás accediendo a un objeto que todavía no ha sido creado.
Fijate el código del proyecto, en la creación de los forms y el dataModule, seguramente se crea primero el "Form1" y luego el DataModule, por eso en el onCreate del Form1 querés acceder al DM que todavía no está creado y obtenés este error de memoria.

Seguramente tenés esto:
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDMConnections, DMConnections);

cambialo por algo así:

Application.CreateForm(TDMConnections, DMConnections);
Application.CreateForm(TForm1, Form1);

saludos.

Holderhek 08-02-2005 18:31:34

Hola
Gracias por tus respuestas, pero el problema era algo muy simple.
Fue un simple problema de orden de creacion de Units.
Basto con poner primero el DataModule antes de todos los Forms que ocupaban el DataModule para que ya no pasara.
(Soy nuevito en esto de Delphi, empece a principio de año no mas :-P)
Saludos.


La franja horaria es GMT +2. Ahora son las 19:01:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi