Access - Regla validación en formlulario con datos en Tabla

 
Vista:
sin imagen de perfil

Regla validación en formlulario con datos en Tabla

Publicado por KEVIN (3 intervenciones) el 03/09/2022 15:27:07
Buenas Comunidad

Tengo un formulario en access Con su respectivo subformulario, este subform alimenta una tabla que tengo en mi base, en este caso se manejan unos numeros de talonarios, alguien me puede dar una idea que si el numero del talonario que yo ingrese está incluida en otra tabla, me deje guardar el dato, sino esta incluida no deja ingresar.

Ej: Serie de Numeros 1147182 al 1147195
Si yo ingreso el 1147190, me deja guardar el dato, si yo incluyo 1147199 como no está incluida no deja guardar

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo

Regla validación en formlulario con datos en Tabla

Publicado por Eduardo (317 intervenciones) el 03/09/2022 16:44:02
¿Cómo registra la serie de números, es decir, en 2 campos, por ejemplo, desde y hasta? o en un solo campo, por ejemplo ¿1147182 al 1147195? ¿1147182-1147195?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Regla validación en formlulario con datos en Tabla

Publicado por Anonimo (3316 intervenciones) el 03/09/2022 20:38:39
Una vez ingresado el numero del talón se localiza (DCount condicionado) si existe en la otra tabla, si la función devuelve un cero es que no esta y cualquier otro valor (que debería ser un uno ya que no habrá repetidos) es el indicador de que se puede continuar.

En el propio cuadro de texto que recoge el dato (en mi ejemplo: Texto4) una tabla (en mi ejemplo: Talones) y campo de la tabla: N_Talon:

Propiedades del cuadro de texto ===> pestaña DATOS
===> Regla de validación:
DCont("*";"Talones";"N_Talon ='" & [Texto4] & "'")<>0

(Si el dato fuera numérico)
DCont("*";"Talones";"N_Talon =" & [Texto4])<>0


===> Texto de validación:
El talón no esta disponible
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo

Regla validación en formlulario con datos en Tabla

Publicado por Eduardo (317 intervenciones) el 04/09/2022 16:48:02
Asumo que registra los talonarios en una tabla.


talonario_00

Con base en esta tabla creo un cuadro combinado en un formulario para seleccionar la serie del talonario, igualmente, adiciono un cuadro de texto para registrar el talonario a validar.


talonario_01

Para esto utilizo 2 funciones.

Función para extraer parte de una cadena con base en el separador y posición.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function extrae(pvstring As Variant, pipart As Integer, Optional psDeli As String = ",")
 
 'Functión para extraer parte de una cadena
 'Parámetros:
 '           pvstring=Cadena de texto a minipular
 '           pipart=Parte de cadena a extraer de acuerdo con el separador,
 '                  por ejemplo,1 primera parte, 2 segunda parte
 '           psdeli=Separador, opcional por defecto coma (,) pero pueder otro como guion(-)
 'Elaborada por: Eduardo Pérez Fernández
 'Fecha: 06/09/2021
 
 
  extrae = Null
 
  If Mid(pvstring, 1, 1) = psDeli Then
    pvstring = "nd" & pvstring
  End If
 
 If IsNull(pvstring) Then Exit Function
 
 extrae = Trim(Split(pvstring, psDeli)(pipart - 1))
 
End Function

Función para validar si el número está en el rango.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Function esta_en_rango(ByVal desde As Long, ByVal hasta As Long, ByVal elnumero As Long) As Boolean
 
 'Función para saber si un número está en un rago, por ejemplo, en un talonario del 0001 al 0099
 'Requiere de la funcion extrae() para tomar el primero y el segungo número
 'Ejemplo:
 '          Determinar si el número 12530 está en el talonario 12525 Al 12535
 '          esta_en_rango(extrae("12525 Al 12535",1,"Al"),extrae("12525 Al 12535",2,"Al"),12530)
 '          Retorna Verdadero porque el número 12530 está entre el rango 12525 al 12535
 
 If desde <= elnumero Then
   If elnumero <= hasta Then
     esta_en_rango = True
   Else
     esta_en_rango = False
   End If
 Else
    esta_en_rango = False
 End If
 
 
End Function

Código del evento Después de actualizar el cuadro de texto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub ctlNro_BeforeUpdate(Cancel As Integer)
 
   If IsNull(Me.ctlNro) Then
     Cancel = True
     Exit Sub
   End If
 
    If esta_en_rango(extrae(Me.cboSerie.Column(1), 1, "Al"), extrae(Me.cboSerie.Column(1), 2, "Al"), Me.ctlNro) Then
        MsgBox "El número " & Me.ctlNro & " está en la serie", vbInformation, "Le informo"
    Else
      MsgBox "El número " & Me.ctlNro & " no está en la serie", vbInformation, "Le informo"
      Cancel = True
    End If
 
End Sub

En la función anterior si el separador es guión (-) puede reemplazar "Al" por "-" u otro separador.

Utilizo mucho este sistema para controlar los talonarios de un programa de rifas, en donde se hacen entrega de talonarios y van vinculados con un vendedor, de tal forma que no se registre una boleta al vendedor que no corresponda a la serie del talonario.

Esta es una idea y depende bastante como se registra la serie a validar. Si quiere el ejemplo lo puede solicitar a [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Regla validación en formlulario con datos en Tabla

Publicado por KEVIN (3 intervenciones) el 07/09/2022 23:58:53
Muchisimas gracias por su ayuda Sr Eduardo, muchas bendiciones, Saludos desde Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar