Access - Error con el SendObject acSendReport

 
Vista:

Error con el SendObject acSendReport

Publicado por Dangelo (5 intervenciones) el 12/12/2011 16:22:20
Resulta que tengo una rutina de envio de un reporte a diferentes usuarios, pero cuando se envia al primero en la lista detiene la sentencia, como veran la idea es que tome el Loop y envie la informacion segun la cantidad de usuarios, lo examine paso a paso y envia el correo al primer usuario y da por terminada la rutina.

Agradezco su colaboracion.

les envio parte de la instruccion para que se guien:

FormatoExp = "FormatoSnapshot(*. Snp)"

Desc = Consulta que me relaciona los usuarios para envial informacion...
Set Desc_rs = CurrentDb. OpenRecordset(Desc)
If Desc_rs. RecordCount > 0 Then

Do While Not Desc_rs. EOF
Correo = Desc_rs! Funcionario

On Error GoTo ErrorXp

DoCmd. SendObject acSendReport, "Entrega_Doc_Aud", FormatoExp, Correo, "", "", "Relacion documentos enviados por la IPS", "Adjunto relacion de los documentos solicitados por usted y que ya fueron enviados por la IPS. ", False

Desc_rs. MoveNext

Loop
Else
DoCmd. Close acForm, "DESCARGUE_DOCUMENTOS"

End If
DoCmd. Close acForm, "DESCARGUE_DOCUMENTOS"
ErrorXp:

If Err. Number = 2282 And SoloUnError = False Then
FormatoExp = "SnapshotFormat(*. Snp)"
SoloUnError = True
Resume

End If
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 Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error con el SendObject acSendReport

Publicado por Neckkito (1157 intervenciones) el 13/12/2011 08:17:44
Hola, Dangelo:

En principio no veo ninguna "cosa rara" en tu código, por lo que no te sabría decir cuál es el error. Hay una reiteración en el cierre del documento si la consulta no devuelve registros; es decir
Si no hay registros -> Cierra el formulario
Y a continuación, tras el End If, le vuelves a decir -> Cierra el formulario
También el control de errores es quizá un poco atípico, pero bueno...
De todas maneras lo anterior no influye en tu problema.

Para mi gusto tendrías que decirle, antes del Do, que el puntero del recordset se moviera al primer registro, de esta manera:

If Desc_rs. RecordCount > 0 Then
Desc_rs.MoveFirst
Do While Not Desc_rs. EOF

Por otra parte, para saber si la consulta te está funcionando bien, puedes poner, para testeo, algo que te indique cuántos registros te está devolviendo la consulta. Por ejemplo, podrías escribir:

Set Desc_rs = CurrentDb. OpenRecordset(Desc)
MsgBox Desc_rs.RecordCount
If Desc_rs. RecordCount > 0 Then

Así, si el mensaje te muestra que sólo hay un registro, ya sabes por qué sólo te envía un mail.

Si todo lo anterior te funciona bien pues... quizá alguien vea alguna cosa que yo no veo, pero poca cosa más puedo aportar por mi parte.

Bueno... Espero que te funcione la cosa.

Un saludo,

Neckkito (... http://neckkito.eu5.org ...)
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

Error con el SendObject acSendReport

Publicado por Dangelo (5 intervenciones) el 13/12/2011 14:34:49
Hola Neckkito agradezco tu pronta respuesta.

La verdad me raya este problema, coloque las sugerencias que me hiciste, efectivamente el MsgBox me cuenta mas de un Funcionario, pero aun asi cuando envia el reporte por correo al primer funcionario en lista me finaliza la sentencia.
Lo mejor es que antes funcionaba correctamente de un tiempo para aca es que esta asi.

De todas formas muchas gracias, y si encuentro el problema lo comentaré...

Un Saludo

Dangelo
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error con el SendObject acSendReport

Publicado por Neckkito (1157 intervenciones) el 13/12/2011 14:45:52
Hola!

Se me acaba de ocurrir otra cosa: en el control de errores añade un aviso, de la siguiente manera:

ErrorXp:
MsgBox "Se ha producido un error"
If Err. Number = 2282 And SoloUnError = False Then

Así sabrás si por casualidad se produce un error tras el envío del primer correo, y por eso te sale del Do...Loop (y en consecuencia no te envía el resto de correos).

A ver si hay suerte.

Neckkito
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

Error con el SendObject acSendReport

Publicado por Dangelo (5 intervenciones) el 13/12/2011 20:54:48
Hola...

Jajaja me rio por que no le encontramos cabeza y cola, no tampoco me genera un segundo error.

No hay suerte

Muchas gracias

Dangelo
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error con el SendObject acSendReport

Publicado por Neckkito (1157 intervenciones) el 14/12/2011 09:18:42
Hola, Dangelo:

Lamento que no se te arregle el problema. Si utilizas como cliente de correo Microsoft Outlook puedes echar un vistazo a este ejemplo (http://neckkito.eu5.org/index.php?option=com_content&view=article&id=118:y-dosde-mail&catid=48:ejemplos-de-codigo&Itemid=55).

No creo que tengas ningún problema para adaptarlo a tu BD y probar si con este otro sistema te funciona.

Una vez más, a ver si hay suerte.

Un saludo,

Neckkito
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

Error con el SendObject acSendReport

Publicado por Dangelo (5 intervenciones) el 14/12/2011 16:06:44
Hola Neckkito.
Agradezco tu colaboracion, me parece muy bueno el ejemplo que envias, en un principio tenia una instruccion mas o menos parecida a la tuya, la diferencia como te das cuenta es que el usuario no debia digitar nada solo dar un click y ya, la reduje y termine trabajando con el SendObject para enviar correos con y sin adjuntos, pero viendo todo este problema retomare tu ejemplo y lo aplicare nuevamente a mi base.

Te agradezco mucho

Dangelo
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

Error con el SendObject acSendReport

Publicado por Dangelo (5 intervenciones) el 14/12/2011 20:34:06
Hola Neckkito

Ya cuadre con el ejemplo que tienes pero lo unico que comento es que debes tener en cuenta el error que genera por formato de Snapshot.

Hay unos equipos que los deja exportar el archivo con formato "Snapshot Format(*.snp)" y otros con "Formato Snapshot(*.snp)", ya lo verifique con varios equipos de donde laboro.
en resumidas cuentas esa parte la deje asi:

FormatoExp = "Snapshot Format(*.snp)"

DoCmd.OutputTo acOutputReport, "Entrega_Doc_Aud", FormatoExp, ReporteAud, False

ErrorXp:

If Err.Number = 2282 And SoloUnError = False Then
FormatoExp = "Formato Snapshot(*.snp)"
SoloUnError = True
Resume

End If
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error con el SendObject acSendReport

Publicado por Neckkito (1157 intervenciones) el 14/12/2011 22:55:21
Hola, Dangelo:

Te agradezco el comentario. La verdad es que sabía de la existencia del "supuesto" error, dado que viene de una traducción al español de algo que debería haber quedado en inglés.

Juan M.Afán de Ribera lo explica así:
<<Bien, aún así, si utilizamos las versiones Access XP o 2003, nos encontraremos con un pequeño problema, y es que con la instalación de estas versiones se graba en el registro de Windows un valor erróneo para el formato de exportación snapshot. Este valor erróneo consiste simplemente en que se ha traducido al castellano un texto que debería estar en inglés (lo que me hace suponer que esto debe pasar para todas las versiones que no sean en inglés). Donde debería decir "snp,,1,Snapshot Format (*.snp),0" el registro de Windows tiene "snp,,1,Formato Snapshot (*.snp),0". >>

Lógicamente yo testeé el ejemplo que te he recomendado y en mi Access no me dio ningún error, por lo que no fui a caer en este punto.

De una manera u otra te agradezco mucho la puntualización. Por cierto, ¿te ha llegado a funcionar el código y has podido enviar todos los mails que querías? Es pura curiosidad morbosa

Un saludo,

Neckkito
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