** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Ayuda Do until en vba
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAyuda Do until en vba

 Responder Responder Página  123>
Autor
Mensaje Invertir el orden de clasificación
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Tema: Ayuda Do until en vba
    Enviado: 21 horas 60 minutos a las 09:00
Solucionado! Gracias!

Nota

.bcc + "tucorreo"

Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 22 horas 30 minutos a las 08:30
Buenos días!

Vuelvo por aqui para 2 cosas.

Primero agradecer la ayuda, porque ha funcionado perfectamente y se están enviando los correos sin problema.

Y segundo para ver si alguien sabe responderme a:

Los correos enviados, sé que están llegando a sus destinatarios, pero en la pestaña enviados de mi correo no puedo verlos, alguien sabe porque? hay algo que se pueda añadir para que se vean?

Gracias!
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 12/Febrero/2019 a las 13:59
Me autorrespondo por si alguien tiene la duda en algun momento y cae en este post.

Código:

    If CONTRATO Then
        Anexo_1 = ""
    Else
        Anexo_1 = vbCr + "          - CONTRATO INTERVENIDO Y SUS RESPECTIVOS ANEXOS"
    End If
 
    If CCM Then
        Anexo_2 = ""
    Else
        Anexo_2 = vbCr + "          - CERTIFICADO DE CONFORMIDAD DE MATERIAL"
    End If
 
    If GARANTIA_RECOMPRA Then
         Anexo_3 = ""
    Else
         Anexo_3 = vbCr + "         - GARANTÍA DE RECOMPRA"
    End If
 
    If SEGURO Then
        Anexo_4 = ""
    Else
        Anexo_4 = vbCr + "         - CERTIFICADO DE SEGUROS"
    End If

De esta forma si el checkbox se marca, no va a añadir linea, y si no está marcado la añadirá con lo que le indiques.

Resuelto queda!

Mil gracias!
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 12/Febrero/2019 a las 09:50
Buenos días.

Definitivamente funciona, llegan los correos etcetc.

Si tengo una duda, puesto que me "solicita" la documentación de los checkbox marcados, y yo quiero lo contrario, que me solicite los que no estén marcados.

He probado a poner los If con "is False" pero me da error en el tipo.
He probado con If Contrato IsNull Then  ó If contrato = Isnull Then pero en ambos me da error.

Lo que quiero es que cuando se de de alta, se marquen de las 4 casillas aquellas sobre las que tenemos documento, y que me solicite lo que no tengo.

Sabeis como ponerlo?

Gracias!
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 883
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 20:21
Si no, también puedes probar con la función IsNull, más cómoda con valores nulos.
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 20:18

Me autorrespondo

Código

He puesto puntos de interrupción y la ventana aparece cuando llega a los If, en el primero me da la ventana de "se espera un objeto" y salta al siguiente, al ser solo 2 finaliza sin enviar nada.

Código:


    If CONTRATO  Then
        Anexo_1 = vbCr & vbCr + "DOCUMENTO 1"
    End If
 
    If CCM  Then
        Anexo_2 = vbCr & vbCr + "DOCUMENTO 2"
    End If
 
    If GARANTIA_RECOMPRA  Then
         Anexo_3 = vbCr & vbCr + "DOCUMENTO 3"
    End If
 
    If SEGURO  Then
        Anexo_4 = vbCr & vbCr + "DOCUMENTO 4"
    End If

Al dejar el código así, ahora si deja de dar error.
Buscando, en los If si no especificas por defecto es False, de forma que al dejarlo así es exactamente lo que quiero.
Me indica que no es posible conectar con el envío del correo, pero eso si se que se debe a que es un correo de empresa al que puedo acceder solo desde alli, tenemos otro código que usa el mismo envío de correo y funciona perfectamente, por lo que el martes si debe funcionar sin problemas

El martes pruebo y vuelvo aunque solo sea para dar las gracias por las molestias.

Un saludo.
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:58
He puesto puntos de interrupción y la ventana aparece cuando llega a los If, en el primero me da la ventana de "se espera un objeto" y salta al siguiente, al ser solo 2 finaliza sin enviar nada.

Código:


    If CONTRATO Is False Then
        Anexo_1 = vbCr & vbCr + "DOCUMENTO 1"
    End If
 
    If CCM Is False Then
        Anexo_2 = vbCr & vbCr + "DOCUMENTO 2"
    End If
 
    If GARANTIA_RECOMPRA Is False Then
         Anexo_3 = vbCr & vbCr + "DOCUMENTO 3"
    End If
 
    If SEGURO Is False Then
        Anexo_4 = vbCr & vbCr + "DOCUMENTO 4"
    End If

Lo que hice fue modificar False por Null, con False me daba el error

Error de compilación: No coinciden los tipos.
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:48
No va a ser casualidad, puesto que para la prueba hice 2 registros con la fecha 1 reclamación en blanco.

Solo tienen el número de contrato, lo demás está en blanco, quizá cambiar False a Null no era la solución.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 883
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:38
En la función que prepara y envía el correo, tienes un control e errores que muestra el mensaje de error y sale de la función.

Como ejecutas la función para cada registro, pero sólo sale el mensaje 2 veces, parece como que tienes 2 registros a los cuales les falta algún dato necesario.
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:24
Señores, os invitaba a unas buenas cañas si pudiera, pero sin pensármelo!

FUNCIONA.

He cambiado False en el If por Null.

Solo me quedo con una duda, y es que al ir avanzando, me indica por dos veces una pantalla que dice.

"Se espera un objeto"

tras 2 aceptar, me termina la funcion y me indica que se han enviado correctamente.

Si bien es cierto, no puedo probarlo hasta el martes que vaya al trabajo, porque creo que hasta que no esté en la red no me va a enviar el correo.
Si sabeis porque aparece ese mensaje os lo agradecería, si el martes veo que no se envían cuando lo pruebe, vuelvo al foro con la duda.

Pero ya es un enorme avance el que no me de ningún error.

Gracias!
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:15
Vamos avanzando, he ido borrando lo que me ha indicado duplicado, hasta llegar hasta este nuevo error:

Copio el código del correo tal cual está

Ahora el código Enviar_Email_Primera:

Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, CONTRATO, FECHA_1_RECLAMACION, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)

    On Error GoTo Err_CORREO_Click
    Dim dbs As Database, qdf As QueryDef, consulta As String
    Dim cuerpo As String, para As String, cc As String, asunto As String
    Dim comentario As String _
        Anexo_1 As String, Anexo_2 As String, _
        Anexo_3 As String, Anexo_4 As String
 
    Anexo_1 = ""
    Anexo_2 = ""
    Anexo_3 = ""
    Anexo_4 = ""
 
    If CONTRATO Is False Then
        Anexo_1 = vbCr & vbCr + "DOCUMENTO 1"
    End If
 
    If CCM Is False Then
        Anexo_2 = vbCr & vbCr + "DOCUMENTO 2"
    End If
 
    If GARANTIA_RECOMPRA Is False Then
         Anexo_3 = vbCr & vbCr + "DOCUMENTO 3"
    End If
 
    If SEGURO Is False Then
        Anexo_4 = vbCr & vbCr + "DOCUMENTO 4"
    End If
    
    asunto = "ASUNTO DE CORREO"
    
    
    texto = "Buenos días," & vbCr & vbCr + _
            "Texto de Correo:" & _
            vbCr & vbCr + OFICINA & _
            Anexo_1 & Anexo_2 & Anexo_3 & Anexo_4 & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "<b>Texto de correo" & _
            vbCr & vbCr + vbCr & "Gracias, " & _
            vbCr & vbCr + vbCr & "Un saludo. " 'MsgBox texto
            
    
    If IsNull(Usuario) Then
        MsgBox "No existe Email de Usuario para la operación: NUMERO_DE_CONTRATO"
        GoTo Exit_CORREO_Click::
    End If
    
    Set miCorreo = CreateObject("CDO.Message")

    With miCorreo
        
          '.from = "mi correo" & "< >"
          
          .from = "mi correo" & "<mi correo>"
        '.from = "mi correo"
        '.To = "mi correo"
        .To = "mi correo"
        .Bcc = "mi correo"
        .replyto = "mi correo"
        
        .Subject = asunto
        .TextBody = texto
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
        "smtpbbva"
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Configuration.Fields.Update
        '.display
        .Send
    End With
    
    Set miCorreo = Nothing
    
    
Exit_CORREO_Click:
    Exit Sub

Err_CORREO_Click:
    MsgBox Err.Description
    Resume Exit_CORREO_Click
End Sub


En el texto que te marco en negrita me da el error:

"Error de compilación: No coinciden los tipos"

Se supone que si el cambo contrato es False, debe añadir una linea al correo (que he renombrado con Documento 1) y asi sucesivamente con los 4 anexos, para que al rellenar el formulario se marquen las casillas de la documentación que se posee, y se solicite en el correo aquella que falte.

Gracias!
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11736
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:10
El error viene porque un argumento se llama CONTRATO y, dentro de la función, tambien declaras CONTRATO (lo que decía pitxiku de declaraciones innecesarias)
Xavi, un minyó de Terrassa

Mi web
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 19:02
Vamos avanzando!!

He modificado las 2 lineas que me indicas con los corchetes tal como me lo has puesto, y ya no da el error, da otro:

Declaración duplicada en el  ámbito actual.

Y lo da sobre la linea 

Dim Contrato as String

Esa linea está en la función de envío de correo, te copio el inicio donde está la función (la tienes completa en el que te puse antes:

Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, CONTRATO, FECHA_1_RECLAMACION, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)

    On Error GoTo Err_CORREO_Click
    Dim dbs As Database, qdf As QueryDef, consulta As String
    Dim cuerpo As String, para As String, cc As String, asunto As String
    Dim comentario As String
    Dim CONTRATO As String
    Dim CCM As String, GARANTIA_RECOMPRA As String, SEGURO As String, _
        Anexo_1 As String, Anexo_2 As String, _
        Anexo_3 As String, Anexo_4 As String

Al indicar como duplicada, la borro directamente? o la modifico por ???

Gracias!!
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 883
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 18:25
Ahora que tenemos más datos, vamos a hacer pruebas:

1. Si revisas bien el nombre del campo que te da problemas (en la consulta SQL), verás que hay 2 espacios entre el "1" y "RECLAMACION"; y estamos colocando 1 espacio en el código. Pon 2 espacios y vuelve a probar:

Enviar_Email_Envioprimera rs("NUMERO_DE_CONTRATO"), rs("OFICINA"), rs("CONTRATO"), rs("FECHA_1__RECLAMACION"), rs("CCM"), rs("SEGURO"), rs("GARANTIA_RECOMPRA"), rs("ENVIO_RENT_and_TECH")

2. Como tienes muchos espacios en los nombres de los campos, podemos probar a olvidarnos de los subrayados y usar los corchetes:

Enviar_Email_Envioprimera rs![NUMERO DE CONTRATO], rs![OFICINA], rs![CONTRATO], rs![FECHA 1  RECLAMACION], rs![CCM], rs![SEGURO], rs![GARANTIA RECOMPRA], rs![ENVIO RENT and TECH]

3. En la línea en la que actualizas la fecha, también tendrás que cambiar cómo haces referencia al nombre del campo:

rs("FECHA_1__RECLAMACION") = Date
rs![FECHA 1  RECLAMACION] = Date

P.D.: Siempre se recomienda evitar los caracteres extraños o símbolos de subrayado en los nombres de tablas, campos, formularios, … Dan más problemas que soluciones.

P.D.: En la función que envía el correo tienes varios objetos creados que no usas. Puede ser porque la has recortado para evitar que se vean datos sensibles. Si no es así, puedes eliminarlos.
Arriba
Xantus Ver desplegable
Nuevo
Nuevo


Unido: 07/Febrero/2019
Localización: Málaga
Estado: Sin conexión
Puntos: 41
Enlace directo a este mensaje Enviado: 10/Febrero/2019 a las 18:01
La consulta en vista SQL

SELECT [RESUMEN DOC PENDIENTE].[NUMERO DE CONTRATO], [RESUMEN DOC PENDIENTE].OFICINA, [RESUMEN DOC PENDIENTE].[FECHA 1  RECLAMACION], [RESUMEN DOC PENDIENTE].CONTRATO, [RESUMEN DOC PENDIENTE].CCM, [RESUMEN DOC PENDIENTE].SEGURO, [RESUMEN DOC PENDIENTE].[GARANTIA RECOMPRA], [RESUMEN DOC PENDIENTE].[ENVIO RENT and TECH]
FROM [RESUMEN DOC PENDIENTE]
WHERE ((([RESUMEN DOC PENDIENTE].[FECHA 1  RECLAMACION]) Is Null));


Ahora el código Enviar_Email_Primera:

Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, CONTRATO, FECHA_1_RECLAMACION, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)

    On Error GoTo Err_CORREO_Click
    Dim dbs As Database, qdf As QueryDef, consulta As String
    Dim cuerpo As String, para As String, cc As String, asunto As String
    Dim comentario As String
    Dim CONTRATO As String
    Dim CCM As String, GARANTIA_RECOMPRA As String, SEGURO As String, _
        Anexo_1 As String, Anexo_2 As String, _
        Anexo_3 As String, Anexo_4 As String
 
    Anexo_1 = ""
    Anexo_2 = ""
    Anexo_3 = ""
    Anexo_4 = ""
 
    If CONTRATO Is False Then
        Anexo_1 = vbCr & vbCr + "DOCUMENTO 1"
    End If
 
    If CCM Is False Then
        Anexo_2 = vbCr & vbCr + "DOCUMENTO 2"
    End If
 
    If GARANTIA_RECOMPRA Is False Then
         Anexo_3 = vbCr & vbCr + "DOCUMENTO 3"
    End If
 
    If SEGURO Is False Then
        Anexo_4 = vbCr & vbCr + "DOCUMENTO 4"
    End If
    
    asunto = "ASUNTO DE CORREO"
    
    
    texto = "Buenos días," & vbCr & vbCr + _
            "Texto de Correo:" & _
            vbCr & vbCr + OFICINA & _
            Anexo_1 & Anexo_2 & Anexo_3 & Anexo_4 & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "Texto de Correo" & _
            vbCr & vbCr + "<b>Texto de correo" & _
            vbCr & vbCr + vbCr & "Gracias, " & _
            vbCr & vbCr + vbCr & "Un saludo. " 'MsgBox texto
            
    
    If IsNull(Usuario) Then
        MsgBox "No existe Email de Usuario para la operación: NUMERO_DE_CONTRATO"
        GoTo Exit_CORREO_Click::
    End If
    
    Set miCorreo = CreateObject("CDO.Message")

    With miCorreo
        
          '.from = "mi correo" & "< >"
          
          .from = "mi correo" & "<mi correo>"
        '.from = "mi correo"
        '.To = "mi correo"
        .To = "mi correo"
        .Bcc = "mi correo"
        .replyto = "mi correo"
        
        .Subject = asunto
        .TextBody = texto
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
        "smtpbbva"
        .Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Configuration.Fields.Update
        '.display
        .Send
    End With
    
    Set miCorreo = Nothing
    
    
Exit_CORREO_Click:
    Exit Sub

Err_CORREO_Click:
    MsgBox Err.Description
    Resume Exit_CORREO_Click
End Sub


Solo he quitado las direcciones de correo y el texto del correo, lo demás está tal cual.

Gracias!
Arriba
 Responder Responder Página  123>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable