
Access 2013 se cuelga con error 2501 al cancelar exportación a pdf de un informe
Publicado por Sergio (9 intervenciones) el 30/12/2014 02:14:52
Hola,
Estoy creando una aplicación en access en la que tengo que generar e imprimir facturas a pdf, el problema lo tengo en que al generarlas si me cancelan el proceso salta el dichoso error 2501, lo capture o no con "On Error GoTo.." la aplicación se me cuelga y tengo que reiniciar access. El resto del código me funciona correctamente, o eso creo
Este es el código:
A ver si alguien puede arrogarme algo de luz porque me tiene frito.
Un saludo y gracias de ante mano.
Sergio Esteban
Estoy creando una aplicación en access en la que tengo que generar e imprimir facturas a pdf, el problema lo tengo en que al generarlas si me cancelan el proceso salta el dichoso error 2501, lo capture o no con "On Error GoTo.." la aplicación se me cuelga y tengo que reiniciar access. El resto del código me funciona correctamente, o eso creo

Este es el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Dim ruta As String
Dim strNombre As String
Dim i As Integer
Dim rst As DAO.Recordset
Dim Ssql As String
On Error GoTo err
Application.Echo False
ruta = Application.CurrentProject.Path & "\Facturas\"
Ssql = "SELECT TbCabeceraFactura.IdPropuesta, TbCabeceraFactura.RazonSocial, TbLineasdeFactura.id, TbLineasdeFactura.NFActura, TbLineasdeFactura.FechaFactura, TbLineasdeFactura.Enviada " & _
"FROM " & _
"TbCabeceraFactura INNER JOIN TbLineasdeFactura " & _
"ON TbCabeceraFactura.IdPropuesta = TbLineasdeFactura.IdPropuesta " & _
"WHERE " & _
"(((TbLineasdeFactura.FechaFactura) Between #1/1/2015# And #31/1/2015#) AND ((TbLineasdeFactura.Enviada)=False))" & _
"ORDER BY TbCabeceraFactura.IdPropuesta"
Set rst = CurrentDb.OpenRecordset(Ssql)
If rst.EOF = False And rst.BOF = False Then
rst.MoveLast
rst.MoveFirst
For i = 1 To rst.RecordCount
rst.Edit
rst!NFActura = NumFactura() 'función que calcula el numero de factura
rst!Enviada = True
rst.Update
strNombre = rst!NFActura & "_" & rst!RazonSocial & ".pdf"
DoCmd.OpenReport "InfFactura1", acViewReport, , "Nfactura=" & rst!NFActura, acHidden
DoCmd.OutputTo acOutputReport, "InfFactura1", "*.pdf", ruta & strNombre, False, "" 'crea el pdf en la carpeta facturas
DoCmd.Close acReport, "infFactura1"
rst.MoveNext
Next i
Else
MsgBox "No hay facturas pendientes de emitir en el periodo seleccionado", vbInformation, "4HomeMenaje - Facturación"
End If
rst.Close
Set rst = Nothing
Application.Echo True
err:
If err.Number = 2501 Then
MsgBox "Se ha cancelado la emisión de facturas " & vbCrLf & "La última factura emitida es: " & strNombre, vbCritical, "4HomeMenaje - Facturación"
rst.Close
Set rst = Nothing
Exit Sub
Else
MsgBox "numero de error: " & err.Number & vbCrLf & "Descripción: " & err.Description, vbCritical, "4HomeMenaje - Facturación"
rst.Close
Set rst = Nothing
Exit Sub
End If
A ver si alguien puede arrogarme algo de luz porque me tiene frito.
Un saludo y gracias de ante mano.
Sergio Esteban
Valora esta pregunta


0