Share |

sábado, octubre 01, 2005

Enlace con varios subforms simultaneamente

Navision permite tener dentro de un form un subform y hacer un link entre ellos, de manera que al cambiar el registro del form cambie la información relacionada en el subform.
Pero no permite, de manera automática, enlazar un segundo subform. Esto se consigue con el evento OnTimer del form, el cual se ejecuta cada cierto tiempo programado (TimerInterval = 100, es un valor adecuado). Es en este evento donde podemos añadir codigo y verificar si hay que actualizar la información del segundo subform. Por ejemplo:

Form - OnTimer()
CurrForm.sbfItems.FORM.GETRECORD(ItemVendor); //Coge el registro actual
IF Key <> "No." + ItemVendor."Item No." THEN BEGIN //Si la info ha variado...
CurrForm.sbfPrices.FORM.myFilter("No.",ItemVendor."Item No."); //Actualiza el 2do subform
Key := "No." + ItemVendor."Item No."; //Coge nueva clave
END;


Teneis un ejemplo en la sección de downloads

1 comentario:

Victor dijo...

Hola. Interesante blog. Tienes un montón de utilidades, la verdad, bastante esenciales para el dia a dia.
Me ha llamado la atención este post ya que fué una de las primeras cosas que intenté en un form con 2 subforms que tuve que hacer. Pensé en actualizarlo en función del tiempo, pero cuánto considera un usuario que es un tiempo correcto?
Al final, la solución que desplegué fue utilizar un archivo xml (automation de Microsoft XML). Lo creo en el form principal y lo modifico en el primer subform al cambiar de registro. Luego uso el evento del xml onreadystatechange en el form principal para obtener el registro del primer subform y pasarselo como parámetro al segundo :)