![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
valores por defecto
me contesto a mi mismo....
En cuanto a la visiblidad , bueno, he podido solucionarlo simplemente cerrando y volviendo a abrir el dataset, el único problema es que al hacerlo, por defecto el dataset se desplaza al último registro, me gustaria conseguir que si por ejemplo el usuario confirma los cambios de edición del registro con el código 25, al confirmar los cámbios no se desplaze al registro con el código 41 (último). Por otro lado, sigo sin conseguir visualizar el valor asignado por el triguer 'before insert' hasta que hago el post..., he estado haciendo pruebas con los componentes 'fibevents', pero me doy cuenta de que su función principal es la 'refrescar' los contenidos de la base de datos a otros clientes conectados. saludos,, sigo buscando soluciones... |
|
#2
|
|||
|
|||
|
resuelto con stored procedure
simplemente comentar que estaba equivocado, los triggers before insert se ejecutan justo antes de efectuar la inserción del registro, no para suministrar valores por defecto iniciales que era mi intención.
al final lo he solucionado, llamando a un stored procedure desde el evento afterinsert del componente tfibdataset. me queda por resolver el hecho de recuperar el puntero después de guardar una edición de un registro, al cerrar y abrir el componente, se posiciona en el último registro. saludos... |
|
#3
|
||||
|
||||
|
¿Probaste con refresh?, con esto te refresca el registro en el que estás posicionado sin actualzar todo, de otra forma para posicionarte en el registro que quieres utiliza el locate de tu componente.
Saludos |
|
#4
|
|||
|
|||
|
refresh
Cita:
al cerrar y volver a abrir el mantenimiento, aparece todo correcto al final lo he solucionado haciendo dataset.close; dataset.open; dataset.locate( 'registrox') // solo para los casos de edición. aunque funciona, imagino que el cerrar y volver a abrir el conjunto de datos no es la mejor solución por el mayor consumo de registros que representa: nota: en el efecto afterpost del dataset tengo la siguiente cadena tpfibdataset( dataset ).transaction.commitretaining; gracias por la ayuda... |
|
#5
|
|||
|
|||
|
Hola,
empezar diciendo que no uso los FIb, uso MDO, pero son similares. Cita:
Tu mismo dices que te funciona, pero que no ves el dato añadido hasta que vuelves a abrir el dataset. Entonces, asignar el valor funciona, el problema es que no lo ves en ese momento. ¿Estas seguro de que es la misma transaccion?? Los FIb tienen un componente de transaccion independiente del dataset?? Has comprobado la opcion (AutoCommit) por defecto del dataset?? Cita:
Si te preocupa el close y open, te deberia preocupar mucho más el locate, que no utiliza ningun indice para hacer la busqueda, y se trae todos los datos del dataset hasta encontrar el que coincide. Creo que la opcion de usar bookmarks puede servirte mejor. Cita:
Si funciona bien, lo que hacer es un commit de la transaccion, más la apertura del dataset asociado (y quizas me equivoque, pero creo que deberia colocar el cursor en el punto donde estaba anteriormente), lo cual efectivamente consume recursos, tiempo y red. Puede que estes haciendo otras cosas que interfieran, si puedes poner más informacion, el codigo que utilizas, etc... |
|
#6
|
||||
|
||||
|
Cita:
asignaba los valores por defecto que vé el usuario para empezar a crear un registro nuevo, error, el triguer before insert es el evento en el que se asignan los valores por defecto antes de grabar el registro. por eso no me sirve el trigguer para dejar estos valores por defecto cuando (desde un mantenimiento) se crea un registro nuevo. Cita:
, es decir ahora tengo el siguiente código en el evento datasetafterpost:tpfibdataset( dataset).transaction.commitretaining; dataset.refresh es decir , ya no hago el : dataset.close; dataset.open; dataset.locate( ...), y funciona perfectamente, es decir , no tengo necesidad de volver a abrir la fuente de datos.. Cita:
Cita:
hilo hay un comentario al respecto, no obstante me gustaria conocer más opiniones al respecto. un saludo |
|
#7
|
||||
|
||||
|
Cita:
En mi opinion, esta mal, yo no lo haria. Para valores por defecto, usa DEFAULT al crear la tabla.O inicialos en el evento de insercion, pero no añadas un registro extra, pensando que luego lo utilizaras. Si no lo utilizas tendrás que borrarlo, o dejarias registros sin datos. Cita:
Sigue estando en el AfterPost?? Cita:
Cita:
A cuantas modificaciones por segundo se refiere "el uso intensivo"?? Y por cierto, actualmente no tienes ningun problema, verdad?? PD: Cuando digo que algo esta bien o esta mal, es mi opinion, cada uno despues hace lo que le parece mejor. |
|
#8
|
||||
|
||||
|
Cita:
Debes de saber además que los FIBPlus tienen los siguientes procedimientos:
__________________
Gracias, Rolphy Reyes |
|
#9
|
|||
|
|||
|
gracias por contestar
Cita:
tengo entendido que no se puede utilizar un select del tipo select last 20 from ..... para recuperar los últimos 20 registros,,según el índice activo..¿ es correcto ? Cita:
|
|
#10
|
||||
|
||||
|
Cita:
Por ejemplo el campo fecha lo crearía con dos indices uno ascendente y el otro descendente entonces el query quedaría así:
O
__________________
Gracias, Rolphy Reyes |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Articulo: Atributos de visibilidad en Delphi | marceloalegre | Varios | 4 | 25-03-2008 16:29:15 |
| Visibilidad de un objeto instanciado en Form1 desde otra unit | lujansantos | OOP | 2 | 18-07-2007 16:33:13 |
| Problema con transacciones en Access y Delphi | Capi666 | SQL | 1 | 11-01-2007 21:49:14 |
| Problema con TClientDataSet y Transacciones | dieleo | Conexión con bases de datos | 0 | 01-09-2006 02:06:32 |
| Problema en el uso de Transacciones | AGAG4 | Conexión con bases de datos | 13 | 15-06-2005 19:56:49 |
|