FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
|
|
|