FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola amigos y perdon que reabra este post .
Aplicando los componente ibx en lazarus windows y, entendiendo que los events se disparan cuando hay alguna insercion por ejemplo, el refresh no trabaja con los nuevos datos. En ibtransaction, defaultaction esta puesto en tacommitretaining, en params esta puesto como read_committed, rec_version y nowait. Imagino que muchos de vosotros no teneis problemas con el refresh de un ibdataset en computadoras clientes puesto que os actualiza los datos y, como comentaba eficsa, que no ha tenido problemas con los componentes ibx. En una computadora doy de alta un usuario, y en la computadora del cliente tengo en pantalla un dbgrid abierta, el event salta pero no refresca, no quiero abrir y cerrar el dataset porque, como dice casimiro notevi, se le hace trabajar mucho al servidor de la base de datos. soy un caso verdad?. |
#2
|
||||
|
||||
Cita:
No sé para qué tipo de negocio estás implementando eso, pero si un usuario/vendedor/contable/etc. está atendiendo a un cliente, no hay otro usuario/vendedor/contable/etc. atendiendo al mismo cliente, por lo que esas casualidades no se producen en la vida real. También recuerda que deben estar abiertos unos puertos adicionales, lee esto y esto. |
#3
|
||||
|
||||
Hola anubis.
No he manejado los componentes IBX en Lazarus pero en Delphi, Refresh no es compatible con todos los TDataSet. Además, si se trata de una consulta estática se recomienda cerrarla y abrirla nuevamente. Por otro lado para actualizar un conjunto de datos, el método Refresh vuelve a solicitar los datos de la tabla, no creo que tengas una degradación de velocidad por elegir una u otra alternativa (cerrar/abrir). La ventaja mas notoria es que Refresh mantendrá la posición de la fila actual, pero eso también podes lograrlo usando Close/Open sobre TIBQuery como en este ejemplo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
Gracias por contestar.
La verdad no es por tener el dbgrid abierto a ver que sucede o si refresca, la realidad es que en un terminal estamos dando de alta, modificando o borrando productos, asi como cambiando los productos o aumentando el inventario, y en otro terminal de ventas (es una tienda al publico), vamos capturando los productos que estamos vendiendo. Si tengo la tabla abierta y en ese momento he dado de alta un producto o le he cambiado el precio debiera de actualizarse. Si bien es cierto que, como decis, el refresh no tiene porque funcionar en todos los escenarios, si me preocupaba usar close y open porque, segun lei en otro post, se le hace trabajar mucho al servidor de base de datos. Gracias casimiro notevi por los documentos, ya los habia visto y tambien el famoso post de 88 mensajes pero ahi, independientemente de leerlo, finalmente se acaba usando, por un lado un commitretaining en el lado de modificacion de los registros y refresh en el lado del cliente. Por otro lado el problema de los puertos lo he solucionado abriendo el firewall para las computadoras en la red interna, de otra forma, solo con abrir el puerto 3050 no es suficiente. Resumiendo y dandoos las gracias por vuestra paciencia y aportes, no hay ningun problema en cerrar y abrir la tabla y, en este caso que apunta eficsa, guardando el bookmark. |
#5
|
||||
|
||||
Cita:
Si estás vendiendo mientras se está actualizando un precio (por ejemplo), lo normal es que se venda al precio que tiene en el momento de la venta. Una vez actualizado el precio, en la siguiente venta irá el nuevo precio. Pero no hay que actualizarle el precio al cliente que compró con el precio viejo, él lo compró a ese precio. |
#6
|
||||
|
||||
Cita:
Pero no el caso va más allá del precio desde donde yo lo veo, puede pasar que hayan 3 artículos y por equis o ye razón ya no se encuentren disponibles, así pues se podría vender algo que ya no se encuentra en el inventario. Por otro lado anubis el refresh es un open close encapsulado en una sola instrucción, así que usar el refresh o usar las dos instrucciones va a tener los mismos consumos de tiempo. También ve preparándote para bloqueos de la aplicación cuando se pierda la conexión web (cerrar la tapa de un portatil, que se desconencte por error el cable de red, que se quede sin energia el router), y problemas de velocidad en redes inalambricas ya que los ibx no están muy preparados para lidiar con ellos, mucho menos esperes conectarte muy bien por Internet, también ten en cuenta que para trabajar con los eventos de firebird debes desbloquear además del puerto 3050, el puerto 3052 del firewall, no solo en el servidor si no en los clientes ya que por dicho puerto les llega el mensaje del evento
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#7
|
||||
|
||||
Cita:
Cita:
Firebird trabaja de forma predeterminada por el puerto 3050. |
#8
|
||||
|
||||
Cita:
Cita:
Por otro lado tener una aplicación cliente que le haga peticiones a la aplicación servidor, por ejemplo decirle que le mando serializado la información que tiene para un documento de identidad cualquiera, e internamente también convertir a un objeto Persona en dicha aplicación cliente, además realizar los diversos procesos que se necesiten hacer con dicha persona (lógica de negocio) y si hay cambios en el objeto persona serializarlo, enviarlo a la aplicación servidor y pedirle que haga los cambios pertinentes a dicha persona... Como tal es mucho trabajo inicial, pero años después será un alivio Si todo el proceso de base de datos va por el 3050, pero los eventos los manda por el 3052 y tanto el firewall de windows o como varios antivirus lo bloquean, y puede hacer creer que se encuentra un daño en la aplicación
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TClientDataSet - Refrescar Parte de la Tabla | LEVV | Conexión con bases de datos | 2 | 13-04-2012 17:21:16 |
refrescar la tabla | ebeltete | Firebird e Interbase | 1 | 08-03-2008 15:58:54 |
Refrescar tabla al eliminar registro | Shikanda | Conexión con bases de datos | 4 | 10-09-2007 17:22:36 |
Refrescar tabla y consulta | carlosegs11 | SQL | 11 | 08-05-2007 19:40:53 |
Actualizar o Refrescar una Tabla | Caral | Tablas planas | 2 | 20-02-2007 20:12:17 |
|