2012-05-10 96 views
0

我需要你的幫助來驗證是什麼導致這個錯誤。對象變量或未設置塊變量。 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函數返回的錯誤。我已經搜索,但我無法解決它造成的。

非常感謝您的支持。

+3

哪條線是292線? – David

+1

而你的函數沒有返回類型。應該是:Function Uno_a_Uno(ByVal iNombreGenerico As String,ByVal iMarca As String,ByVal iContenido As String,ByVal iUnidadMedida As String,ByVal iVariante As String)as Boolean –

+1

看起來您有一些遲到的綁定,請嘗試使用strict選項指出問題 –

回答

1

或者OBCPickNumContacto是沒有的,這意味着你以前到
oBusCompEAN13.GetPicklistBusComp(「民CONTACTO」)調用由於某種原因失敗,或者
在替代,可能是ActivateField內部失敗。

+0

Steve,謝謝! – Glegan

相關問題