Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2015
josepicd josepicd is offline
Miembro
 
Registrado: jun 2015
Posts: 57
Poder: 10
josepicd Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 11-06-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En ejecución deberías poder capturar ese error sin problemas, si redefines el método Create del formulario.

Código Delphi [-]
private
  constructor Create(AOwner: TComponent); override;
  ...

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.
Responder Con Cita
  #3  
Antiguo 11-06-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
En ejecución deberías poder capturar ese error sin problemas, si redefines el método Create del formulario.

Código Delphi [-]
private
  constructor Create(AOwner: TComponent); override;
  ...

No lo he probado, pero debería funcionar.
No estoy tan seguro. Ten en cuenta que lo primero que hay que hacer en el constructor es llamar al constructor heredado para reservar la memoria. Esto hace (si no recuerdo mal, y en este caso) que también se creen los componentes y se establezcan los valores de sus propiedades.

Lo que sí podría intentarse es capturar la excepción. Algo así como:
Código Delphi [-]
CONSTRUCTOR TForm.Create (AOwner: TComponent);
BEGIN
  TRY
     INHERITED Create (AOwner)
  EXCEPT
    ON Error: Exception DO
    BEGIN
       { ¿ignorarlo? }
    END
  END
END;
Lo ideal aquí sería usar una clase de excepción del ADO Connection para discriminar.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #4  
Antiguo 11-06-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Ñuño Martínez Ver Mensaje
No estoy tan seguro.
Ten en cuenta que lo primero que hay que hacer en el constructor es llamar al constructor heredado para reservar la memoria. Esto hace (si no recuerdo mal, y en este caso) que también se creen los componentes y se establezcan los valores de sus propiedades.
Es correcto, por eso creo que funciona.

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:
Empezado por Ñuño Martínez Ver Mensaje
Lo que sí podría intentarse es capturar la excepción. Algo así como:
Eso es lo que quería decir con esta frase:
Cita:
Empezado por Neftali Ver Mensaje
En ejecución deberías poder capturar ese error sin problemas, si redefines el método Create del formulario.
__________________
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.
Responder Con Cita
  #5  
Antiguo 11-06-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hace tiempo, años, hablamos sobre esto y diversos componentes de conexión a BD que controlaban ese problema. A ver si lo encuentro...
Responder Con Cita
  #6  
Antiguo 11-06-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
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
Responder Con Cita
  #7  
Antiguo 11-06-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola josepicd
Cita:
Empezado por josepicd Ver Mensaje
..., lo he puesto en el datamodulecreate pero los valores los carga antes.
¿ Y por que carga los valores de un TADOConnection residente en un TDataModule antes de que este haya sido creado ?

¿ 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 ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 19:10:21.


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
Copyright 1996-2007 Club Delphi