Numeradores para comprobantes con Access en instrucción SQL

Tengo el siguiente inconveniente. En Argentina tenemos distintos tipos de comprobantes: Facturas, Notas de Crédito, Notas de Débito y cada uno de ellos pueden ser A o B, y cada uno de ellos lleva su consiguiente numeración.

Tengo una tabla para llevar dichas distintas numeraciones, la cual esta compuesta del los campos Id, Letra, tipocomp, NumFac. Debo incrementar en 1 el último campo cada vez que se emita un comprobante según el tipo de comprobante emitido.

Esto he tratado de hacer hasta ahora pero no consigo redactar la sentencia correctamente:

Dim ltfac As Integer, nmfac As Long

nmfac = txtNumFac.Value            'capturo el valor de la factura en curso
nmfac = nmfac + 1                         'Incremento el valor en 1 para la proxima factura
ltfac = txtLetraFac.Value               'tomo el Id del tipo de comprobante en curso para asignar el incremento al contador adecuado

DoCmd.RunSQL "UPDATE maeLetraPtoFac SET maeLetraPtoFac.NumFac=&nmfac WHERE maeLetraPtoFac.Id=&ltfac"
'trato de insertar el incremento en la tabla que lleva los distintos contadores de acuerdo al tipo de comprobante

La sentencia SQL me da error de sintaxis, pero no encuentro la forma correcta.

2 Respuestas

Respuesta
2

Tienes mal la SQL, ponla así:

DoCmd.RunSQL "UPDATE maeLetraPtoFac SET maeLetraPtoFac.NumFac=" & nmfac & " WHERE maeLetraPtoFac.Id=" & ltfac

Respuesta

En México es algo similar o igual yo lo eh solucionado así,

La primera consulta que hago es para saber el numero máximo y le incremento 1 y la segunda es para saber cuantos registros hay si la tabla esta vacía pone 1.

Saludos¡ Espero te sirva

Function FactNext(Serie As String) As Integer

Dim dbs As DAO.Database
Dim rt As DAO.Recordset
Dim rtFiltered As DAO.Recordset
Dim rtC As DAO.Recordset
Dim rtCFiltered As DAO.Recordset

Set dbs = CurrentDb
Set rt = dbs.OpenRecordset("Select max (folio) From Factura Where serie ='" & Serie & "'")
Set rtC = dbs.OpenRecordset("Select count (folio) From Factura Where serie ='" & Serie & "'")

If rtC.Fields(0) = 0 Then
FactNext = 1
Else
FactNext = rt.Fields(0) + 1
End If

rt.Close
Set rt = Nothing
dbs.Close
Exit Function

End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas