La Web del Programador: Comunidad de Programadores
 
    Pregunta:  61480 - PROBLEMAS AL ACTUALIZAR UN COMBO
Autor:  Gabriel Chavez Carrera
Por favor necesito ayuda...
Un abrazo a todos los colegas de LWP, mi problema es este... En una formulario de (Alta de Proveedores) ... Lo que pasa es que tengos varios combos, y los estoy llenandos con con tablas por ejemplo (Estados.bdf, Ciudades.dbf) Anteriormente mi problema era llenarlos, y lo hice desde el entorno de datos pero en el PROCEDIMIENTO (BeforeOpen Tables) Y ahi si puedo abrir mas de una tabla... pero eso ya lo solucioné gracias a uds... El detalle esta en que por ejemplo Si el Nombre del Estado o la Ciuadad No esta, El usuario en ese momento tendra que dar de alta La Nueva Ciudad o Estado, Y para eso en el Evento Key press de Combo Hago esto:

if lastkey() = -1
*//Se manda a llamar un formulario
do form altaciudades
endif

*// El -1 Es el codigo ASCII de F2, al ser presionado manda a llamar el Formulario para dar de alta La nueva Ciuda...

Todo va bien, abre el formulario, agrega la Nueva Ciudad, Pero al momento de Cerrar el Formulario de Ciudades, me manda un ERROR de que no se puede accesar a la tabla seleccionada, lo curioso es que actualiza los datos de la tablaCiudades...?, En el PROCEDIMIENTO INIT del Formulario AltaCiudades No abro ninguna Tabla, por que las tablas los abro cuando lleno los combos, Y como no puedo abrir 2 veces una tabla... En el Destroy Solo Pongo CLOSE DATABASES ALL

Mi problema es ese, que cuando Doy de alta una nueva Cd. Al momento de cerrar el Formulario me dice que no se puede accesar a la tabla seleccionada, y Le doy aceptar y aceptar y Hasta me desaparece el Combo... (y lo mismo pasa el De Estados), Por favor es un proyecto para de fin de curso, necesito su ayuda... Si kieren mas Detalles Con gusto se las enviaré... [email protected] , Un saludo y gracias de antemano.

  Respuesta:  Javier Caballero
Lo principal a tu problema es el lugar en el que pones en uso las bases de datos, lo correcto es hacerlo en el ENTORNO DE DATOS, de la forma en que mejor lo administres, ( BUFFERMODEOVERRIDE). Esto lo tienes que hacer en el formulario principal, en los secundarios que llamas para hacer el ADD de los registros, directamente no tienes que hacer ni un USE ni un CLOSE o algo de eso, ya que este segundo formulario tiene que asumir que las bases se encuentran abiertas.
Lo que tendrias que hacer una ves agregado el registro correspondiente, es actualizar tu combo, una idea es...

thisform.formu1.rowsource='select * from pais into cursor tm_pais'
con esto actualizaria la lista del combo...

Saludos,

Javier Caballero
Asunción - Paraguay