Formulario continuo

En un formulario continuo ¿cómo puedo activar un botón de comando al modificar el contenido de un textbox de un registro?

1 Respuesta

Respuesta
2
Si utilizas un formulario continuo y pones botones a nivel del detalle (a nivel de registros), al activar/desactivar, cambiar títulos o hacer cualquier cosa con el botón, lo harás con todos los botones de todos los registros.
La solución: saca los botones a nivel del formulario (encabezado o pie) y no los pongas en el otro lado.
También puedes crear un formulario/subformulario, poniendo los botones en el formulario y los datos 'continuos' en el subformulario. Esta forma queda 'estéticamente' más bonita.
Ante todo gracias por tu pronta y amable respuesta.
Creo que no me supe explicar bien. Lo que necesito es lograr que el botón de comando1 este activado siempre que haya algún textbox1 cuyo valor no coincida con el campo texbox2 en cualquier registro de los que componen el form.
Lo que tengo hecho es crear un recordset y llenarlo con los registros del form (Set rst_precio = Me.Form.Recordset) y luego recorrerlo y comprobar que la condición se cumpla. Esto funciona, pero es lento, y tiene un efecto visual de scroll que no es nada profesional. Lo malo es que no se me ocurre otra forma de hacerlo.
Si tienes alguna idea te agradecería me la comentases
Un saludo
Si ambos campos están asociados a una tabla, podrías realizar una consulta que te diga si hay alguno diferente. Por ejemplo:
me.casillaVerificacionDiferencias=dlookup("nz(campoTextBox1,'')<>nz(campoTextBox2,'')","nombreDeLaTabla","")
Eso iría en los eventos 'al cambiar' de los campos 1 y 2.
Otra forma sería generar un procedimiento (sub) o función que te devuelva ese valor. Eso sí, sería siempre que ambos valores se guarden en una tabla.
El problema estaría en que si la tabla es demasiado grande, esa consulta podría ser lenta. Pero si son muchos los registros... tardará con una consulta, con una función o moviéndote a través del formulario.
La última forma que se me ocurre sería algo más complicada, aunque mucho más rápida.
Al abrir el formulario recorrerías todos los registros y guardarías en un campo el número de diferencias. Al activar un registro guardarías en una variable si ese registro tiene diferencia entre los dos campos, de forma que en los eventos "al cambiar" de ambos campos sumarías 1 al 'contador de diferencias' si al activar el registro los dos campos eran iguales y ahora no, y restarías 1 cuando al activar el registro había diferencias y ahora no las hubiese.
Al final sólo tendrías que comprobar si ese contador está a 0.
De momento no se me ocurren muchas más formas. Mira a ver si te sirve alguna de ellas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas