Poner valor secuencial al abrir formulario independiente

Tengo un formulario independiente "F_AltaFActura" y necesito que al abrirlo me ponga en un cuadro de texto "NumFactura" el valor que le corresponde teniendo en cuenta los registros que ya existen en la Tabla "T_Facturas"

Le tengo puesto el siguiente código:

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Right(NumFactura,4) FROM T_Facturas WHERE mid(NumFactura, 4,4)=" & Year(Me.Fecha) & " ORDER BY Right(NumFactura,3)")
If rst.RecordCount = 0 Then
Me.NumFactura = "FAC-" & Year(Me.Fecha) & "/001"
Else
rst.MoveLast
Me.NumFactura = "FAC-" & Year(Me.Fecha) & "/" & Format(rst(0) + 1, "000")
End If
rst.Close
Set rst = Nothing

Pero no me funciona y no se donde puede estar el error

2 Respuestas

Respuesta
1

Una alternativa:

Me.NumFactura = "FAC-" & Year(Date) & Format(Nz(Dmax("Val(Right(NumFactura,3))","T_Facturas","val(Mid(NumFactura,4,4)) = " & Year(Date)),0)+1, "\/000")

Una anotación:
No va a funcionar de forma correcta ninguna solución aportada, porque las respuestas han copiado 'el error' de la respuesta original:

En la función MID se utilizan como parámetros 4 y 4 -lo que no es correcto- en todas ellas lo correcto es 5 y 4.

En definitiva: obtener la cadena de texto comenzando en la posición CINCO (quinto carácter) y con una longitud de 4 caracteres, para que el dato devuelto sea el año con sus cuatro cifras.

Me.NumFactura = "FAC-" & Year(Date) & Format(Nz(Dmax("Val(Right(NumFactura,3))","T_Facturas","val(Mid(NumFactura,5,4)) = " & Year(Date)),0)+1, "\/000")

Por mi pate pedirte disculpas por no dar una respuesta alternativa correcta.

Muchas gracias Enrique:

La verdad es que he puesto las dos opciones , (la suya y la de Eduardo9y ninguna funcionaba. ahora, con la corrección que has introducido, va perfectamente. GRACIAS 

Respuesta
1

Pruebe con este código

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT Max(Right(NumFactura,4)) FROM T_Facturas WHERE mid(NumFactura, 4,4)=" & Year(Me.Fecha) & " ORDER BY Right(NumFactura,3)")
If rst.RecordCount = 0 Then
Me.NumFactura = "FAC-" & Year(Me.Fecha) & "/001"
Else
Me.NumFactura = "FAC-" & Year(Me.Fecha) & "/" & Format(rst(0) + 1, "000")
End If
rst.Close
Set rst = Nothing

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas