![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Desconectar TadoConnection por defecto
Os cuento, tengo un datamodule con un adoConnection y una ConnectionString de pruebas asignada.
El caso es que cuando cargo la aplicacion asigno una nueva ConnectionString y hago un Connected del adoConnection. Vale, pues a veces antes de compilar algunas veces me olvido de hacer un connected = false dentro del designer y cuando llego a casa del cliente, nada mas ejecutar la aplicacion da un error de que no encuentra la base de datos, porque la propiedad connected = true ha quedado grabada con la connectionstring de pruebas. No pasa nada porque luego conecto con la buena, pero que muy feo que nada mas arrancar ya de un mensaje de error, hay alguna forma automatica de hacer que el connected siempre este a false al compilar o antes de arrancar la aplicacion, lo he puesto en el datamodulecreate pero los valores los carga antes. gracias a todos |
#2
|
||||
|
||||
En ejecución deberías poder capturar ese error sin problemas, si redefines el método Create del formulario.
No lo he probado, pero debería funcionar.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Cita:
Lo que sí podría intentarse es capturar la excepción. Algo así como: Lo ideal aquí sería usar una clase de excepción del ADO Connection para discriminar. |
#4
|
||||
|
||||
Cita:
Si redefines el Create de la Clase (TForm), En el "redefinido" podrás capturar la excepción que se levante desde el de la clase TForm. Realmente Se hace el Create y luego el Loaded (que carga los valores desde el DFM). Si el inherited en la clase redefinida (tal y como has puesto tú) está dentro del try..except, podrás capturar la excepción sin problemas. Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Hace tiempo, años, hablamos sobre esto y diversos componentes de conexión a BD que controlaban ese problema. A ver si lo encuentro...
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
||||
|
||||
Pero no es lo mas logico que en tiempo de diseño la propiedad Connected este siempre a False, y luego se conecte en el momento mas apropiado (= un evento)?
En mi caso particular el connection string lo defino tambien en tiempo de ejecucion, en el evento OnBeforeConnect del Connection. Luego en el OnCreate del DataModule realizo el Conneciton.Open |
#7
|
||||
|
||||
AgustinOrtu,
Cita:
![]() Nelson. |
#8
|
||||
|
||||
Hola josepicd
Cita:
¿ En que momento los carga ?, ¿ podrías explicar mas detalladamente ese punto ? Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
||||
|
||||
Cita:
Es lógico que la conexión esté abierta en diseño, pues algunas operaciones con tablas/querys y grids, requieren que esté así, por ejemplo cuando ase añaden campos. Si al generar el EXE no recueradas desactivarla, la conexión queda abierta.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
||||
|
||||
Cita:
Sino la otra posibilidad que se me ocurre es tener otro archivo .dfm de DataModule en cuestion, y utilizar directivas de compilacion para indicar que cuando compile en release utilice el .dfm sin la conexion Otra forma pero que requiere mas "trabajo" es usar git o algun control de versiones. Siendo mas o menos cuidadoso estos deslices los encontras facilmente al momento de realizar los commit Última edición por AgustinOrtu fecha: 12-06-2015 a las 05:13:09. |
#11
|
||||
|
||||
Hola.
La verdad, es que la situación sigue sin quedarme clara... Cita:
Cita:
Claro está, que si el TDataModule esta en auto-create forms, tendrá que tener mayor precedencia que el módulo que intenta referenciarlo. Y, si se crea en tiempo de ejecución, la llamada a la creación también deberá ser previa al uso del mismo. Por favor corríjanme si estoy malentendiendo el problema. Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
||||
|
||||
Daniel creo que lo que pasa es algo del estilo, en tiempo de diseño tengo la connection string seteada a que apunte a mi sql server/archivo access/etc. Seguro la seteo con el asistente de "build conneciton string"
Entonces si dejas el connected a true, tenes en el .dfm algo asi
Al cargar las propiedades persistentes, en la pc de el no hay problema. Pero en otra pc anda a saber donde esta "pepe.mdb" Me parece que va por ese lado la cosa |
#13
|
|||
|
|||
Correcto AgustinOrtu, exactamente ese es el problema
|
#14
|
||||
|
||||
No encontré el hilo donde hablamos sobre esto, recuerdo que había una solución muy elegante para resolver el problema. Haré otra búsqueda a ver...
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#15
|
|||
|
|||
He encontrado dos soluciones al problema, las expongo para ver que opinais.
1.- Puesto que utilizo una base de datos fisica (Access) compruebo que exista.
2. Esta segunda opcion es la que voy a implementar ya que me parece mas elegante y no depende de un fichero o ruta.
|
#16
|
||||
|
||||
Cita:
Esta opción también debería funcionar y también me parece buena.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#17
|
||||
|
||||
Cita:
Creo que Casimiro se refiere a este "antiguo" hilo, escrito antes de que los componentes MagiaData fueran integrados a GH Freebrary. Si alguien se interesa en echar un vistazo al código fuente del repositorio, puede ver lo sencillo que es implementar una propiedad llamada StoreConnected o StoreActive para los componentes de conexión a base de datos, agregando la directiva Stored a las propiedades Connected o Active. En la versión para Delphi 7, estos ejemplos aparecen en las unidades GHFSQLConnection.pas, GHFSQLQuery.pas y GHFClientDataSet.pas. En específico, del componente TghSQLConnection extraigo la parte que resuelve el problema: No es necesario escribir ningún método, solo derivar el componente con esas declaraciones, instalarlo en algún paquete y queda listo para usarse. La clase padre puede ser TADOConnection o cualquier otra a la que aplique. Recojo algunos comentarios que en su momento surgieron cuando planteaba esta característica: Cita:
Cita:
Cita:
Un cordial saludo. Al. |
#18
|
||||
|
||||
Hola Agustín
Cita:
De todos modos y aunque no soy un experto en ADO, se puede asignar otra cadena de conexión en el evento OnCreate del DataModule o en el evento BeforeConnect del propio componente como bién apuntaste con anterioridad. Saludos ![]() Pd: Alberto, luego voy a revisar con detenimiento tu mensaje que seguramente me resultará muy interesante e instructivo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
excepciones con TADOConnection | JuanPa1 | Conexión con bases de datos | 5 | 18-07-2007 22:49:09 |
TAdoConnection | Genner | Conexión con bases de datos | 1 | 16-11-2006 10:03:37 |
Desconectar FlashMemory | Deiv | Windows | 6 | 31-01-2006 04:52:22 |
Servicio con TADOConnection | Duc | Conexión con bases de datos | 0 | 27-07-2005 14:08:14 |
TADOConnection/TADOStoredProc | arantzal | Varios | 5 | 04-02-2005 11:23:06 |
![]() |
|