Poner formato condicional en Botón de Comando

En un Formulario tengo un botón de comando que al hacer click, me abre otro formulario que me sirve para asociar documentos al registro:

La idea es ponerle al botón alguna condición que indique al usuario que ese registro ya tiene documentos asociados, Por ejemplo cambiar el color del fondo del boton, o algo similar.

¿Alguna sugerencia?

1 Respuesta

Respuesta

No sé como determinas si tiene o no expedientes, así que voy a suponer

Supongamos que tengo un formulario, con un botón de comando, al que le pongo como fondo el blanco. Y voy a decirle que si al activar el registro, hay más países del nombre que figura en ese registro, el fondo del botón sea amarillo y si no es así, que siga blanco.

Cuando voy a un registro en que se cumple la condición de que hayas más paises como el de él

Si llego a un registro en que no se cumple

El código del evento al activar registro es

Private Sub Form_Current()
If DCount("*", "clientes", "pais='" & Me.Pais & "'") > 0 Then
Comando11.BackColor = vbYellow
Else
Comando11.BackColor = vbWhite
End If
End Sub

Pero para ser más categóricos convendría saber la instrucción que usas para contar.

Lo he montado como me indicas y funciona "a medias".

Me explico:

Como se trata de asociar documentos a registros, los tengo relacionados por expediente, es decir, si el número de expediente del formulario es "38", al asociar los documentos, éstos, todos ellos,  quedan registrados con el mismo Expediente "38", para que queden asociados.

Si hacemos clic en el comando "Documentos" del formulario 

Se nos abre este

Aquí vamos todos los documentos que tengan alguna vinculación con el Registro.,  el problema se plantea cundo hago clic por primera vez en el comando "DOCUMENTOS"

Ocurre, como se ve en la imagen, que ya se nos abre con el número de expediente de forma automática para no tener que escribirlo a mano. 

Para ello, le tengo puesto en el evento "Al activar registro" del formulario "F_Documentos", el siguiente código:

ElseIf CurrentProject.AllForms("F_Abonados_Betis").IsLoaded Then
Expediente = Forms!F_Abonados_Betis!Id

Lo que motiva, que el comando  "DOCUMENTOS"  aparezca con el fondo amarillo, siempre y en todos los registros, tengan, o no tengan documentos asociados.

Espero haberme explicado de forma entendible.

Como podria solucionar esto? ¡Amigo Julian!.

Vamos a ver si consigo explicarme. No le hagas caso al diseño de las tablas y los formularios porque trato de aprovechar tablas de la base de datos Neptuno. Supongamos que tengo una tabla Tabla1 con los datos de Idcliente y NombreCliente, que correspondería a la tuya de Datos Pertonales, y voy a usar el Idcliente como tu Expte.

También tengo una tabla Pedidos, que equivaldría a la tuya de Documentos

Verás que el cliente 4 Around... no tienepedidos( documentos) asociados

Si construyo el formulario Tabla1, como te decía

Y en el evento Al activar Registro le pongo

Private Sub Form_Current()
If Nz(DCount("*", "pedidos", "idcliente =" & Me.IdCliente & "")) >= 1 Then
Documento.BackColor = vbYellow
Else
Documento.BackColor = vbWhite
End If
End Sub

Cuando más tarde esté en un registro que tenga pedidos( documentos) asociados el botón se pondrá amarillo, y si no tiene seguirá en blanco.

En el evento Al hacer clic del botón Documento le pongo

Private Sub Documento_Click()
If DCount("*", "pedidos", "idcliente=" & Me.IdCliente & "") >= 1 Then
DoCmd.OpenForm "pedidos", , , "idcliente=" & Me.IdCliente & "", , acDialog
Else
DoCmd.OpenForm "pedidos", , , , acFormAdd, acDialog
End If
End Sub

Es decir, que si en Pedidos(documentos) este Idcliente tiene registros asociados, abra el formulario en vista diálogo con todos esos registros, pero que si no tiene ninguno, lo abra en un registro nuevo para añadir uno.

Por otro lado, en el  evento Al activar registro del formulario Pedidos le pongo

Private Sub Form_Current()
If CurrentProject.AllForms("tabla1").IsLoaded And Me.NewRecord Then
IdCliente = Forms!tabla1!IdCliente
End If
End Sub

Es decir, que si el formulario Tabla1 está cargado y es un registro nuevo, que el valor de idcliente(expte) sea igual al del formulario Tabla1.

Entonces

Como el Idcliente1 tiene registros asociados el botón se ve en amarillo. Al pulsarlo

Me abre el formulario Pedidos(documentos) con los asociados. Cuando en un registro no tiene

Al pulsar el botón, se abre Pedidos y como es un registro nuevo, ya me pone el Idcliente( en el combinado muestra el nombre, pero el valor es el de Idcliente, ya te dije que uso formularios ya hechos)

Relleno Datos

Y al cerrar, cuando vaya a ese registro

Ya me aparece en amarillo. En el evento Al cerrar del formulario Pedidos, le tengo puesto

Private Sub Form_Close()
Forms!tabla1.Requery
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas