Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Buenas de nuevo, y perdonad que reabra un post antiguo.

En base al trigger que lance un evento en funcion de un insert en una tabla, ahora lo hice pero con update, el unico problema es que me lanza el evento una vez, despues de haber abierto el programa, aunque el refresh no me lo hace (que tendre que buscarle por otro lado porque estoy usando los mismos parametros en el zconnection que en los anteriores post y funciono).

Aqui no entiendo porque, despues de hacer un edit y luego un post y finalmente un commit (commitretaing no lo tiene zeos), me salta el evento, pero despues de hacer lo mismo, ya no salta dicho evento.

Estuve checando si tendria que ver con los cacheupdates pero ni modificandolos lo hace dos veces.

Verdaderamente si esta bastante raro el asunto porque tambien hice un trigger para insertar y me hace lo mismo, solo lo hace una vez.

Código Delphi [-]
CREATE TRIGGER POST_NEW_REG FOR CLIENTES ACTIVE 
AFTER UPDATE POSITION 0 
AS 
BEGIN    
 POST_EVENT 'new_reg'; 
END
Responder Con Cita
  #2  
Antiguo 11-10-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Bueno retomando este post, pero cambiando un poco el termino.

que tanto problema hay en activar o desactivar un query para que actualice, ya que el el metodo anterior, (post_event) no trabaja bien.

me refiero a
Código Delphi [-]
zquery1.active:=false
zquery1.active:=true

bastantes veces.
Responder Con Cita
  #3  
Antiguo 11-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No pasa nada, salvo que si es un query muy pesado, harás trabajar mucho al servidor de bases de datos.
Responder Con Cita
  #4  
Antiguo 11-10-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias, pense que habria algun problema con la corrupcion de datos . Pero es la forma que encontre de actualizar.
Responder Con Cita
  #5  
Antiguo 23-02-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
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?.
Responder Con Cita
  #6  
Antiguo 23-02-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por anubis Ver Mensaje
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...
Tampoco es que sea habitual ese escenario, quiero decir que no hay alguien con la misma pantalla en distintos forms atento a ver lo que hace si otro lo edita.
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.
Responder Con Cita
  #7  
Antiguo 23-02-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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:
Código Delphi [-]
...
var
  BM: Pointer;
begin
  // Obtener posición actual del query que muestra
  BM := IBQuery1.GetBookmark;

  try
    // Modificar una columna (para el ejemplo uso otro qry)
    IBQuery2.Close;
    IBQuery2.SQL.Text := 'UPDATE TABLA SET CAMPO = :CAMPO WHERE ID = 1';
    IBQuery2.ParamByName('CAMPO').AsString := Edit1.Text;
    IBQuery2.ExecSQL;

    // Refrescar qry asociado al DBGrid
    IBQuery1.Close;
    IBQuery1.Open;
    IBQuery1.GotoBookmark(BM);

  finally
    IBQuery1.FreeBookmark(BM);
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 23-02-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
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.
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

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


La franja horaria es GMT +2. Ahora son las 00:58:28.


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