Captura de datos

Cordial Saludo!
Soy nuevo en el foro y estoy tratando de aprender visual foxpro de manera autodidacta.
Mi pregunta es la siguiente: Estoy tratando de hacer un sistema para condominios, ya definí la base de datos y las relaciones entre ellas.
Estoy haciendo un formulario para la captura de datos del edificio: código, nombre, número de aptos, vigencia de la factura, interés de mora y alícuota.
Quiero que cuando se presiones el botón Agregar, el código del Edificio se asigne automáticamente, lo muestre en su textbox y continúe pidiendo el resto de datos. Eso lo resolví bien fácil con go bottom e incrementar 1 al código... Es posible un forma mucho más fácil pero es la que tengo a disposición con mi escaso conocimiento del visual foxpro
La alícuota se calcularía automáticamente dividiendo 100 entre el número de apartamentos. (Sin problemas).
Cuando se presione el botón grabar, que abra la tabla correspondiente y grabe un nuevo registro, esto último lo entiendo y no hay problemas.
Mi consulta es sobre el botón agregar y que caiga a pedir datos a partir de la descripción, se calcule la alícuota automáticamente, pida el resto de datos y active el botón grabar...
Gracias de antemano!

1 Respuesta

Respuesta
1
Bienvenido a Todoexpertos !
Me da gusto que hayas elegido sumarte al foro.
En cuanto a tu consulta entiendo todo perfectamente a excepción que no sé cual es tu duda o problema.
Si bien me dices lo que deseas hacer con tu botón guardar no hiciste la pregunta !
Pásame el código de tu botón guardar junto con tu explicación del problema o duda.
Hola, Unisoft, gracias por responder.
El problema es el siguiente:
En el campo código no hay problemas, funciona bien tal cual te lo expliqué, pero cuando coloco el setfocus al campo descripción no pasa nada, se quedan todos los textbox inactivos. Probé con todos los focus posibles y nada. La opción Enable está en .T. al igual que la opción visible.
Intenté rehacer el formulario pero con campos sin relacionar con la tabla y funciona bien: incremento el código y el setfocus al campo descripción funciona perfectamente. En este segundo caso no encuentro como hacer para que una vez se introduzca el número de apartamentos se calcule la alícuota, la muestre y se sitúe en el botón grabar. El código que introduzco al campo apartamentos es thisform.alicuota.value=100/thisform.apartamentos.value, también intenté thisform.alicuota.value=100/apartamentos. No funciona como con el campo código que va muy bien.
Yo soy analista de sistemas y programé en foxpro para DOS, pero tengo muchos años que no programaba y se me olvidó el lenguaje; la programación orientada a objetos es totalmente desconocido para mi aunque con este intento que hago con el visual foxpro he comprendido el funcionamiento de esta filosofía. Solo me falta el conocimiento del lenguaje como tal...
Gracias
Existe una diferencia muy grande entre la programación en Fox para DOS y la de Visual FoxPro.
Antes programábamos en forma lineal y secuencial. Tanto es así que los que programábamos en las primeras versiones de fox desarrollamos algunas habilidades y esquemas de pensamiento que a la hora de programar en Visual FoxPro nos juegan una mala pasada.
La diferencia fundamental entre ambas formas de programar es que, como te decía más arriba, la programación en Fox en lineal, seguía una secuencia lógica, mientras que en Visual FoxPro, en la programación orientada a objetos, todo está orientado a los objetos, sus propiedades, eventos y métodos.
Resultaría difícil de explicarte todo esto por este medio, pero te sugiero que antes de proseguir con tu proyecto te tomes un tiempo y leas la ayuda de VisualFoxPro que es muy completa y te será de mucha utilidad.
Antes de ello, estaremos hablando en idiomas distintos !
En cuanto a tu consulta, y a modo de ejemplo de mi afirmación anterior te comento lo siguiente:
En VisualFoxPro disponemos de los formularios (como objetos contenedores de otros objetos). Cada elemento gráfico que aparece en la pantalla de diseño es un objeto, y cada objeto tiene un conjunto de propiedades, eventos y métodos que son los lugares en donde debemos programar.
Una de las características de los formularios es que tienen un Entorno de Datos (Dataenvironment) que nos permite seleccionar y agregar a nuestro formulario la o las tablas que utilizaremos. Sólo basta agregar una tabla al formulario para que el sistema se haga cargo de tareas como abrir y cerrar la tabla en forma automática cada vez que se ejecuta el formulario, entre otras.
Regresando a tu planteo, y para darte una respuesta que te sirva necesitaría ver algunos segmentos de código, para tratar de detectar donde está el problema.
De todas formas, si lo que deseas hacer es un formulario de alta de nuevo registro, te sugiero que hagas lo siguiente:
1) Incluye en el entorno de datos de tu formulario la tabla sobre la que deseas agregar el registro.
2) Agrega a tu formularios los controles necesarios para la introducción de los datos para el nuevo registro, pero no los vincules al campo de la tabla, es decir debes dejar en blanco la propiedad controlsource de cada control.
3) Luego, en el evento click del botón guardar debes programar la verificación de los datos que el usuario ha ingresado y finalmente el grabado del nuevo registro en la tabla. Para grabar el nuevo registro te sugiero que trates de utilizar el comando insert into en lugar del append blank y el replace.
Finalmente, si durante la carga de datos (antes de dar click al botón grabar) deseas que algunos controles tomen valores de cálculos, debes utilizar los eventos interactivechange para programar el comportamiento de los objetos dependientes.
Espero que puedas comprender el esquema de razonamiento.
Si tienes dudas consulta la ayuda de Visual FoxPro y tómate el tiempo necesario para probar las funcionalidades que serán toda una novedad para ti.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas