Как исправить эту ошибку «Ссылка на объект не установлена ​​для экземпляра объекта» - PullRequest
0 голосов
/ 21 мая 2019

Ошибка сервера в «/» приложении. Ссылка на объект не установлена ​​на экземпляр объекта. Описание: произошло необработанное исключение во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации об ошибке и где она возник в коде.

Сведения об исключении: System.NullReferenceException: ссылка на объект отсутствует установить экземпляр объекта.

Ошибка источника:

Line 844:        Dim dt As New DataTable
Line 845:
Line 846:        format_type_id = Request.QueryString("ID").ToString.Trim
Line 847:
Line 848:        'take the value from db so easy to maintain the format name

Трассировка стека:

[NullReferenceException: Object reference not set to an instance of an object.]
Doccon.ESER_Doc_Form.get_format_type() in C:\Users\naquid9065\Documents\Q SMTT\Doccon\Doccon\ESER-Doc-Form.aspx.vb:846
Doccon.ESER_Doc_Form.Page_Load(Object sender, EventArgs e) in C:\Users\naquid9065\Documents\Q SMTT\Doccon\Doccon\ESER-Doc-Form.aspx.vb:57
System.Web.UI.Control.OnLoad(EventArgs e) +95
System.Web.UI.Control.LoadRecursive() +59
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

Код:

Private Sub get_format_type()
    Dim strSQL As String = ""
    Dim params As New Hashtable
    Dim dt As New DataTable

    format_type_id = Request.QueryString("ID").ToString.Trim (error from here)

    strSQL = "SELECT * FROM tb_setup_format_type WHERE status ='1' and ID = @ID "
    params.Add("@ID", format_type_id)
    Common.OpenConn()
    Common.execReader(strSQL, params, dt, Common.txn)
    If dt.Rows.Count <> 0 Then
        Me.txtformat.Text = dt.Rows(0)("Report_Format").ToString.Trim
    End If

    Common.CloseConn()
End Sub

1 Ответ

1 голос
/ 21 мая 2019

Процедуры с именем Get ... обычно являются функциями. Если вы что-то получаете, оно возвращается.

Если вам нужен только один фрагмент данных, не извлекайте всю запись целиком. Вы можете использовать ExecuteScalar, который возвращает первый столбец первой строки.

Действительно проще использовать ADO.net напрямую. Затем вы можете отслеживать свои объекты данных локально и убедиться, что они закрыты и удалены даже в случае ошибки. Блоки Using ... End Using достигают этого.

    Private Sub FillFormatTextBox()
    Dim Format As Object = Nothing
    Dim strSQL = "SELECT Report_Format FROM tb_setup_format_type WHERE status ='1' and ID = @ID "
    Using cn As New SqlConnection("Your connection string")
        Using cmd As New SqlCommand(strSQL, cn)
            'Your code did not provide a value for the Id parameter
            cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 4
            cn.Open()
            Format = cmd.ExecuteScalar()
        End Using
    End Using
    If Format Is Nothing Then
        MessageBox.Show("No format Found")
    Else
        txtformat.Text = Format.ToString.Trim
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...