Campo Calculado

08/09/2010 - 22:40 por kes | Informe spam
Hola,
Tengo una tabla FACTURAS en la que tengo los siguientes campos:
- Nº de Factura
- Codigo de Cliente

El número de factura se compone de los siguientes elementos:
AAMMCCCNNN
Donde:
- AA se refiere a los 2 últimos dígitos del año de la fecha actual.
- MM se refiere a los 2 dígitos del mes de la fecha actual
- CCC se refiere al código de cliente indicado en el registro actual
- NNN se refiere a un contador que se desprende del último valor
existente en la tabla de FACTURAS añadiéndole +1

Me gustaría tener un formulario, donde indicando primero el código de
cliente, me calcule de forma automática el nuevo nº de factura.

Alguien me puede echar una mano???
Muchas gracias
Jose A. Quesada

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
09/09/2010 - 13:00 | Informe spam
Hola

Sería interesante que nos comentaras cuando quieres que se inicialice
el contador ¿al iniciar el año? ¿al comenzar el mes?

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#2 kes
09/09/2010 - 15:46 | Informe spam
On 9 sep, 13:00, José Mª Fueyo wrote:
Hola

Sería interesante que nos comentaras cuando quieres que se inicialice
el contador ¿al iniciar el año? ¿al comenzar el mes?

Salu2
José Mª Fueyo
[MS MVP Access]



Hola,
Tienes razón. El contador se inicia con cada nuevo año.

Muchas gracias y un saludo

Jose A. Quesada
Respuesta Responder a este mensaje
#3 José Mª Fueyo
09/09/2010 - 18:51 | Informe spam
Hola
Esta función hace lo que quieres. Hay que pasarle como parámetro el
año como string

<pego>
Public Function CalculaID(sAno) As String
Dim rs As DAO.Recordset
Dim sSQL As String, iIntermedio As Integer, sSalida As String
sSQL = "SELECT Last(Tabla1.ID) AS UltimoDeID " & _
"FROM Tabla1 " & _
"WHERE (Left([ID],4)='" & sAno & "');"
Set rs = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot)
iIntermedio = CInt(Mid(rs.Fields(0), 7)) + 1
sSalida = Format(Date, "yyyymm") & Format(iIntermedio, "0000")
rs.Close
Set rs = Nothing
CalculaID = sSalida
End Function
</pego>

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#4 kes
10/09/2010 - 08:03 | Informe spam
On 9 sep, 18:51, José Mª Fueyo wrote:
Hola
Esta función hace lo que quieres. Hay que pasarle como parámetro el
año como string

<pego>
Public Function CalculaID(sAno) As String
    Dim rs As DAO.Recordset
    Dim sSQL As String, iIntermedio As Integer, sSalida As String
    sSQL = "SELECT Last(Tabla1.ID) AS UltimoDeID " & _
           "FROM Tabla1 " & _
           "WHERE (Left([ID],4)='" & sAno & "');"
    Set rs = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot)
    iIntermedio = CInt(Mid(rs.Fields(0), 7)) + 1
    sSalida = Format(Date, "yyyymm") & Format(iIntermedio, "0000")
    rs.Close
    Set rs = Nothing
    CalculaID = sSalida
End Function
</pego>

Salu2
José Mª Fueyo
[MS MVP Access]



Muchas gracias Jose Mª,

Lo voy a probar, ya que al final he hecho algo más rudimentario, que
me ha funcionado, pero lo que realmente me interesa es poder crear
funciones como la que me describes.

Lo que he hecho es que una consulta me calcule el último código
autonumérico, y concaternarlo a un campo calculado que obtenga los
dígitos del año y del mes de una fecha de referencia preestablecida.
Este campo calculado lo coloco en un subformulario presente en el
formulario principal, y en este un botón que vuelca el valor del campo
calculado en el valor del campo de la nueva factura. Como decía: muy
rudimentario.

Voy a probarlo y te cuento.

Muchas gracias!!!

Jose A.
Respuesta Responder a este mensaje
#5 José Mª Fueyo
10/09/2010 - 09:39 | Informe spam
Hola
Ten en cuenta, que esto lo he hecho sobre la marcha, en un momento. No
lo tomes como algo definitivo, sino como algo que te ilumine. Te toca
a ti mejorarla

Salu2
José Mª Fueyo
[MS MVP Access]
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida