Access - VBA procedimientos de evento

 
Vista:

VBA procedimientos de evento

Publicado por josepjosep (2 intervenciones) el 19/03/2009 17:44:02
Buenas.
Aviso que soy novato en VBA y aunque los informes que genero en Access2003 están bien, no consigo terminar correctamente una tabla de avisos que he creado. Tengo una tabla con tres posibles acciones (clic en el botón correspondiente) :

1. definir el gestor de correo (funciona OK);
2. puedo "ver" (en un informe de formato snp) todas las tareas pendientes del personal de la empresa (funciona OK);
3. notificar por email esos mismos informes (funciona a medias).

El problema radica en que al pedir la notificación por email, quiero que envíe los informes que genere en ese momento, pero no me genera ninguno (sí que me prepara los emails correctamente y me 'adjunta' los temporales que deberían haberse generado, pero como no los genera, no puede enviar nada)
No se dónde he metido la pata. Si alguien puede echarme una mano, lo agradecería.
Éste es el código, por si acaso:

------------------------------------------------------------------------------------------------------------------------------------------
Option Compare Database
------------------------------------------------------------------------------------------------------------------------------------------
Dim Gestor As GestorCorreo

Private Sub Correo_Click()
On Error Resume Next

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frm_gestor_correo"
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Tareas_Click()
On Error Resume Next
Dim stDocName As String

stDocName = "inf_tareas_pendientes"
If IsNull(Me.Nombre) Then
DoCmd.OpenReport stDocName, acPreview
Else
DoCmd.OpenReport stDocName, acPreview, , "[Persona]='" & Me.Nombre & "'"
End If
End Sub
------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Notificar_Click()
On Error Resume Next

Dim stDocName As String, mensaje As String, asunto As String, email As String, thunder As Integer
Dim db As Database, rs As Recordset, i As Integer, archivo As String
asunto = "Informe de Tareas pendientes"
mensaje = "El informe adjunto contiene un resumen de las tareas que tiene pendiente de completar." & Chr(13) _
& Chr(13) & "Puede consultar los detalles en las diferentes bases de gestión del sistema."
stDocName = "inf_tareas_pendientes"
thunder = ComprobarThunderbird
Select Case thunder
Case 0
Gestor = DevuelveDatosCorreo
Case 1
Gestor.Ejecutable = "THUNDERBIRD"
End Select
Application.Echo False
If IsNull(Me.Nombre) Then
Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT * FROM cons_personal_email")
rs.MoveLast
rs.MoveFirst
Do Until rs.EOF
If rs!Red = 0 Then
NoHayDatos = True
DoCmd.OpenReport stDocName, acViewPreview, , "[Persona]='" & rs![Alias] & "'"
If NoHayDatos Then
DoCmd.OutputTo acOutputReport, , "Formato Snapshot (*.snp)", "D:Tareas ISOInforme de Tareas pendientes-" & rs!Alias & ".snp"
Select Case Gestor.Ejecutable
Case "MSIMN.EXE"
mc_EnviarEmailOE5 asunto, Nz(rs!email), "", "", "D:Tareas ISOInforme de Tareas pendientes-" & rs!Alias & ".snp", mensaje
Case "OUTLOOK.EXE"
EnviarOutlook asunto, Nz(rs!email), "", "", "D:Tareas ISOInforme de Tareas pendientes-" & rs!Alias & ".snp", mensaje
Case "THUNDERBIRD"
f_envio_thunderbird asunto, Nz(rs!email), "D:Tareas ISOInforme de Tareas pendientes-" & rs!Alias & ".snp", mensaje
End Select
DoCmd.Close acReport, stDocName
End If
Else
NoHayDatos = True
DoCmd.OpenReport stDocName, acViewPreview, , "[Persona]='" & rs![Alias] & "'"
If NoHayDatos Then
archivo = rs!ruta & "Informe de Tareas pendientes-" & rs!Alias & "-" & Format(Now, "dd-mm-yy--hh-mm-ss") & ".snp"
DoCmd.OutputTo acOutputReport, , "Formato Snapshot (*.snp)", archivo
DoCmd.Close acReport, stDocName
End If
End If
rs.MoveNext
Loop
Else
NoHayDatos = True
If NoHayDatos Then
DoCmd.OpenReport stDocName, acViewPreview, , "[Persona]='" & Me.Nombre & "'"
DoCmd.OutputTo acOutputReport, , "Formato Snapshot (*.snp)", "D:Tareas ISOInforme de Tareas pendientes.snp"
If (DLookup("", "Tabla de personas", "[Alias]='" & Me.Nombre & "'")) = 0 Then
Select Case Gestor.Ejecutable
Case "MSIMN.EXE"
mc_EnviarEmailOE5 asunto, Nz(DLookup("[email]", "Tabla de personas", "[Alias]='" & Me.Nombre & "'")), "", "", "D:Tareas ISOInforme de Tareas pendientes.snp", mensaje
Case "OUTLOOK.EXE"
EnviarOutlook asunto, Nz(DLookup("[email]", "Tabla de personas", "[Alias]='" & Me.Nombre & "'")), "", "", "D:Tareas ISOInforme de Tareas pendientes.snp", mensaje
Case "THUNDERBIRD"
f_envio_thunderbird asunto, Nz(DLookup("[email]", "Tabla de personas", "[Alias]='" & Me.Nombre & "'")), "D:Tareas ISOInforme de Tareas pendientes.snp", mensaje
End Select
Else
DoCmd.OpenReport stDocName, acViewPreview, , "[Persona]='" & Me.Nombre & "'"
archivo = DLookup("[ruta]", "Tabla de personas", "[Alias]='" & Me.Nombre & "'") & "Informe de Tareas pendientes-" & Me.Nombre & "-" & Format(Now, "dd-mm-yy--hh-mm-ss") & ".snp"
'MsgBox archivo
DoCmd.OutputTo acOutputReport, , "Formato Snapshot (*.snp)", archivo
End If
DoCmd.Close acReport, stDocName
End If
End If
Application.Echo True
End Sub
------------------------------------------------------------------------------------------------------------------------------------------

Nuevamente, muchas gracias. Ya no se qué más hacer (aparte de seguir estudiando).
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

RE:VBA procedimientos de evento

Publicado por josepjosep (2 intervenciones) el 11/06/2009 18:52:55
Un compañero me ha sugerido que revise los valores NULL del DLOOKUP. Lo probaré. De momento cierro éste post, ya que no he recibido ningún aporte, pero cuando haya hecho las pruebas ya os contaré.
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