Está en la página 1de 2

COMBO AVISADOR1

Supongamos que tenemos una tabla con los datos de


nuestros clientes. Uno de los campos nos sirve para
introducir una nota/observación/incidencia sobre el cliente.
La información que nos interesa es:

– La tabla se llama <TClientes>


– El campo clave principal se llama [IdCliente] → De
tipo numérico
– El campo con el nombre del cliente se llama [NomCliente] → De tipo texto
– El campo que recoge la nota o incidencia se llama [IncidCliente] → De tipo texto o
memo

En nuestra BD tenemos algún o algunos formularios (para introducir pedidos, facturas, etc.) y,
para seleccionar al cliente, hemos insertado un cuadro combinado, el cual hemos configurado a
través del asistente para que nos muestre el cliente.

Ese cuadro combinado nos guarda, según lo hayamos configurado, o bien el código de cliente
(un valor numérico) o el nombre del cliente (un valor texto). Desarrollaremos el ejemplo para
ambos supuestos.

La finalidad es que después de elegir el cliente en ese combo, si tiene alguna observación o
incidencia, nos salga un mensaje recordándonos dicha incidencia.

Lo primero que vamos a hacer va a ser comprobar el nombre del combo. Para ello sacamos sus
propiedades y nos vamos a la Pestaña Otras → Nombre, y ahí vamos a escribir cboCliente.

Todavía en las propiedades del combo nos vamos a la Pestaña Eventos → Después de
actualizar, y le generamos el siguiente código (pequeño botón de puntos suspensivos → click →
Generar código)

A) SI EL VALOR QUE GUARDA EL COMBO ES UN NÚMERO


Private Sub cboCliente_AfterUpdate()
'Declaramos las variables
Dim vCli As Long
Dim vIncid As Variant
'Cogemos el valor del combo
vCli = Nz(Me.cboCliente.Value, 0)
'Si no hay ningún valor seleccionado el combo devuelve cero
'En ese caso salimos sin hacer nada
If vCli = 0 Then Exit Sub
'Buscamos en la tabla TClientes si ese cliente tiene incidencia
vIncid = DLookup("[IncidCliente]", "TClientes", "[IdCliente]=" & vCli)
'Si hay incidendia nos aparece un mensaje con el texto de la incidencia.
'Si no hay incidencia no hace nada
If Not IsNull(vIncid) Then
MsgBox vIncid, vbExclamation, "AVISO"
End If

1 La BD de ejemplo os la podéis bajar aquí.

1
Visítame en http://siliconproject.com.ar/neckkito/
End Sub

B) SI EL VALOR QUE GUARDA EL COMBO


ES UN TEXTO


Private Sub cboCliente_AfterUpdate()
'Declaramos las variables
Dim vCli As String
Dim vIncid As Variant
'Cogemos el valor del combo
vCli = Nz(Me.cboCliente.Value, "")
'Si no hay ningún valor seleccionado el combo devuelve una cadena vacía
'En ese caso salimos sin hacer nada
If vCli = "" Then Exit Sub
'Buscamos en la tabla TClientes si ese cliente tiene incidencia
vIncid = DLookup("[IncidCliente]", "TClientes", "[NomCliente]='" & vCli & "'")
'Si hay incidendia nos aparece un mensaje con el texto de la incidencia.
'Si no hay incidencia no hace nada
If Not IsNull(vIncid) Then
MsgBox vIncid, vbExclamation, "AVISO"
End If
End Sub

Y eso es todo.

Salu2!

2
Visítame en http://siliconproject.com.ar/neckkito/

También podría gustarte