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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-09-2004
cesar_picazo cesar_picazo is offline
Miembro
 
Registrado: ene 2004
Posts: 65
Poder: 21
cesar_picazo Va por buen camino
Error al conectar Tabla con Intebase

Buenos dias estoy utilizando Delphi 6 con Firebird 1.5 y para acceso de datos estoy utilizando los componentes de DBExpress.

Estoy terminando una aplicación en donde uso los siguientes objetos pero por una determinada razon que desconosco este codigo no me funciona cada que trato de Abrir tablas, este error es aleatorio y casi siempre se presenta cuando trato de abrir una tablas despues de haber abierto cerrado 3 o 4 veces formularios. El mensaje de error que presenta es al Activar de SQLClientDataset (Project admi.exe raised exception class EdataBaseError with message 'SQLConection Proporty required for this operation' process stoped) alguien sabe el motivo de este mensaje.

DIBcon : array [0..60]of TSQLConnection;
DDataSource: array[0..99] of TDataSource;
DSQLClientDataSet: array[0..60] of TSQLclientDataSet;

Los cuales inicializo al inciar la aplicacion

for vxii:= 1 to 60 do
Begin
principal.DIBcon[vxii] :=TSQLConnection.Create(self);
principal.DSQLClientDataSet[vxii]:= TSQLclientDataSet.Create(self);
principal.DSQLClientDataSet[vxii].Name :='dsqlcldata'+inttostr(vxii);
principal.DDatasource[vxii]:= TDataSource.Create(self);
principal.Dibcon[vxii].Connected :=false;
principal.Dibcon[vxii].close;
End;

Estos los uso en la aplicación para conectar a cualquier Db de Firebird
principal.DSQLClientDataSet[letraanumero].DBConnection:=principal.Dibcon[letraanumerotra];

Se valida que la conexion se realice a la ruta especifica y si no esta conectada lo conecta:
IF (principal.Dibcon[letraanumerotra].Connected =false) or (UpperCase(principal.DSQLClientDataSet[letraanumero].DBConnection.Params.Values['Database'])<>UpperCase(srutadb)) then
FConecta1DB(srutadb,letraanumerotra);

Se cierra la tabla que se va a Abrir y se eliminan si existen campos asociados a la conexion:
Principal.DSQLclientDataSet[vxt].Active := false;
Principal.DSQLclientDataSet[vxt].close;
for cuenta:= 0 to Principal.DSQLclientDataSet[vxt].FieldCount-1 do
Begin
Principal.DSQLclientDataSet[vxt].Fields[0].Destroy;
end;
Se arma el query
principal.ddatasource[vxt].Enabled := fALSE;
Principal.DSQLClientDataSet[vxt].CommandText := 'Select * from ' + tablaponerUso;
principal.ddatasource[vxt].dataset:=Principal.DSQLClientDataSet[vxt];

Nuevamente se le asigna a la tabla la conexion
Principal.DSQLclientDataSet[vxt].dbConnection :=principal.Dibcon[vxt2];

principal.DSQLClientDataSet[VXT].FieldDefs.Clear;

Se abre la tabla
principal.DSQLClientDataSet[vxt].Active := true;
principal.DSQLClientDataSet[vxt].open;
principal.ddatasource[vxt].DataSet :=principal.DSQLClientDataSet[vxt];
principal.ddatasource[vxt].Enabled := true;

Al cerrar el Formulario se cierra la conexion
Este proceso que realiza para abrir una tabla se hace cada que se abre una serie de 3 formularios.

For conttemp:= 1 to 45 do
Begin
Principal.DSQLClientDataSet[conttemp].Active :=false;
Principal.DSQLClientDataSet[conttemp].close;
end;
Principal.DSQLClientDataSet[2].IndexFieldNames :='';
Principal.DSQLClientDataSet[2].MasterFields:='' ;
Principal.DSQLClientDataSet[2]:=Principal.DSQLClientDataSet[49];
ftransaccion(1,3);// Se termina la Transaccion que este iniciada
fclosecon(1); //Se cierra la conexion
principal.Dibcon[1]:=principal.Dibcon[49]; //la conexion se iguala a una conexion que nunca se toca.


Si alguien conoce o tiene algun procedimiento manual de abrir y cerrar tablas
con DBExpress se lo agradeceria ya que no se si me falta algo para poder abrir n numero de tablas, ya que parece que mi prodemiento falla.
Responder Con Cita
 



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 08:51:19.


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