Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Actualizar en el cliente con FIBPlus, Como? (https://www.clubdelphi.com/foros/showthread.php?t=82193)

El_Raso 06-02-2013 18:06:58

Actualizar en el cliente con FIBPlus, Como?
 
Que tal a Tod@s:

Tengo una tabla de factura que lleva un numero secuencial, para controlar los Key Violation con varios usuarios, puse como campo
primario el NUMEROFACTURA y el PUNTOVENTA donde se realizo. Pero la factura como dije al principio debe salir con un numero unico.

Para este ultimo tengo un campo NUMERO que lo asigno con un Generador usando un triguer en el Before Insert de la tabla FACTURA.

Eso me funciona perfecto, pero al generar la factura y mandar a imprimir no me trae el valor del campo NUMERO ya que lo asigne en el servidor y deberia de leer el registro nuevamente para refrescar. He usado FIBTabla.Refresh y eso no funciona, mi pregunta:

Existe alguna propiedad en el componente TFIBTable que me ayude a lograr eso?

Se lo agradecere...

Casimiro Notevi 06-02-2013 18:14:37

Cita:

Empezado por El_Raso (Mensaje 454628)
.. al generar la factura y mandar a imprimir no me trae el valor del campo NUMERO ya que lo asigne en el servidor..

Creo que no te he entendido :confused:

movorack 06-02-2013 19:58:01

A ver parece que dice que:
- Está creando una factura en el cliente
- La numeración no la establece el cliente sino la DB por medio de un trigger
- Al terminar la creación de la factura, el cliente a pesar de ejecutar un refresh no muestra el número asignado en el trigger

Entonces lo que estaría consultando nuestro compañero es:

- ¿como hago para que al finalizar la creación de la factura devolviese el número que el trigger asigno a la factura?

----

Cuando estás creando el registro. este no está aún relacionado a la tabla y por lo tanto una vez realizada la transacción el no te puede actualizar el registro que se está presentando en pantalla con la información actualizada de la tabla. lo que podrías hacer es consultar a la tabla por este nuevo registro y así poder mostrarlo en pantalla.

Algunas bases de datos te ofrecen la posibilidad de retornar uno o varios campos como resultado del insert.

Insert en firebird
Código SQL [-]
//el campo 1 es calculado en un trigger
INSERT INTO TABLA (campo2,campo3) values (0,'NOMBRE APELLIDO') returning campo1

Este valor puede ser obtenido por el DataSet. aquí en el foro ya trataron el tema de como obtener el valor que devuelves en returning.

Saludos.

Casimiro Notevi 06-02-2013 20:03:41


Si es eso lo que pregunta, entonces... ¡¡¡Muy bien explicado!!! ^\||/

El_Raso 06-02-2013 23:15:10

Muchas Gracias movorack por tu explicacion... muy bien detallada.

Yo en realidad resolvi el problema como lo planteas, mandando a leer otra vez el registro deseado, pero eso es exactamente lo que no quiero
mandar desde el cliente al servidor a leer el registro nuevamente por un solo campo. Y creo que los TTable con el refresh actualizan el registro
pero no se porque las FIBPlus no heredaron eso.

Casimiro gracias a ti tambien por responder cuando hablo de generar la factura me refiero a grabar el registro con todos sus datos que ya previamente
he capturado en controles en el cliente.


La franja horaria es GMT +2. Ahora son las 09:07:00.

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