Subíndice fuera de rango

Debo solucionar un error que me sale cuando doy clic en un comboBox para desplegar el listado (Este listado se carga desde SQL) lo que sucede es que cuando estoy llenando algún campo de texto o selecciono otra cosa en otro comobo o simplemente hago otra cosa y luego paso a darle clic al combo esto no deja niciquiera deplegar la lista si no que de inmediato saca Error en tiempo de ejecucuón "9" Subíndice fuera de Rango. Y al hacerle el seguimiento al código me muestra que el error está en esta parte:
Private Sub dbcSolucion_Click(Area As Integer)
  With dbcSolucion
    If .Text <> "" Then
____AQUI EN ESTA LINEA SALE EL ERROR : aServS(Val(Mid(cboServicios.SelectedItem.Key, 2))).aCods_Tipo_Recl(Mid(lstTiposeleccion.SelectedItem.Key, 2)).Cod_Solu = .BounText
aServS(Val(Mid(cboServicios.SelectedItem.Key, 2))).aCods_Tipo_Recl(Mid(lstTiposeleccion.SelectedItem.Key, 2)).Des_Solu = .Text
    End If
  End With
End Sub
Pero el dato que está llevando es real aun que no el que necesito ya que no deja seleccionar nada antes de que salga el error.

1 respuesta

Respuesta
1
Pregunta si el cboServicios. SelectedItem <> vbnull o si es igual a "" antes derealizar la instrucción donde te da el error.
Hice unas modificaciones en la forma en la que estaba dimensionado la matriz y aparentemente funciono. Pero hoy me doy cuenta que no está guardando ese dato del combo... lo que hice funcionó para que no me sacara error pero no se por que no guarda ese dato en la base de datos.
Es algo complicado... me puse en la tarea de ejecutar el código paso por paso y no logro encontrar una razón...
No se si pueda mandarte algo del código ya que es un poco largo y la verdad no logor ver el error. Mil gracias.
¿El error sigue siendo el mismo?
Esta es la parte donde carga el combo y es aquí donde incia lo malo de esta aplicacion
mStrInstruccion = "SELECT CODIGO_TIPO_SOLICITUD, NOMBRE From TIPO_SOLICITUD WHERE CODIGO_SERVICIO = " & Mid(item.Key, 2) & " and activo = 1 ORDER BY CODIGO_TIPO_SOLICITUD"
  objDatos.Sqli Datos, gRs2, mStrInstruccion, MSG_319, False
  With gRs2
    'iI = 1
    If .EOF Then
      MsgBox "No existen tipos de Solicitud asociados con este servicio", vbInformation, "AVISO"
      lstServicios.SelectedItem.Checked = False
      Exit Sub
    End If
    lstTipoQR.ListItems.Clear
    While Not .EOF
      lstTipoQR.ListItems.Add iI, "k" & Trim(.Fields("CODIGO_TIPO_SOLICITUD")), Trim(.Fields("NOMBRE"))
      If lstTipoQR.ListItems.Count < 7 Then
      iI = gRs2!CODIGO_TIPO_SOLICITUD
      End If
      .MoveNext
    Wend
El select trae 6 registros ordenados por orden de código los cuales son: 2 3 32 35 38 41 lo que pasa es que cuando va en la linea lstTipoQR.ListItems.Add iI, "k"...
Cuando va a agregar el 35 sale error 35600 en tiempo de ejecución "El indice está fuera de los limites" la pregunta es: ¿Por qué carga bien el 2, 3 y 32? Pero cuando va a cargar el 35 sale este error.
¿SI ordenas de forma descendente y cargas los datos sucede lo mismo?
Si. Carga el primero (41) y cuando sigue el segundo (38) sale el error.
Podrias indicarme los parametros del ... ListItems. Add ...
¿Qué es il de que tipo esta declarado, el segundo parámetro has intentando colocarlo sin la "k"?
Es que VB6 por si no lo sabes, esta decontnuaco pro parte de MS, yo hace muchísimo que no trabajo con el, no lo tengo instalado y no se que son cada parámetro, de algunos me acuerdo pero quiero estar seguro.
lstTipoQR.ListItems.Add iI, "k" & Trim(.Fields("CODIGO_TIPO_SOLICITUD")), Trim(.Fields("NOMBRE"))
El iI es simplemente una variable que se está inicializando lineas más atrás iI = 1 la "k" me concatena el valor de iI con la clave de la tabla y los campos CODIGO_TIPO_SOLICITUD Y NOMBRE... Pero yo creo que lo que pone problema es iI porque el primer valor que .add está cargando es el el trae el cual es 1.
Me reiero a que si el SELECT lo ordeno ascendentemente el carga el 1 (valor de inicio del iI) luego el 2 y el 3 los cuales son los que siguen en la tabla que carga el SELECT y por eso cuando sigue otro que no es consecutivo sca el error.
Porque no haces que il sea un numero consecutivo, ya que no necesitas mostrarlo, solo muestras el nombre que es lo que ue necesitas, si necesitas el código lo tienes en el Key, le quitas la primera QUE y listo lo tienes
Si, ya eso lo hice y tampoco funcionó, pero Resulta que seguí buscando y en contré que el error venía desde antes.
Lo que pasa es que el error no se presentaba primeramente ahí, si no que ahí era donde yo creía que estaba lo malo por eso le intenté hacer varios cambios a esa parte del código que te mostré, pero el error como tal salia en otra parte relacionada a esta otra, resulta que el error estaba en otra parte.
Muchas gracias por tu tiempo... creo que te voy a necesitar para una próxima consulta Dios te bendiga

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas