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 29-11-2005
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
Problemas con las conexiones a datos

Tengo un problema que paso a comentar, estoy desarrollando una aplicación en la que tengo forms para captura de datos y reports para visualizarlos (QuickReport 4.06) y cada uno de ellos tiene un datamodule asociado en el que hago las conexiones oportunas (por ej. Form frmXXXXX datamodule asociado dmXXXXX). La cosa es que, y no sé en qué circunstancia se produce, que de vez en cuando se pierde la conexión de los datasources del formulario con los dataset del datamodule. Se me ha ocurrido controlarlo por código de esta forma
Código:
  if Not dsPrincipal.dataset.IsLinkedTo(dmAgencias.IBTAgencias) then
	dsPrincipal.DataSet := dmAgencias.IBTAgencias;
y al ejecutarse (cuando pierde la conexión, es decir el datasource del formulario no tiene dataset del datamodule asociado) me dá error en dbrtl90.dll y no vá.

Alguno sabe la forma de corregirlo por código, es que si no lo controlo de esta forma corro el riesgo de que se pierda la conexión en algun sitio de la aplicación y falle
Responder Con Cita
  #2  
Antiguo 29-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Supongo que primero convendría tratar de saber exactamente donde y porque se pierde la conexicón.... y a partir de ahí tratar de solucionar tu problema.
__________________

Responder Con Cita
  #3  
Antiguo 29-11-2005
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
Como dice ContraVeneno, infórmanos un poquito más

Recuerdo que lo que comentas ocurría bastante con Delphi 4, hasta el punto que me acostumbré a asignarlo siempre por código.

Después, con Delphi 5, 6 y 7 no me ha vuelto a pasar nunca.
Responder Con Cita
  #4  
Antiguo 30-11-2005
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
Exclamation Te importaría decirme cómo

Pues eso, te importaría decirme cómo lo solucionaste.

Gracias.
Responder Con Cita
  #5  
Antiguo 30-11-2005
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 Jesús Pena
Pues eso, te importaría decirme cómo lo solucionaste.

Gracias.
Pues eso, te importaría darnos más información
Responder Con Cita
  #6  
Antiguo 01-12-2005
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
Pues no se bien cuando sucede

El caso es que en diseño todo esta correcto (aparentemente). En el onCreate del datamodule abro las tablas (en el datamodule no tengo datasources, salvo en aquellas que tienen estructura de maestro/detalle), en el create del form creo el datamodule, esto todo por código.
En diseño abro las bases de datos y asocio en el formulario dos datasouces de cada tabla (hago lo mismo en el caso de que se trate de informes - utilizo QuickReport) y en algunas ocasiones se pierde la asociación de los datasources y las tablas correpondientes pero no sabría decirte cuando. Lo soluciono abriendo bien el formulario bien el report y estableciendo otra vez las correpondencias y así cada vez que ocurre.

Una pregunta ¿donde me recomiendas que ponga los datasources? en los datamodule y hacer referencia en los objetos de acceso a datos a los datasources del datamodule o crear los datasources en los formularios (o reports) y asociarlos con las tablas del datamodule.
Responder Con Cita
  #7  
Antiguo 01-12-2005
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
En Delphi 4 lo asignaba a mano por código, creo recordar que en el oncreate del form (tendría que confirmártelo), es lo único "seguro" que encontré para que no se perdiera la asignación.
Luego con Delphi 5 me ocurrió en alguna ocasión (muy pocas), y con delphi 6 y 7 no me ha pasado nunca hasta ahora.

En cuanto a los DataSources, yo los pongo en el form y los querys,transaction,database,etc los suelto en un DataModule para tener acceso a ellos desde los distintos forms que lo necesiten.
Responder Con Cita
  #8  
Antiguo 01-12-2005
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
Question Eso es lo que intento

Lo que pretendo es precisamente eso hacerlo por código, lo intento con el código descrito a continuacion
Código:
dmClientes := nil; // datamodule
dmClientes := TdmClientes.Create(Self); // creación del datamodule
pDmConectado := dmClientes.fConectado; // si todo ha ido correcto o no
if not pDmConectado then
begin
	MessageDlg('Error de Conexión con la Base de Datos de Clientes',mtError,[mbOk],0);
	Close; // si no muestro mensaje y cierro el formulario
end;
if Not dsPrincipal.dataset.IsLinkedTo(dmClientes.IBTClientes) then
	dsPrincipal.DataSet := dmClientes.IBTClientes; // aquí es donde me dá el access violation (cuando pierde la conexión)
lo que ocurre es que al hacer la asignación del datasource (dsprincipa) da un access violation ¿que estoy haciendo mal?

Gracias por compartir la sabiduría

Última edición por Jesús Pena fecha: 01-12-2005 a las 19:03:17.
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


La franja horaria es GMT +2. Ahora son las 20:47:42.


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