Member 13495873 Ответов: 1

У меня ошибка объекта не задана ссылка на экземпляр объекта....


Я получил ссылку на объект error, не заданную на экземпляр объекта для загрузки отчета.

Public Sub Print()
        Try
            Cursor = Cursors.WaitCursor
            Timer1.Enabled = True
            Dim rpt As New rptInvoice 'The report you created.
            Dim myConnection As MySqlConnection
            Dim MyCommand, MyCommand1 As New MySqlCommand()
            Dim myDA, myDA1 As New MySqlDataAdapter()
            Dim myDS As New DataSet 'The DataSet you created.
            myConnection = New MySqlConnection(cs)
            MyCommand.Connection = myConnection
            MyCommand1.Connection = myConnection
            '
            MyCommand.CommandText = "SELECT tblcustomer.ID, tblcustomer.cust_name, tblcustomer.address, tblcustomer.city, tblcustomer.state, tblcustomer.pincode, tblinvoice.Inv_ID, tblinvoice.InvoiceNo, tblinvoice.InvoiceDate, tblinvoice.CustomerID , tblinvoice.DiscountAmt, tblinvoice.GrandTotal, tblinvoice_product.InvP_ID, tblinvoice_product.InvoiceID, tblinvoice_product.ProductID, tblinvoice_product.CostPrice, tblinvoice_product.Qty, tblinvoice_product.Amount, tblinvoice_product.TotalAmount, tblproduct.PID, tblproduct.ProductName, tblproduct.SubCategory, tblproduct.HSNCode, tblproduct.IGST FROM tblcustomer INNER JOIN tblinvoice ON tblcustomer.ID = tblinvoice.CustomerID INNER JOIN tblinvoice_product ON tblinvoice.Inv_ID = tblinvoice_product.InvoiceID INNER JOIN tblproduct ON tblinvoice_product.ProductID = tblproduct.PID where tblinvoice.Inv_ID=@d1"
            '
            MyCommand.Parameters.AddWithValue("@d1", txtInvoiceID.Text)
            MyCommand1.CommandText = "SELECT * from tblcompany"
            MyCommand.CommandType = CommandType.Text
            MyCommand1.CommandType = CommandType.Text
            myDA.SelectCommand = MyCommand
            myDA1.SelectCommand = MyCommand1
            myDA.Fill(myDS, "tblinvoice")
            myDA.Fill(myDS, "tblinvoice_product")
            myDA.Fill(myDS, "tblcustomer")
            myDA.Fill(myDS, "tblproduct")
            myDA1.Fill(myDS, "tblcompany")
            rpt.SetDataSource(myDS)
            rpt.SetParameterValue("p1", txtCustid.Text)
            rpt.SetParameterValue("p2", Today)
            frmReport.CrystalReportViewer1.ReportSource = rpt
            frmReport.ShowDialog()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub


Что я уже пробовал:

найдите нулевое значение, но не получите его..

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Именно здесь вы запускаете код под отладчиком, чтобы найти проблему, а не просто угадываете, что делает код.

Отладчик предназначен для отладки вас и вашего понимания кода. Используй его!

Эта ошибка означает, что вы пытаетесь получить/установить свойство вызова метода для объекта, который не существует или является нулевым (Nothing in VB.NET).

Запустите код в отладчике. При возникновении исключения отладчик остановит код и выделит строку, которая вызвала исключение. Наведите курсор мыши на переменные по одной, пока не найдете ту, которая говорит "Ничего". Это будет до вас, чтобы вернуться через код, чтобы выяснить, почему эта переменная ничего, когда вы предполагаете, что это не должно быть.

Это проблема, которую вы наиболее подготовлены к решению, но любой человек на форуме наименее подготовлен. У нас нет ни данных, ни кода для запуска, чтобы дублировать проблему. У тебя есть все это.

Я скажу вам, что вы, вероятно, делаете неверное предположение о том, как работают формы и как они существуют. VB.NET. У меня такое чувство, что frmReport не существует.


Member 13495873

Спасибо,
я уже отлаживаю. это дает ошибку на myDA.Fill(myDS, "tblinvoice") этой строке...
и
форма frmReport существует..

Dave Kreskowiak

Хорошо, так что наведите курсор мыши на myDA и myDS и выясните, какой из них ничего не стоит.

Member 13495873

после наведения курсора мыши он показывает Dim myDA как MySqlData.MySqlClient.MySqlDataAdapter и Dim myDS как System.Data.DataSe

Dave Kreskowiak

Это потому, что код не работает. Вы не увидите содержимое переменных, если только код не запущен и не находится в точке останова или остановке исключения.

Member 13495873

Ладно, Что же мне теперь делать? Я в замешательстве...

Dave Kreskowiak

В Visual Studio нажмите клавишу F5, чтобы запустить код в отладчике. Когда возникнет исключение, отладчик остановит код и покажет вам строку, которая вызвала исключение. Именно тогда вы начинаете наводить курсор мыши на переменные, чтобы проверить их содержимое.