none
Error "Referencia a objeto no establecida como instancia de un objeto." RRS feed

  • Pregunta

  • Saludos amigos.

    Estoy desarrollando una aplicación  en Visual Studio 2015 que consume un webservice enviando una información de clientes. Dentro de los parámetros que pide el servicio web se encuentra un arreglo complejo el cual siempre que he intentado crear los datos a enviar me saca error de "Referencia a objeto no establecida como instancia de un objeto.".

    La definición del arreglo es la siguiente:

     Dim arreglo_clientes As ReferenciaWS.clientes()   'aquí le asigno a la variable el tipo que solicita el método del WS.

    El cargue de los datos al arreglo, donde solo envío un cliente, es:

                    With arreglo_clientes(0)
                        .cod_cliente = ClienteDestino
                        .cod_doccli = TipoDocumentoClienteDestino
                        .nom_cliente = NombreClienteDestino
                        .abr_cliente = Left(NombreClienteDestino, 2)
                        .ape_cliente = ApellidoClienteDestino
                        .cel_cliente = CelularClienteDestino
                        .dir_cliente = DireccionClienteDestino
                        .pai_cliente = PaisClienteDestino
                        .dep_cliente = DepartamentoClienteDestino
                        .ciu_cliente = CiudadClienteDestino
                        .tel_cliente = TelefonoClienteDestino
                        .tip_cliente = TipoClienteDestino
                    End With

    El error me sale en la línea donde le coloco el valor al primer item del arreglo, es decir, .cod_cliente = ClienteDestino

    He intentado definir la variable Dim arreglo_clientes As NEW ReferenciaWS.clientes(), pero me sale un error donde me dice que "el tipo clientes no se puede convertir en clientes()"

    Agradezco la colaboración al respecto.

           <o:p></o:p>


    domingo, 9 de diciembre de 2018 4:37

Respuestas

  • El problema es que cuando declaras un arreglo de clientes, todos los clientes del arreglo valen "Nothing", es decir, la inicialización del arreglo solo inicializa el arreglo propiamente dicho, pero no inicializa cada uno de los componentes internos del arreglo.

    La conclusión es que tienes que hacerle un "New" a cada cliente antes de asignarle datos. Por ejemplo:

    arreglo_clientes(0) = New ReferenciaWS.clientes()

    y entonces ya puedes hacer arreglo_clientes(0).cod_cliente=loquesea, etc.

    Por cierto, ojo con la declaración del array, se te ha olvidado inicializarlo al tamaño deseado (número de elementos del array).

    Dim arreglo_clientes() As ReferenciaWS.clientes = New ReferenciaWS.clientes(10) 'Por ejemplo

    • Propuesto como respuesta Sergio Parra domingo, 9 de diciembre de 2018 12:55
    • Marcado como respuesta fernando_junior domingo, 9 de diciembre de 2018 20:38
    domingo, 9 de diciembre de 2018 9:49

Todas las respuestas

  • El problema es que cuando declaras un arreglo de clientes, todos los clientes del arreglo valen "Nothing", es decir, la inicialización del arreglo solo inicializa el arreglo propiamente dicho, pero no inicializa cada uno de los componentes internos del arreglo.

    La conclusión es que tienes que hacerle un "New" a cada cliente antes de asignarle datos. Por ejemplo:

    arreglo_clientes(0) = New ReferenciaWS.clientes()

    y entonces ya puedes hacer arreglo_clientes(0).cod_cliente=loquesea, etc.

    Por cierto, ojo con la declaración del array, se te ha olvidado inicializarlo al tamaño deseado (número de elementos del array).

    Dim arreglo_clientes() As ReferenciaWS.clientes = New ReferenciaWS.clientes(10) 'Por ejemplo

    • Propuesto como respuesta Sergio Parra domingo, 9 de diciembre de 2018 12:55
    • Marcado como respuesta fernando_junior domingo, 9 de diciembre de 2018 20:38
    domingo, 9 de diciembre de 2018 9:49
  • Excelente amigo, eso era. Quedó funcionando perfecto, ya inicialicé el arreglo al número de elementos que contiene.

    Muchísimas gracias, esto me estaba sacando más canas.

    domingo, 9 de diciembre de 2018 20:37