¿Como comprobar numero de 8 dígitos introduciendo menos dígitos?

En una tabla, ARTIC, existe un campo denominado PRVEREF, número de 8 cifras, compuesto por tres dígitos del proveedor y cinco para la referencia. La referencia puede ser de 1 a cinco dígitos, rellena a ceros por la izquierda las referencias menores a cinco dígitos. Intento que al introducir -tres dígitos coma referencia- (ej. Xxx, xx), en campo REFER formulario, compruebe si existe. Hice la comprobación que describo pero cuando el ultimo digito introducido es cero falla (150,150) porque actúa como (150,15).

Dim BCAR As String, MPOS As Integer, LTEX As Integer, NREF
        BCAR = ","
        MPOS = InStr(1, REFER, BCAR, vbTextCompare)
        LTEX = Len(REFER)

        Select Case MPOS
            Case 0 To 1
                If LTEX = 8 Then
                    NREF = REFER
                Else
                    If LTEX > 0 Then
                        NREF = (Left(REFER, LTEX) * (1 & String(8 - LTEX, "0")))
                    Else
                        NREF = 0
                    End If
                End If
            Case 2 To 8
                NCTA = (Left(REFER, MPOS - 1) * (1 & String(8 - MPOS + 1, "0"))) + Right(REFER, LTEX - MPOS)
        End Select
'----Comprobar que existe -------------------------------------------
'If (Eval("DLookUp(""[PRVEREF]"",""[ARTIC]"",""[PRVEREF] = Form.[REFER] "") Is Null")) Then
        Dim FILTRO As String, TREF
        FILTRO = "PRVEREF=" & NREF
        TREF = DLookup("PRVEREF", "ARTIC", FILTRO)
        If IsNull(TREF) Then
            Beep
            MsgBox "La REFERENCIA introducida NO existe."
            DoCmd.CancelEvent
            REFER.Undo
        End If
End If

No puedo cambiar el campo de número a texto porque es una base heredada y tiene enlace con otras tablas y bases de Access y desconozco a cuantos procesos afecta.

1 respuesta

Respuesta
2

José Ignacio: Si lo que quieres buscar es solo la Referencia, compara >>

Val(Right(PRVEREF, 5)) con el número que estás entrando o algo parecido.

Mis saludos >> Jacinto

El campo REFER es un control independiente en un formulario y no un campo tabla.

El campo de la tabla PRVEREF es numérico de 8 dígitos y siempre es de 8, si el proveedor es 100 y la referencia 1, en PRVEREF es 10000001.

Lo que pretendo es introducir por ejemplo 100,1 o 100,11 o 100,111 0 100,1111  y que compruebe si existe para extraer datos de ese articulo

José Ignacio: Aunque no lo he probado yo haría algo así.

Private Sub REFER_AfterUpdate()
Dim ElNumero As Long
ElNumero = CLng(Left(Me.REFER,3) & Format(Mid(Me.REFER,5),"00000"))
If Nz(DCount("CodProducto","PRVEREF","CodProducto = " & ElNumero),0) > 0 Then
    'Aquí el código de lo que quieras hacer
    'DoCmd.OpenForm.......
End If
End Sub

He supuesto como ves que la Tabla se llama PRVEREF, el Campo CodProducto y el Cuadro de Texto donde entras el xxx,zabc como REFER. Si no se llaman así los cambias. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas