Error '2185' al ejecutar consultas plasmadas en informes en VBA

Agradezco a quien me pueda colaborar con lo siguiente:

Estoy trabajando en Access 2013 con VBA en donde tengo un cuadro combinado en el cual un usuario debe de seleccionar las consultas

Que necesite realizar en la aplicación.

Hay algunas consultas que cuando son seleccionadas se debe de activar un cuadro de texto en el cual el usuario debe de digitar el numero de identificación y un boton que lo que va a hacer es abrir dicha consulta que se visualiza en un informe o reporte.

El inconveniente que tengo es que cuando el usuario digita el numero de documento en el cuadro de texto que se activa y oprtime el boton Consultar aparece el siguiente error:

Se ha producido el error '2185' en tiempo de ejecución:

No se puede hacer referencia a una propiedad o a un método para un control a menos

Que el control tenga el enfoque, si oprimo depurar me demarca esta linea dentro de mi código:

If Me.Cuadro_combinado0.Text = "Empresa_cliente con personas_cliente" Then   

vale mencionar que el codigo completo es el siguiente:

If Me.Cuadro_combinado0.Text = "Empresa_cliente con personas_cliente" Then

   DoCmd.OpenReport "inf_Emppercli", acViewPreview  '

   Forms![frm_consultas].Visible = False

 ElseIf Me.Cuadro_combinado0.Text = "Empresa_cliente con personas_cliente y pagos" Then

  DoCmd.OpenReport "Inf_Empcliepercliepag", acViewPreview  '

   Forms![frm_consultas].Visible = False

 ElseIf Me.Cuadro_combinado0.Text = "Empresa_cliente con personas_cliente y honorarios" Then

  DoCmd.OpenReport "Inf_Empclienpercliehon", acViewPreview  '

   Forms![frm_consultas].Visible = False

 ElseIf Me.Cuadro_combinado0.Text = "Empresa_cliente con personas_cliente y deudor" Then

  DoCmd.OpenReport "Inf_Emplcliepercliedeu", acViewPreview  '

   Forms![frm_consultas].Visible = False

 ElseIf Me.Cuadro_combinado0.Text = "Empresa_cliente con personas_cliente y codeudor" Then

  DoCmd.OpenReport "Inf_Empcliepercliecoddeu", acViewPreview  '

   Forms![frm_consultas].Visible = False

End If

Respuesta
1

Prueba cambiando Text por Value:

Me.Cuadro_combinado0.Value

Hola experto,,,eso fue lo que hice pero no me da resultado, pues al ejectutar la consulta no se hace nada, no arrancan los informes.

Entonces el problema lo tienes en que no se está cumpliendo ninguna de las condiciones que pones en el bloque If Then Else...

Si le pones un punto de interrupción al código, y al ejecutarlo vas pulsando F8, verás si algún If se cumple o no.

El cuadro combinado ¿de dónde coge los valores que muestra? ¿Estás poniendo exáctamente los mismos valores en el código que los que tienes en el cuadro combinado?

Si,, amigo estoy tomando los mismos datos de el cuadro combinado para realizar las validaciones.

Tengo una tabla llamada consultas, las cual trae o alimenta el cuadro combinado,, los registros de dicha tabla son:

Empresa_cliente_con_personas_cliente
Empresa_cliente_con_personas_cliente_y_pagos
Empresa_cliente_con_ personas_cliente_y_honorarios
Empresa_cliente_con_personas_cliente_y_deudor
Empresa_cliente_con_personas_cliente_y_codeudor

Entonces al realizar las validaciones con If anidados  como los siguientes:

If Me.Cuadro_combinado0.Value = "Empresa_cliente_con_personas_cliente" Then
DoCmd.OpenReport "inf_Emppercli", acViewPreview '
Forms![frm_consultas].Visible = False
ElseIf Me.Cuadro_combinado0.Value = "Empresa_cliente_con_personas_cliente_y_pagos" Then
DoCmd.OpenReport "Inf_Empcliepercliepag", acViewPreview '
Forms![frm_consultas].Visible = False
ElseIf Me.Cuadro_combinado0.Value = "Empresa_cliente_con_personas_cliente_y_honorarios" Then
DoCmd.OpenReport "Inf_Empclienpercliehon", acViewPreview '
Forms![frm_consultas].Visible = False
ElseIf Me.Cuadro_combinado0.Value = "Empresa_cliente con personas_cliente y deudor" Then
DoCmd.OpenReport "Inf_Emplcliepercliedeu", acViewPreview '
Forms![frm_consultas].Visible = False
ElseIf Me.Cuadro_combinado0.Value = "Empresa_cliente con personas_cliente y codeudor" Then
DoCmd.OpenReport "Inf_Empcliepercliecoddeu", acViewPreview '
Forms![frm_consultas].Visible = False
End If

Y realizar la ejecución con F8, no me toma ninguno de los If, si cambio .Value por .text me muestra el error 2185.. No se que estará pasando.

Fíjate que ene le código que pones, los valores que toma el cuadro combinado no son los que pones en los bloques IF (te falta en caracter _ en varios de ellos)

Otra cosa, aunque no te resolverá el problema, es mejor que uses un bloque Select case en vez de tantos If Then Else, pues facilita la escritura y lectura del código:

Select Case Me.Cuadro_combinado0

      Case "Empresa_cliente_con_personas_cliente" 
                DoCmd.OpenReport "inf_Emppercli", acViewPreview '
                Forms![frm_consultas].Visible = False
      Case "Empresa_cliente_con_personas_cliente_y_pagos" 
               DoCmd.OpenReport "Inf_Empcliepercliepag", acViewPreview '
               Forms![frm_consultas].Visible = False

...

End Select

Ponme el origen de la fila de tu cuadro combinado, o mejor aún, una imagen de la pestaña datos de sus propiedades, a ver si doy con el problema

¡Ah!, se me acaba de ocurrir, prueba a cambiar el foco a otro control al principio del código.

Si te empeñas en usar .Text, pásale el foco al cuadro combinado antes de los Ifs

Hola experto envio mas bien un video en el que explico lo que usted me solicita, el enlace es el siguiente:

https://www.youtube.com/watch?v=49YHttvzHKM&feature=youtu.be 

De nuevo muchas gracias.

Att. Hernán Camilo

El error lo tienes en que el cuadro combinado el valor que devuelve es el ID, no el nombre de la consulta. Esto lo puedes comprobar fácilmente con un MsgBox Me.Cuadro_Combinado0

Tienes tres formas de arreglarlo:

1º/ Modificar el código sustituyendo los nombres de las consultas por el ID que tengan en la tabla:

Select Case Me.Cuadro_combinado0

      Case 1
                DoCmd.OpenReport "inf_Emppercli", acViewPreview '
                Forms![frm_consultas].Visible = False
      Case 2

               DoCmd.OpenReport "Inf_Empcliepercliepag", acViewPreview '
               Forms![frm_consultas].Visible = False

...

End Select

2º/ Modificando el Select para que coja la columna con el nombre (ten en cuenta que la primera columna tiene el índice 0):

Select Case Me.Cuadro_combinado0.Column(1)

      Case "Empresa_cliente_con_personas_cliente" 
                DoCmd.OpenReport "inf_Emppercli", acViewPreview '
                Forms![frm_consultas].Visible = False
      Case "Empresa_cliente_con_personas_cliente_y_pagos" 
               DoCmd.OpenReport "Inf_Empcliepercliepag", acViewPreview '
               Forms![frm_consultas].Visible = False

...

End Select

3º/ En las propiedades del cuadro combinado, pestaña Datos, cambia el valor de la propiedad Columna Dependiente de 1 a 2. Aunque esta opción ahora no te la recomiendo por si afecta a otras partes de tu aplicación, puedes tenerla en cuenta al diseñar tus formularios.

¡Gracias!  Sveinbjorn El Rojo

Muchas gracias amigo, un abrazo desde Colombia, resulta que para esto casos hay que tener en cuenta  el primer campo de la tabla es decir el ID column(0) y no el nombre de las consulta column(1).

El codigo entonces quedo así con el Select Case:

elect Case Me.Cuadro_combinado0.Column(0)
Case 1
DoCmd.OpenReport "inf_Emppercli", acViewPreview '
Forms![frm_consultas].Visible = False
Case 2
DoCmd.OpenReport "Inf_Empcliepercliepag", acViewPreview '
Forms![frm_consultas].Visible = False
Case 3
DoCmd.OpenReport "Inf_Empclienpercliehon", acViewPreview '
Forms![frm_consultas].Visible = False
Case 4
DoCmd.OpenReport "Inf_Emplcliepercliedeu", acViewPreview '
Forms![frm_consultas].Visible = False
Case 5
DoCmd.OpenReport "Inf_Empcliepercliecoddeu", acViewPreview '
Forms![frm_consultas].Visible = False
Case 6
DoCmd.OpenReport "Inf_Emplcliepercliedeu", acViewPreview '
Forms![frm_consultas].Visible = False
Case 7
DoCmd.OpenReport "Inf_Empcliepercliecoddeu", acViewPreview '
Forms![frm_consultas].Visible = False
End Select

Muchas gracias de nuevo..

Att- Ing Hernán Camilo Martínez V.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas