Como poner en rojo un cuadro de texto en access

Tengo un formulario en access donde tengo diseñado 2 cuadros de texto(inicial y el otro final) y un botón de ejecutar para que me cumpla la función de que al yo llenar estos cuadros de texto con números me actualice una base de datos. Mi duda es que quisiera mediante un código vba en access el cuadro de texto(inicial como el final) me busque el numero en la base de datos y si este no se encuentra detenga el procedimiento, me ponga el rojo el cuadro de texto y me ponga el cursor en ese cuadro de texto que me origino el problema(ya sea en el inicial o en el final), o sea lleno el cuadro de texto inicial con un numero por luego el cuadro final con otro numero por, al presionar el botón ejecutar primero me busque el numero introducido en el cuadro de texo inicial si esta que pase al cuadro de texto final; si no esta que se detenga el código, me ponga ese cuadro de texto en rojo y me coloque el cursor, este mismo procedimiento suceda con el cuadro de texto final, si los dos están correctos entonces que me ejecute la consulta de actualizar

2 respuestas

Respuesta
1

No necesita la función NZ() porque la función DCOUNT() siempre retorna cero (0) si no hay datos. Solo daría error si no existe el campo sobre el cual se cuenta. Le preparé este ejemplo:

TENGO LA SIGUIENTE TABLA QUE LLAMO tblcompras

FORMULARIO DE VALIDACIÓN

Hago la validación sobre el campo nrofact

Observe que el valor inicial existe en la columna. Al hacer clic en el botón Consultar obtengo el resultado, queda en rojo el campo Nro Final, porque el número de factura 30 no existe.

Ahora cambio el valor inicial por 12 y el final por 25, como ninguno de los 2 existe los campos quedan con fondo rojo.

CÓDIGO DEL BOTÓN CONSULTAR

Private Sub btnConsultar_Click()
  Dim lnInicial As Integer
  Dim lnFinal As Integer
  If IsNull(Me.ctlInicial) Or IsNull(Me.ctlFinal) Then
    MsgBox "No hay datos completos para validar", vbInformation, "Le cuento"
    Exit Sub
  End If
  lnInicial = DCount("*", "tblcompras", "nrofact=" & Me.ctlInicial)
  lnFinal = DCount("*", "tblcompras", "nrofact=" & Me.ctlFinal)
  If lnInicial = 0 Then
    Me.ctlInicial.BackColor = vbRed
  Else
    Me.ctlInicial.BackColor = vbWhite
  End If
   If lnFinal = 0 Then
    Me.ctlFinal.BackColor = vbRed
  Else
    Me.ctlFinal.BackColor = vbWhite
  End If
  If lnicial = 0 Or lnFinal = 0 Then
    'Suspender el procedimiento
    Exit Sub
  End If
  'Sino continuar con la actualización
End Sub

Al procedimiento le faltaría el control de errores, esa se la dejo.

Hola buenas noches, su respuesta fue excelente como siempre y me dio muchísimo resultado cuando lo probé pues es lo que estaba buscando. Pero para el proyecto me da el siguiente error, cuando inserto el código y le doy al botón ejecutar me da un error de tiempo de ejecución diciéndome que no coinciden los tipos de datos en la expresión de criterios. Cuando hago el análisis me doy cuenta de que tengo el campo que quiero comprobar en texto corto y tu código lo tienes para un campo numérico. Cuando intento cambiar la variable tipo integer por string me sigue dando el mismo error

¿Existe una manera que e mismo código que me enviaste me sirva para un capor tipo texto? ¿Cómo se puede hacer?

Envíeme a [email protected] la tabla que contiene el campo a validar y reviso.

Respuesta
1

Por lo que dices da la impresión de que lo quieres al pulsar el botón. Vamos a suponer que la tabla se llama Agenda y los campos de los cuadros de texto Inicial y Final se llaman también así. En las propiedades del botón, en el evento Al hacer clic crea un procedimiento de evento y entre Private Sub y End Sub pon

If nz(dcount(*","agenda","inicial=" & me.nombrecuadrotextoinicial & ""))=0 then

cuadrodetextoInicial.backcolor=vbred

cuadrodetextoinicial.setfocus

exit sub

else

lo que quieres que haga en caso de que si exista

end if

If nz(dcount("*","agenda","final=" & me.nombredelcuadrodetetxtofinal & ""))=0 then

cuadrodetextofinal.backcolor=vbred

cuadrodetextofinal.setfocus

exit sub

else

lo que quieres que haga en caso de que exista

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas