Graba Registros en Blanco


([N3] Alejandro) #1

Tengo un problema que pensé tenia solucionado. En un formulario si se ejecuta el botón Aceptar y no hay ningún campo con contenido, se graba dicho registro. Hice un evento que se ejecuta en el control del botón aceptar, en la señal de botón pulsado.-este evento contiene validación de un campo que no esté vacío. si está vacío entonces una instrucción de mensaje al usuario, luego una instrucción para establecer foco al campo requerido, luego una instrucción de Set retorno proceso=no, y luego la instrucción de Finalizar proceso. - Efectivamente lo ejecuta, sale el mensaje que se programo, pero no establece el foco al control que se le asigna y hace caso omiso de un retorno de proceso=No y a la siguiente instrucción finalizar proceso y graba el registro en blanco.
que estaré omitiendo? antes si lo hacia. en este momento estoy trabajando con la ultima versión. Gracias a quien pueda colaborarme..


([N4] mdelgado) #2

@Luis

Hola Luis el proceso es el siguiente:

1) Crea un evento que asignas al botón ACEPTAR del formulario.
2) En dicho vento, primero haz las comprobaciones que necesites. Si una comproación no es correcta simplemente pon el foco en el objeto que desees mediante Interfaz:Establecer Foco y pon una instrucción "Finalizar Proceso"
3) Como uktimo comando del evento (si todo ha ido bien) deberás poner un comando Interfaz:Aceptar.

Saludos
Miguel Delgado






([N3] Alejandro) #3

mdelgado Gracias por tu colaboración pero sigo en el mismo lio y no entiendo. a ver el proceso esta de la siguiente forma:
Un formulario con 2 o tres campos a capturar, por lo menos un campo debe quedar con información. Existe un Botón aceptar y en sus propiedades está boton por defecto = Falso, Comando = Aceptar sin Cerrar. Existe un Evento asignado a este botón y en la propiedad señal=Botón pulsado. Dicho evento comprueba con if(#NAME:isEmpty()) si el campo quedó vacio, si es asi se emite un mensaje al usuario, se establece el foco en ese campo = interfaz:establecer foco(#NAME), set retorno de proceso= NO, y por ultimo Finalizar proceso. y aún así me graba el registro en blanco, ni siquiera permanece en el formulario dando el foco al campo asignado en la instrucción. --esto me estaba trabajando antes, será por la versión?--- *-también he probado con el botón aceptar y los comandos: Comando = Aceptar y Comando = Aceptar controlado**-


([N1] comercial) #4

Hola, quita el comando 'aceptar sin cerrar' al botón, la técnica consiste en que el botón no ejecuta comando ninguno o en su caso 'ejecutar evento', y le indicas el evento que ya tienes, en ese evento tienes que seguir lo que te dice mi tocayo, Miguel Delgado.

Saludos.
Miguel.


([N3] Alejandro) #5

.arhes2000. Gracias, esa opción la voy a probar a ver como me va. y ya estaré comentando. -pero quiere decir esto que los formularios que se elaboran por defecto hacen grabación de registros en blanco-.?


([N1] comercial) #6

Cloro, si los registros no tienen valor en todos los campos, eso es problema tuyo no del sistema, siempre que tenga un ID el registro es válido.

Saludos.
Miguel.


([N3] Alejandro) #7

Comercial.arhes2000 . bueno te comento, prové en los formularios que me presentaban problema y.. listo. Quite el comando 'aceptar sin cerrar' al botón, y lo cambié por 'ejecutar evento´y bien listo hace lo que se necesita. Pero es que tengo otros formularios que apenas tienen de captura de un nombre. y estos tienen el botón aceptar con el comando 'aceptar sin cerrar' y además un evento de validación para no aceptar el campo en blanco, y sucede que si teclean <Enter>, sale el aviso del evento programado, más otro aviso de vclient que dice" La Ficha xx Está Vacia Rellene algún Campo" y asigna el foco al campo respectivo, es decir no cierra ni graba el formulario. *- es decir si hay un control para no grabar fichas en blanco *-. Esto mismo es lo que intentaba hacer con unos nuevos formularios pero no me funciono, teniendo los mismos tipos de instrucción en los formularios. esto es lo que no me Explico.
slds.