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 25-05-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Question Hay alguna forma de cerrar el Database en diseño

Hola

Cuando programo en un datamodule , muchas veces al guardar me olvido de desconectar el DataBase , hay alguna forma de decirle a Delphi que no te deje guardar los cambios o que antes de guardar te avise que el database esta cerrado .

Un saludo
Responder Con Cita
  #2  
Antiguo 25-05-2007
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
pero para que quieres guardarlo cerrado??
en ejecución antes de abrirlo, compruebas si está cerrado y luego lo abres, no?
Responder Con Cita
  #3  
Antiguo 25-05-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
No hay forma que yo conozca, pero al iniciar tu aplicación puedes cerrarlo y luego abrirlo con los parámetros que necesite para "simular el comportamiento que pides".
Responder Con Cita
  #4  
Antiguo 25-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Yo uso GExperts con BDS2006 y si. Incluye una opción para cerrar antes de compilar, los objetos que tú le indiques.

Si le dices que a un objeto "TDatabase" le ponga su propiedad "Active" a "False" pues Gexperts, como buen amigo, te lo hace con los ojos cerrados, de hecho aparece un mensaje en el área de notificación de errores de compilación que informa qué componentes "ha tocado".

Lo que no sé si esto puede hacerlo en versiones anteriores de delphi o solo en BDS.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 25-05-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Yo uso principalmente Delphi 6 y 7 , que es donde me interesaria controlarlo .

El caso es que a veces hay errores si me lo dejo abierto , no sé exactamente por que , por que la parte de la aplicación que me toca a mí desarrollar , es otra .

Pero si seria muy interesante que Delphi tuviera alguna opción para controlar este detalle . Principalmente estoy con interbase y lo que quiero que quede cerrado es el TIBDataBase.

Saludos
Responder Con Cita
  #6  
Antiguo 25-05-2007
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
Prueba con alguna opcion tipo ifTIBDataBase.active then TIBDataBase.close;
y luego TIBDataBase.open;

no se si la llevará, yo lo hago con adoQuery y resto por el estilo y me funciona bien.
Responder Con Cita
  #7  
Antiguo 25-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Yo uso GExperts con BDS2006 y si. Incluye una opción para cerrar antes de compilar, los objetos que tú le indiques.

[...]

Lo que no sé si esto puede hacerlo en versiones anteriores de delphi o solo en BDS.
En Delphi 7 no veo esa opción de los GExperts, pero quizá es que no la encuentro. ¿Cómo se llama?

Por otra parte, en respuesta a lacovera, en mi opinión es muy conveniente dejar cerradas las conexiones en el diseño y abrirlas hasta la ejecución, lo cuál no es equivalente a la opción que propones. El problema es que si dejas abierta una conexión en el diseño, la VCL intentará abrirla antes de que tengas ninguna oportunidad de controlar posibles errores (no hay conexión de internet, la tabla no existe, etc.)

// Saludos
Responder Con Cita
  #8  
Antiguo 28-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por roman
En Delphi 7 no veo esa opción de los GExperts, pero quizá es que no la encuentro. ¿Cómo se llama?
Me tomo la libertad de insistir un poco, Lepe. ¿podrías mencionar cómo se llama y/o localiza esa opción en las gexperts?

// Saludos
Responder Con Cita
  #9  
Antiguo 29-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Ahora mismo no tengo BDS instalado (por causas que no vienen al caso), aquí viene la caracterísitca en cuestión: Set Component properties directamente del readme.txt de la VERSION 1.30 (October 26, 2006) de GExperts

Cita:
- Set Component Properties: New tool to set properties (Boolean, string,
set, enum, ordinal, etc.) to some value when the a project is compiled.
Useful to deactivate datasets/connections, etc. (Robert Wachtel,
Gami, Erik)

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 29-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Gracias Lepe,

Ya he visto la opción y puedo confirmar que existe también Delphi 7. No aparece listado en el menú principal de GExperts sino que se accede mediante la opción Configuration, pestaña Experts.

// Saludos
Responder Con Cita
  #11  
Antiguo 29-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepe
Ahora mismo no tengo BDS instalado (por causas que no vienen al caso), aquí viene la caracterísitca en cuestión: Set Component properties directamente del readme.txt de la VERSION 1.30 (October 26, 2006) de GExperts
Saludos
Interesantísima esa opción, la desconocía por completo, y eso que conozco gexperts desde... ni me acuerdo.

Precisamente la semana pasada sufrí un problema con un nuevo módulo que no funcionaba en ningún ordenador de ningún cliente. La pista para solucionarlo me la dio uno de mis jefes: "...el caso es que yo lo probé en mi portátil, ahí en la oficina, y funcionaba...". uuummmm... en la oficina sí que funcionaba y en todos los ordenadores que probé en el trabajo también... está claro, se ha quedado abierta la TpFIBDataBase
Efectivamente era eso.

Y a pesar de que tenemos una lista tremenda de cosas a comprobar antes de compilar para sacar una versión nueva... pero siempre se olvida algo
Responder Con Cita
  #12  
Antiguo 30-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi
uuummmm... en la oficina sí que funcionaba y en todos los ordenadores que probé en el trabajo también... está claro, se ha quedado abierta la TpFIBDataBase
Llevo un día cavilando en esto y aún no atisbo cómo pudiste concluir esó

// Saludos
Responder Con Cita
  #13  
Antiguo 31-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman
Llevo un día cavilando en esto y aún no atisbo cómo pudiste concluir esó

// Saludos
Sólo por experiencia, roman, porque ha pasado otras veces. Mis conexiones son siempre del estilo: 192.198.0.33:/home/datos/basedatos.fdb
Así que desde cualquier equipo de la red local pueden probar el programa que sea hecho por mí, que siempre conectará a esa ruta. Si dejo abierta esa conexión, evidentemente, en otro sitio no la encontrará y fallará al iniciar el programa.
Responder Con Cita
  #14  
Antiguo 31-05-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Errores de Conexión

Por lo gral. siempre tengo la conexión cerrada(cualquier tipo de conexión) y la abro en el evento DataModuleCreate del DataModule.

Si se trabaja con Access o 'archivos', jamás se sabe donde el usuario instaló la aplicación y genera una lista de mensajes de error(tantos como datasource existan). Si se trabaja con SQL u otros gestores se desconoce el nombre del server, DSN en caso de utilizar ODBC o lo que sea.

Para la cadena de conexión uso parámetros que los levanto de un .ini o una pantalla inicial y almaceno todo en el registro. De esta manera la segunda vez que corre ya tengo todos los parametros para armar la conexión.

De todas formas si me queda abierta por error en etapa de diseño la cierro antes en este mismo evento.

Una vez abierta la conexión
for i := 0 To Conx.DataSetCount-1 do
begin
// ShowMessage( Conx.DataSets[i].Name ); // Por si tira error se cual es el que jode
Conx.DataSets[i].Active := true;
end;

Salu2 y espero les sirva.
Responder Con Cita
  #15  
Antiguo 31-05-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Me olvidada

Para que lo propuesto anteriormente funcione correctamente el DM (datamodule) es el primer objeto a crear, o sea antes del main, login, splash, etc. creo el DM. Así cuando necesite trabajar con datos ya están todos disponibles.

Saludos
Responder Con Cita
  #16  
Antiguo 31-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por waly2k1
De todas formas si me queda abierta por error en etapa de diseño la cierro antes en este mismo evento.
El problema es que si la conexión queda abierta durante el diseño, la VCL intentará reabrirla al momento de cargar las componentes del DFM al crear el data module, y esto ocurre antes del evento OnCreate, así que para cuando quieras cerrarla, ya habrá saltado la excepción indicando que no encuentra el archivo, el servidor, etc.

// Saludos
Responder Con Cita
  #17  
Antiguo 31-05-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Claro, ese es el problema, que el error ocurre antes. Y no hay forma de evitarlo si hemos olvidado cerrar la conexión antes de compilar el ejecutable.
Esta opción de las Gexperts es perfecta para evitar ese problema.
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
alguna forma de Insertar registros en entorno de red. Arturo MySQL 2 06-01-2006 23:07:18
evitar precionar dos veces F3 para cerrar una forma.... Arturo Varios 3 29-08-2005 18:12:42
Cerrar Forma al Ser Creada AGAG4 Varios 10 15-10-2004 19:11:34
Hay alguna forma? jam888 Firebird e Interbase 2 06-10-2004 21:34:45
Cómo cerrar una forma en el OnShow Event? pepix Varios 2 08-07-2004 17:09:37


La franja horaria es GMT +2. Ahora son las 23:57:46.


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