Formato nº de factura

Tengo una base de datos para hacer facturas en access 2003.
La cuestión es que el código del formulario facturas hace que el numero de factura tenga el formato "20080001" y a mi me gustaría que pusiera "001/08", este es el código.
Function SigFact() As Long
Dim XFiltro$, XNumero&
XFiltro = "instr (Id,'" & Format(Date, "yyyy") & "')=1"
XNumero = Val(Mid(Nz(DMax("Id", "Facturas", XFiltro), Format(Date, "yyyy") & "0000"), 5)) + 1
SigFact = Format(Date, "yyyy") & Format(XNumero, "0000")
End Function
He cambiado SigFact = Format(Date, "yyyy") &"/" & Format(XNumero, "0000"), entre otras cosas y me da el error: "El valor que introdujo no es valido para este campo."
El formulario esta basado en la tabla Facturas, donde el "Id" es el numero y está como numérico, Entero largo, Indexado sin duplicado. El año al que hace referencia el numero de la factura, es la fecha de la factura en formato año.(YYYY)
Esto es todo.

1 Respuesta

Respuesta
1
Reo que tu problema esta en el formato de la función por eso no te reconoce la "/", prueba a declararla como string (cadena de texto), ya que es un dato con el que no vas a operar, simplemente te sirve para indicar un orden. Seguramente tendrás que cambiar el formato de campos de la tabla
Hola, es cierto lo que dices, al declarar la función como String y el Id como texto funciona, incluso en la tabla, funciona, pero el "Id" no se incrementa en la unidad cada vez que haces una factura nueva, si cambiamos en el valor de XNumero el Mid por Left, entonces va bien, pero el botón de previsualizar recibos de factura en el formulario siempre me dice que no hay recibo a imprimir, el código es:
Private Sub ImpRec_Click()
On Error GoTo HayError
DoCmd.RunCommand acCmdSaveRecord
Dim stDocName As String
stDocName = "ImpRecibo"
DoCmd.OpenReport stDocName, acViewPreview, , "[Id] = " & Me![Id]
Salir:
Exit Sub
HayError:
'MsgBox Err.Description
Resume Salir
End Sub
Si suprimimos: "[Id] = " & Me![Id], se abre el informe recibos pero evidentemente no solo el de la factura activa, sino el de todas las facturas.
Tal vez sean pocos datos para intentar una solución a este tema, si necesitas que te aclare alguna otra cuestión, pídemelo.
Gracias por tu interés, un saludo
El filtro que le pones a la acción openReport, exprésalo así
Docmd.OpenReport stDocName,acViewPreview, , Id=Formularios![nombre del formulario]![Id]
"Me!" no en todas las condiciones lo reconoce
Si tuvieras algún problema no dudes en comentármelo y buscaremos otra solución. Perdona por la demora
Hola, he probado con el cambio que sugieres y no surte ningún efecto, yo creo que el problema radica en que el Id, (clave principal de la tabla donde se basa el formulario facturas), esta declarada como texto, porque si la declaramos como numero, funciona bien, tal vez alguna función dentro del código general del formulario no esta declarada correctamente. La declaración de filtro es esta: Public SelFecha As Object 'La utiliza el calendario para pasar la fecha seleccionada a los formularios
Public PedirFiltro As Integer 'Se utiliza para que pida filtro al imprimir en determinados sitios y en otros no.
Gracias una vez más y un saludo.
Intentalo declarando "PedirFiltro" como String, ya que el Id es texto.
Puedes probar también en el evento "Al Cargar" del informe, cambiarle el origen de datos (RecordSource) con una instrucción SQL, y que sea esta la que te haga el filtro
Private Sub Form_Load()
Dim strSql As String
strSql = "SELECT * FROM [Nombre de Tabla] WHERE ID= (Formularios![nombre del formulario]![Id]))" ;
Me.RecordSource = strSql
End Sub
Hola, en primer lugar agradecerte tu interes en mi problema, "Te has portao Tio", bueno barbaridades a parte, indirectamente con tu ayuda lo he solucionado de la siguiente manera:DoCmd.OpenReport stDocName, acViewPreview, , "[Id]=" & "'" & Me![Id] & "'"
No se si es correcto o no pero funciona de momento sin ningún tipo de error.
Gracia por vuestro trabajo a todos los Expertos y especialmente a ti.
Un saludo y hasta siempre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas