Ver Mensaje Individual
  #1  
Antiguo 27-01-2011
ElGatitoTapatio ElGatitoTapatio is offline
Miembro
 
Registrado: nov 2006
Posts: 38
Reputación: 0
ElGatitoTapatio Va por buen camino
Unhappy Ayuda con Firebird, Transacciones, Zeos y Delphi

Mis estimados miembros de este excelente foro despues de leer y leer posts acerca de firebird buscando solucion a mis problemas, me he atrevido a pedirles de su ayuda.

LA verdad es que soy un super novato en Firebird y su utilizacion con Delphi, eso me doy cuenta al leer todo lo que hay en este importante foro, por lo tanto les expongo mis broncas.

Tengo un sistema desarrollado en delphi el cual se utiliza como cliente servidor, uno de los problemas es que cuando hago cambios en un cliente (inserts, updates, deletes) estos cambios no se ven reflejados en algun otro cliente hasta que se cierran y se abren las aplicaciones, esto despues de lo que he leido al parecer es por como estoy utilizando las transacciones o tal vez por la falta de utilizacion de las mismas.

Otra bronca es que al agregar muchos registros despues de un numero determinado el sistema se hace muy lento hasta el punto de bloquearse y se tiene que cerrar la aplicacion, esto tambien parece ser por la bronca de las transacciones, al parecer no las estoy cerrando por lo que he leido, pero por eso quiero confirmarlo con ustedes.

Les comento que utilizo Firebird 2.1.3, DElphi 7 y componentes ZEOS, que estos ultimos son tambien algo por lo que me hace pedir ayuda, ya que al parecer esto es mucho mas sencillo con los componentes IB. Pero pues como tendria que cambiar todo el sistema o por lo menos los componentes pues prefiero preguntar antes para, si se puede ahorrar trabajo.

Les anexo basicamente el codigo que estoy utilizando para los procesos que implican un cambio en la base de datos, tambien les comento que me doy cuenta que en la propiedad de TZConnection.TransactIsolationLEvel tenia tiNone, asi que creo que debo de comenzar por cambiarla por tiReadCommitted, creo yo.

Este es el codigo:


Código Delphi [-]
           with dm_databases.ZConnection_LAXP do
            Try
              frm_main.GuardaCursor;
              ExecuteDirect('Delete from HISTORICO_TRANSACCIONES '+
                            'where FOLIO = '+ed_folio.Text);
              for i := 1 to grid_pesadas.RowCount do
                ExecuteDirect('Insert into HISTORICO_TRANSACCIONES(FOLIO,ID_TIPO,TOT_EJES,NO_EJE,ID_CAMION,ID_CHOFER,'+
                              'ID_EMPRESA,ID_PRODUCTO,PESO_INICIAL,PESO_CIERRE,FECHA_INICIAL,FECHA_CIERRE,'+
                              'STATUS,PLACA) Values('+ed_folio.Text+','+IntToStr(TipoBascula)+','+IntToStr(ed_ejes.Value)+
                              ','+grid_pesadas.Cells[0,i-1]+','+LIdCamiones[cb_camion.itemindex]+','+LIdChoferes[cb_chofer.itemindex]+
                              ','+LIdEmpresas[cb_empresa.itemindex]+','+LIdProductos[cb_producto.itemindex]+','+
                              grid_pesadas.Cells[1,i-1]+','+grid_pesadas.Cells[2,i-1]+','''+ed_fecha_inicial.text+' '+
                              ed_time_inicial.text+''','''+ed_fecha_cierre.text+' '+ed_time_cierre.text+''','+IntToStr(status)+
                              ','''+ed_placa_camion.text+''')');
              frm_main.RestauraCursor;
              HistorialTransacciones;
              NuevaTransaccion;
              MessageBox(0, 'Se ha guardado la transacción correctamente.', 'Transacción almacenada', MB_ICONINFORMATION or MB_OK or MB_TASKMODAL);
            except
                frm_main.RestauraCursor;
                MessageBox(0, 'Ocurrió algún error al guardar la transacción.', 'Error', MB_ICONERROR or MB_OK or MB_TASKMODAL);
            end

Debo de aclarar que cuando menciono transaccion en el codigo no me refiero a transacciones de bases de datos, sino al proceso que se realiza, ya que asi se le llama en el sistema en cuestion.

La verdad es que me da pena poner el codigo porque se que soy novatazo pero no me queda de otra.

De antemano les agradezco enormemente la ayuda que me puedan dar .

Saludos!!

Última edición por Casimiro Notevi fecha: 27-01-2011 a las 13:14:46. Razón: Arreglar las etiquetas
Responder Con Cita