elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda Código Vba
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda Código Vba  (Leído 2,237 veces)
Xantus

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda Código Vba
« en: 10 Febrero 2019, 16:40 pm »

Buenas tardes.

Quisiera pedirle a alguien que me revise el código que pongo a continuación, algo está mal pero no consigo saber que..

Situación:
Tengo una consulta "EnvioPrimera" que filtra datos de una tabla y muestra aquellos en los que la columna "Envio_1_reclamacion" está en blanco.
lo que quiero es que la función abra la consulta, y envíe un correo llamando a la funcion Enviar_Email_EnvioPrimera , de forma que mande el correo, escriba la fecha del día de hoy en el cmapo fecha_1_reclamación, lo actualice y pase a la siguiente hasta que todas las lineas de la columna tengan la fecha del día y finalice el proceso.

Para ello tengo el siguiente código:

Código:
Private Sub Comando60_DblClick(Cancel As Integer)

    Dim rs As DAO.Recordset
   
    If MsgBox("Se va a proceder al envío de 1ª Reclamación, ¿Continuar?", vbYesNo + vbExclamation, "Atención") = vbNo Then Exit Sub
   
    Set rs = CurrentDb.OpenRecordset("Select * from [EnvioPrimera]")
    If rs.EOF Then
        MsgBox "No hay registros pendientes de reclamar.", vbInformation, "Atención"
    Else
        Do Until rs.EOF
            Enviar_Email_Envioprimera rs("NUMERO_DE_CONTRATO"), rs("OFICINA"), rs("FECHA_1_RECLAMACION"), rs("CONTRATO"), Date, rs("CCM"), rs("SEGURO"), rs("GARANTIA_RECOMPRA"), rs("ENVIO_RENT_and_TECH")
            rs.Edit
            rs("FECHA_1_RECLAMACION") = Date
            rs.Update
            rs.MoveNext
        Loop
        MsgBox "Correos Enviados Correctamente.", vbInformation
    End If
   
    rs.Close
    Set rs = Nothing
End Sub

Copio ademas el inicio de la funcion Enviar_Email_EnvioPrimera:

Código:
Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, FECHA_1_RECLAMACION, CONTRATO, 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

Espero alguien me pueda decir donde está el error..

Error de compilación: El número de argumentos es incorrecto o la asignación de propiedad no es válida.

Dicho error me lo marca en:

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

Gracias de antemano!.

Un saludo.
Xantus.


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda Código Vba
« Respuesta #1 en: 10 Febrero 2019, 17:46 pm »

Hola!

El mensaje de error te lo dice explícitamente:

Error de compilación: El número de argumentos es incorrecto o la asignación de propiedad no es válida.

Tu función (8 parámetros):
Código
  1. Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, FECHA_1_RECLAMACION, CONTRATO, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)
  2.  

Tu llamada (9 parámetros):
Código
  1. Enviar_Email_Envioprimera rs("NUMERO_DE_CONTRATO"), rs("OFICINA"), rs("FECHA_1_RECLAMACION"), rs("CONTRATO"), Date, rs("CCM"), rs("SEGURO"), rs("GARANTIA_RECOMPRA"), rs("ENVIO_RENT_and_TECH")
  2.  

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Xantus

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda Código Vba
« Respuesta #2 en: 10 Febrero 2019, 17:51 pm »

Cierto.

Sin embargo al quitar el parámetro date y ejecutar me da el siguiente error.

Error de compilación: El argumento no es opcional.

Que puede ser?
Gracias!
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.355


Ver Perfil
Re: Ayuda Código Vba
« Respuesta #3 en: 10 Febrero 2019, 23:10 pm »

estás enmascarando variables...

La declaración de esta función tiene todos los parámetros de tipo variant...
Citar
Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, FECHA_1_RECLAMACION, CONTRATO, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)

Pero luego dentro de la función estás declarando variables con los mismos nombres...
Citar
    ...
    Dim CONTRATO As String
    Dim CCM As String, GARANTIA_RECOMPRA As String, SEGURO As String,

Con lo que forzosamente debe saltarte un error de duplicación de nombre de variables (no recuerdo de memoria el mensaje de erro exacto pero es similar)

Prueba este código para verlo mejor:

Código
  1. Private Sub Command1_Click()
  2.    Call Enviar_Email_Envioprimera("hola", " esto no se vera", #11/2/2019#, "blablabla", "ccm", "muy seguro", "no recompramos", "a saber")
  3. End Sub
  4.  
  5. Private Sub Enviar_Email_Envioprimera(NUMERO_DE_CONTRATO, OFICINA, FECHA_1_RECLAMACION, CONTRATO, CCM, SEGURO, GARANTIA_RECOMPRA, ENVIO_RENT_and_TECH)
  6.    Dim CONTRATO As String
  7.    Dim CCM As String, GARANTIA_RECOMPRA As String, SEGURO As String
  8.  
  9.    MsgBox CONTRATO & vbCrLf & CCM & vbCrLf & GARANTIA_RECOMPRA & vbCrLf & SEGURO
  10.  
  11. End Sub
  12.  

Debes declarar en la función el tipo específico del parámetro si es conocido en tiempo de diseño (que asumo que sí), que la mayoría parecen ser strings...
Además el uso de variants debe restringirse a lo estrictamente necesario, es decir cuando forzosamente un parámetro pueda ser igualmente un string, un buleano, un array, etc... porque su uso indiscriminado ralentiza en exceso la operatoria hasta 10 veces, por la comprobación de tipos y enlace en tiempo de ejecución (late binding).
Con lo que si más adelante en el código usas tales variables, en realidad estás usando

Y sobre el argumento no opcional, es que estás omitiendo pasar el valor de un parámetro...

...de todos modos si pones el código completo (de la función llamante y la llamada), podría verse que otros problemas tienes, con código parcial solo se puede indicar lo que se ve.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda) « 1 2 3 »
Programación C/C++
Søra 22 11,534 Último mensaje 22 Mayo 2010, 00:22 am
por Littlehorse
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 28,932 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
ayuda codigo
Programación C/C++
kunai 3 2,485 Último mensaje 1 Junio 2011, 12:56 pm
por Akai
ayuda!! necesito ayuda con este pequeño codigo en c++
Programación C/C++
giraffe 1 4,694 Último mensaje 27 Mayo 2015, 06:25 am
por engel lex
Ayuda con un código
Programación C/C++
Lady_Shagrath 6 8,023 Último mensaje 4 Marzo 2023, 03:43 am
por Lady_Shagrath
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines