Access - Usando ListCount automáticamente ...

 
Vista:

Usando ListCount automáticamente ...

Publicado por CyRuS (127 intervenciones) el 15/03/2007 20:19:26
Tengo un código que usando los valores de un desplegable, me ejecuta un
informe y me lo exporta a un archivo snapshot automáticamente.Es decir,
primera fila y se ejecuta el botón, luego pasa a la segunda , etc hasta
llegar al final del ListCount. En las propiedades del informe tengo puesto
que Al No Haber Datos no me abra el informe porque me aparecería vacío:

Private Sub Report_NoData(Cancel As Integer)
MsgBox "NO HAY DATOS"
End
End Sub

Pero claro, esto es muy útil cuando el informe lo abro uno a uno con el
ratón. Sin embargo, cuando se está ejecutando la rutina de exportar
automáticamente a un .snp, cuando llega a un informe sin datos, me sale el
mensaje de que no hay datos, y se me para mi código en Visual. Yo lo que
quiero es que si quiere aparecer el msgbox bien, pero que NO ME PARE LA
RUTINA.

¿Cómo se puede hacer eso? La culpa la tiene el End, no? (si quitará el End
de "al no haber datos", me ejecuta toda la rutina pero me exporta un montón
de archivos que están vacíos, y tengo que andar uno por uno mirando haber
si tienen datos o no)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Evitar que el informe vacío detenga la rutina de exportación

Publicado por Alejandro (4142 intervenciones) el 04/08/2023 20:16:14
Para evitar que el informe vacío detenga la rutina de exportación, puedes hacer lo siguiente:

1. En lugar de usar `End` en el evento `Report_NoData`, simplemente configura una variable booleana para indicar si se encontraron datos o no.

2. Después de recorrer todos los registros en el bucle del desplegable, verifica el valor de la variable booleana. Si no se encontraron datos en ningún informe, muestra el mensaje al final de la rutina.

Aquí tienes un ejemplo de cómo hacerlo:

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
Private Sub btnExportar_Click()
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim strSQL As String
    Dim encontradoDatos As Boolean
 
    ' Crea un objeto Database y un Recordset
    Set db = CurrentDb
    strSQL = "SELECT DISTINCT CampoDesplegable FROM TuTablaDesplegable"
    Set rs = db.OpenRecordset(strSQL)
 
    ' Inicializa la variable que indica si se encontraron datos
    encontradoDatos = False
 
    ' Recorre todos los valores del desplegable
    While Not rs.EOF
        Dim valorDesplegable As String
        valorDesplegable = rs("CampoDesplegable")
 
        ' Filtra el informe según el valor del desplegable
        DoCmd.OpenReport "NombreInforme", acViewPreview, , "CampoInforme='" & valorDesplegable & "'"
 
        ' Verifica si el informe tiene datos y exporta a snapshot si es el caso
        If Not Me.Report.HasData Then
            MsgBox "NO HAY DATOS para " & valorDesplegable
        Else
            encontradoDatos = True
            DoCmd.OutputTo acOutputReport, "NombreInforme", acFormatSNP, "C:\Ruta\Informe_" & valorDesplegable & ".snp"
        End If
 
        DoCmd.Close acReport, "NombreInforme"
        rs.MoveNext
    Wend
 
    ' Cierra el recordset y la base de datos
    rs.Close
    db.Close
 
    ' Muestra el mensaje si no se encontraron datos en ningún informe
    If Not encontradoDatos Then
        MsgBox "NO SE ENCONTRARON DATOS en ningún informe."
    End If
End Sub

Recuerda reemplazar "TuTablaDesplegable" con el nombre de la tabla donde se encuentran los valores del desplegable, "CampoDesplegable" con el nombre del campo desplegable, "NombreInforme" con el nombre real de tu informe y "CampoInforme" con el nombre del campo en el informe que coincide con el valor del desplegable. También cambia "C:\Ruta\Informe_" a la ruta y el prefijo de nombre que desees para los archivos exportados.

Con este código, la rutina de exportación continuará ejecutándose aunque encuentre informes vacíos, y mostrará un mensaje al final si ninguno de los informes tenía datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar