Access - MoveNext no funciona en informe

   
Vista:

MoveNext no funciona en informe

Publicado por Alejandro (14 intervenciones) el 12/05/2016 20:07:24
Tengo este evento en un botón para imprimir informes.
Selecciono el modelo de informe que quiero y le doy imprimir.
El caso es que siempre imprime el primer registro, aunque haya 6 registros, imprime 6 informes pero del mismo registro, el MoveNext no funciona.
No veo donde está el error..............

A ver si alguien me lo puede aclarar.
Muchas gracias.

Ahora que lo estoy escribiendo caigo en que quizás puede ser porque cierro y abro el informe cada vez que imprime. Copié el código de otro Form, y quizás sea eso, tendré que probar a borrar el cierre del Informe.

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
Private Sub Imprimir_Click()
 
    Dim txtCriterio As String
    Dim rs1 As DAO.Recordset
    Set rs1 = CurrentDb.OpenRecordset("CodigosImprimir")
    rs1.MoveFirst
 
    If IsNull(Me.TipoInforme) Or IsEmpty(Me.TipoInforme) Then
        MsgBox "      Tienes que seleccionar un Modelo de Informe  ", , "Atención!"
 
    ElseIf Me.TipoInforme = "UNO" Then
        ...................
    ElseIf Me.TipoInforme = "DOS" Then
        .................
    ElseIf Me.TipoInforme = "TRES" Then
        Do While Not rs1.EOF()
            txtCriterio = "Id = " & Me.nCodigoCliente
            DoCmd.OpenReport "INF_Concesion_LOB", acViewPreview, , txtCriterio
            DoCmd.PrintOut acPages, , , , Me.nCopias
            DoCmd.Close acReport, "INF_Concesion_LOB"
            rs1.MoveNext
            MsgBox Me.nCodigoCliente
        Loop
    End If
 
End Sub
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

MoveNext no funciona en informe

Publicado por Enrique Heliodoro (1663 intervenciones) el 12/05/2016 21:21:27
Un análisis superficial indica que se abre el mismo informe y con los mismos datos (txtCriterio = "Id = " & Me.nCodigoCliente) tantas veces como registros existan en 'rs1' sin importar ni utilizar al recordset para nada (bueno ... si, para contar el numero de impresiones y si se utiliza 'Me.nCopias' el papel debería durar muy poco)
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

MoveNext no funciona en informe

Publicado por Alejandro (14 intervenciones) el 15/05/2016 08:58:16
Aparte de la ironía, que a veces está bien, he dejado la pregunta en el foro para ver si alguien tiene la amabilidad de ayudarme y decirme donde está el error.
Acaso me equivoqué de foro?
Gracias.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Imprimir_Click()
 
    Dim txtCriterio As String
    Dim rs1 As DAO.Recordset
    Set rs1 = CurrentDb.OpenRecordset("CodigosImprimir")
    rs1.MoveFirst
 
    If IsNull(Me.TipoInforme) Or IsEmpty(Me.TipoInforme) Then
        MsgBox "      Tienes que seleccionar un Modelo de Informe  ", , "Atención!"
 
    ElseIf Me.TipoInforme = "UNO" Then
        ...................
    ElseIf Me.TipoInforme = "DOS" Then
        .................
    ElseIf Me.TipoInforme = "TRES" Then
        Do While Not rs1.EOF()
            txtCriterio = "Id = " & Me.nCodigoCliente
            DoCmd.OpenReport "INF_Concesion_LOB", acViewPreview, , txtCriterio
            rs1.MoveNext
        Loop
    End If
 
End Sub
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

MoveNext no funciona en informe

Publicado por Enrique Heliodoro (1663 intervenciones) el 15/05/2016 23:05:14
Creo que la solución se resuelve leyendo el mensaje de respuesta con atención y dedicarle dos minutos al contexto, por ejemplo:

.- ¿Por qué hay una parte remarcada con negrita? ....


.- Lo de seis copias (o seiscientas) dependerá del numero de registros que devuelva el recordset ¿se ha diseñado con ese propósito? ....

Una mirada que tenga un propósito diferente a copiar/pegar, se preguntaría para que se abre el recordset, propongo dos opciones:

.- una el uso actual: un contador de copias (el numero de registros que devuelva el recordset)
.- dos el uso adecuado (y supongo que pretendido): TOMAR UN DATO de referencia del recordset y aplicarlo como CRITERIO (en lugar del denostado dato presente en el formulario y que NO VARIA en el transcurso del recorrido por los registros del recordset)

En fin, que para numero de copias (si es que ese dato se utiliza) ya esta lo marcado en negrita_
.......
DoCmd.PrintOut acPages, , , , Me.nCopias
......


(el siguiente paso seria hacer el trabajo de otros, pero ... no me apetece, cada uno debe de utilizar su cabeza, las pistas y aclaraciones responden al interrogante para quien busca soluciones)
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

MoveNext no funciona en informe

Publicado por Alejandro (14 intervenciones) el 16/05/2016 22:15:58
Gracias maestro......
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