Bueno no entiendo muy bien porque tu profesor te obliga a abrir y cerrar la tabla, supongo que para ahorrar recursos pero te cuento que si usas SELECT basada en tablas no abiertas para crear tus cursores para los combos dichas tablas quedan abiertas a menos que las cierres luego de esta sentencia con un USE IN MISTABLAS, te recomiendo que deshabilites los formularios de ALTA y EDICION mientras tiene el foco el formulario con la grilla, y deshabilites el formulario que tiene la grilla mientras estas en los otros formularios de ALTA y/o EDICION y antes de salir de estos formularios lo vuelvas a habilitar, esto te evitara que se cambie el foco entre formularios y/o controles que no deben tener el foco y evitando errores para los que tus formularios no esten preparados.
Por otro lado yo creo que consume mas recursos estar abriendo y cerrando tablas sobre todo si es una pantalla que se usa mucho.
Ten en cuenta que cuando Haces ABM's si abres las tablas de modo exclusivo estas limitando a otros usuarios el acceso a dichas tablas en sistemas en redes, pero en contra partida si utilizas en modo compartido no puedes hacer eliminacion fisica de registros marcados con DELETE, estos dos temas debes estudiarlo bien antes de diseñár tus pantallas sobre todo para uso en redes, no asi cuando la aplicacion es monousuario.
Existen muchas alternativas solo debes estudiarlas, podrias llenar tus combos por programación una vez y no utilizar cursores sobre todo si el contenido de los combos son constante.
Yo te cuento que yo todas las tablas que voy a utilizarlas las abro en el evento THISFORM::INIT() y no las cierro hasta estar seguro que no los usare mas, las tablas que dependen de valores ingresados en los controles de mi pantalla si las abro despues pero siempre de una vez y no las suelto hasta no necesitarla mas, y las cierro en THISFORM::RELEASE() y los cursores y/o auxiliares las envio al disco local.
Deberias postear mas informacion para obtener respuestas de mejor calidad.