对象变量或未设置块变量。 VB.NET

时间:2012-05-10 16:36:40

标签: vb.net

我需要您的帮助才能验证导致此错误的原因。

这是堆栈跟踪:

[NullReferenceException: Object variable or With block variable not set.]
Microsoft.VisualBasic.CompilerServices.Container..ctor(Object Instance) +498372
   Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn) +112
   MicrositioAmece.EAN_Individual.Uno_a_Uno(String iNombreGenerico, String iMarca, String iContenido, String iUnidadMedida, String iVariante) in C:\Users\vflores\Documents\MicrositioAmeceDevelopment\EAN_Individual.aspx.vb:292
   MicrositioAmece.EAN_Individual.btnEnviar_Click(Object sender, EventArgs e) in C:\Users\vflores\Documents\MicrositioAmeceDevelopment\EAN_Individual.aspx.vb:96
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

这是代码:

 Function Uno_a_Uno(ByVal iNombreGenerico As String, ByVal iMarca As String, ByVal iContenido As String, ByVal iUnidadMedida As String, ByVal iVariante As String)
    Uno_a_Uno = False
    If iNombreGenerico = "" Or iMarca = "" Or iContenido = "" Or iUnidadMedida = "" Or iVariante = "" Then
        Uno_a_Uno = False
        Exit Function
    End If

    Dim objSiebelApp, blogStat
    Dim oSiebApp, strCnxn, logstat
    Dim oBusObj, oBusComp, bHayRegistro
    Dim oBusCompEAN13, oBusCompEAN13Detalle
    Dim oBCPickNumContacto, oNumContacto
    Dim oBCPickTipoCodigo, oTipoCodigo
        '______________Conecta a Siebel
    oSiebApp = CreateObject("SiebelDataControl.SiebelDataControl.1")
    strCnxn = Replace(ConfigurationSettings.AppSettings("ConnSiebel"), "'", Chr(34))
    Dim us As String = ConfigurationSettings.AppSettings("usrSiebel")
    Dim pw As String = ConfigurationSettings.AppSettings("pwSiebel")
    logstat = oSiebApp.Login(strCnxn, us, pw)
    If Not logstat Then
        strCnxn = Replace(ConfigurationSettings.AppSettings("ConnSiebel"), "'", Chr(34))
        logstat = oSiebApp.Login(strCnxn, us, pw)
        If Not logstat Then
            'lblError.Text = "Error al conectar: " & CStr(logstat1) & " Desc: " & oSiebApp1.GetLastErrText & "numErr: " & oSiebApp1.GetLastErrCode
            lblError.Text = "<br /><div class='Aviso_Error'><span class='Aviso_contenido'>" & _
                    "Error al Conectar con la base de datos, por favor intentelo más tarde." & _
                    "</span></div><br />"
        End If
        Exit Function
    End If
    oBusObj = oSiebApp.GetBusObject("Account")
    oBusComp = oBusObj.GetBusComp("Account")
    oBusComp.ActivateField("CSN")
    oBusComp.ActivateField("Name")
    oBusComp.SetViewMode(3)
    oBusComp.ClearToQuery()
        oBusComp.SetSearchExpr("[CSN] LIKE " + User.Identity.Name) '140418") '
    oBusComp.ExecuteQuery(1)
    bHayRegistro = oBusComp.FirstRecord
    If bHayRegistro Then
        oBusCompEAN13 = oBusObj.GetBusComp("Codigos EAN13 Completos")
        Call oBusCompEAN13.NewRecord(1)
        'oBusCompEAN13.SetFieldValue("Campo", "Valor")
        'Pick List Contacto
        oBCPickNumContacto = oBusCompEAN13.GetPicklistBusComp("Num Contacto")
        oBCPickNumContacto.ActivateField("Numero de contacto")
        oBCPickNumContacto.SetViewMode(3)
        oBCPickNumContacto.ClearToQuery()
        'oBCPick.SetSearchSpec("ACA SERÍA EL TIPO DE CONTACTO", "RESPONSABLE DE CODIGOS")
        oBCPickNumContacto.ExecuteQuery(1)
        If oBCPickNumContacto.FirstRecord() Then
            oBCPickNumContacto.Pick()
        End If

        'Pick List Tipo de Código
        oBCPickTipoCodigo = oBusCompEAN13.GetPicklistBusComp("Tipo de Codigo (MOSTRAR)")
        oBCPickTipoCodigo.ActivateField("Numero de contacto")
        oBCPickTipoCodigo.SetViewMode(3)
        oBCPickTipoCodigo.ClearToQuery()
        oBCPickTipoCodigo.SetSearchSpec("Tipo de Codigo", "R")
        oBCPickTipoCodigo.ExecuteQuery(1)
        If oBCPickTipoCodigo.FirstRecord() Then
            oBCPickTipoCodigo.Pick()
        End If

        oBusCompEAN13.InvokeMethod("NuevoCodigo", "Null")
        sCodigoCompleto = oBusCompEAN13.GetFieldValue("Codigo Completo")
        If (oBusCompEAN13.WriteRecord() = False) Then
            'lblError.Text = "No fue posible asignar el código individual:" & CStr(logstat) & " Desc: " & oSiebApp.GetLastErrText & "numErr: " & oSiebApp.GetLastErrCode
            lblError.Text = "<br /><div class='Aviso_Error'><span class='Aviso_contenido'>" & _
                "No fue posible asignar el código, por favor intentelo más tarde." & _
                "</span></div><br />"
            Exit Function
        Else
            oBusCompEAN13Detalle = oBusObj.GetBusComp("Detalle EAN13")
            Call oBusCompEAN13Detalle.NewRecord(1)
            oBusCompEAN13Detalle.SetFieldValue("Nombre Generico", iNombreGenerico)
            oBusCompEAN13Detalle.SetFieldValue("Marca Producto", iMarca)
            oBusCompEAN13Detalle.SetFieldValue("Contenido Neto Producto", iContenido)
            oBusCompEAN13Detalle.SetFieldValue("Unidad Medida Cont Neto", iUnidadMedida)
            oBusCompEAN13Detalle.SetFieldValue("Tipo Producto", iVariante)
            If (oBusCompEAN13Detalle.WriteRecord() = False) Then
                'lblError.Text = "No fue posible guardar el detalle del código individual, sin embargo el código fue asignado: " & sCodigoCompleto '& CStr(logstat) & " Desc: " & oSiebApp.GetLastErrText & "numErr: " & oSiebApp.GetLastErrCode
                lblError.Text = "<br /><div class='Aviso_Error'><span class='Aviso_contenido'>" & _
                    "No fue posible guardar el detalle del código individual, sin embargo el código fue asignado: " & sCodigoCompleto & _
                    "</span></div><br />"
                Exit Function
            Else
                Uno_a_Uno = True
            End If
        End If
        End If
        'limpio los objetos
        Call oSiebApp.LogOff()
        objSiebelApp = Nothing
        blogStat = Nothing
        oSiebApp = Nothing
        strCnxn = Nothing
        logstat = Nothing
        oBusObj = Nothing
        oBusComp = Nothing
        bHayRegistro = Nothing
        oBusCompEAN13 = Nothing
        oBusCompEAN13Detalle = Nothing
        oBCPickNumContacto = Nothing
        oNumContacto = Nothing
        oBCPickTipoCodigo = Nothing
        oTipoCodigo = Nothing
    Return Uno_a_Uno
End Function

如您所见,第292行Uno_a_Uno函数返回错误。我已经搜索过,但我无法解决它造成的问题。

非常感谢您的支持。

1 个答案:

答案 0 :(得分:1)

或者说OBCPickNumContacto没什么,这意味着你以前打电话给了 oBusCompEAN13.GetPicklistBusComp(&#34; Num Contacto&#34;)由于某种原因失败,或者,
另外,ActivateField可能在内部失败。