Error al avanzar a un siguiente registro en Access

Tengo un formulario llamado "Documentos Alertas" el cual tiene el campo txtNroDeCarta, txtmail

Coloque un botón para extraer estos dos datos y colocarlos en un informe llamado "Informe1" y enviarlos por e-mail. He probado con estas (02) rutinas que conseguí en el foro, pero ambas solo toman el primer registro y muestran el error que adjunto, en ambos casos el cursor ilumina

Rutina-1

For i = 1 To Form.Recordset.RecordCount
DoCmd.OpenReport "informe1", acPreview, , "[fNro] = Forms![Documentos Alertas]![txtNumeroDeCarta]"
DoCmd. SendObject acSendReport, "Informe1", "pdf", txtmail,,, "Referencia Carta Nº " & " " & txtNumeroDeCarta,, True
DoCmd.GoToRecord , , acNext
Next

Rutina-2

Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from [Inscripcion de Documentos]")
Do While Not rs.EOF
DoCmd.OpenReport "informe1", acPreview, , "[fNro] = Forms![Documentos Alertas]![txtNumeroDeCarta]"
DoCmd. SendObject acSendReport, "Informe1", "pdf", txtmail,,, "Referencia Carta Nº " & " " & txtNumeroDeCarta,, True
DoCmd. Close acReport, "Informe1"
Rs. MoveNext
Loop

Por que me manda error en las sentencias DoCmd. GoToRecord,, acNext o rs. MoveNext

PD.- Estoy probando cada una de estas rutinas con un botón diferente y el error se da al momento de moverme a un registro

¿Qué estoy haciendo mal?

1 Respuesta

Respuesta
2

Del primer código no te voy a decir nada, porque es una opción que no me gusta nada.

En el segundo código tienes un "error" de concepto: si abres un recordset para recorrer todos los registros, y luego no lo usas para filtrar el informe, el código pierde todo su sentido...

Tu rutina 2 debería ser así:

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Select * from [Inscripcion de Documentos]")

rs.MoveFirst
Do While Not rs.EOF
DoCmd.OpenReport "informe1", acPreview, , "[fNro] =" & rs!NumeroDeCarta
DoCmd. SendObject acSendReport, "Informe1", "pdf", rs!mail,,, "Referencia Carta Nº " & " " & rs!NumeroDeCarta,, True
DoCmd. Close acReport, "Informe1"
Rs. MoveNext
Loop

Lo que te marco en negrita tendrás que ponerlo como tu tengas los nombres en tu tabla [Inscripción de Documentos], yo he supuesto que los campos se llaman NumeroDeCarta y mail, pero puedo estar equivocado.

También puedes cambiar la línea:

Set rs = CurrentDb.OpenRecordset("Select * from [Inscripcion de Documentos]")

por esta otra:

Set rs = Me.RecodsetClone

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas