NullReferenceException was unhandled

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dougancil
    Contributor
    • Apr 2010
    • 347

    NullReferenceException was unhandled

    I have the following form:

    Code:
    Imports System.Data.SqlClient
    Public Class Main
        Protected WithEvents DataGridView1 As DataGridView
        Dim instForm2 As New Exceptions
        Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startpayrollButton.Click
            Dim ssql As String = "select MAX(payrolldate) AS [payrolldate], " & _
                     "dateadd(s,  518399, max(payrolldate)) AS [Sunday]" & _
                      "from dbo.payroll" & _
                      " where payrollran = 'no'"
            Dim oCmd As System.Data.SqlClient.SqlCommand
            Dim oDr As System.Data.SqlClient.SqlDataReader
            oCmd = New System.Data.SqlClient.SqlCommand
    
            Try
                With oCmd
                    .Connection = New System.Data.SqlClient.SqlConnection("Initial Catalog=mdr;Data Source=xxxxx;uid=xxxxx;password=xxxxx")
                    .Connection.Open()
                    .CommandType = CommandType.Text
                    .CommandText = ssql
                    oDr = .ExecuteReader()
                End With
                If oDr.Read Then
                    payperiodstartdate = oDr.GetDateTime(1)
                    payperiodenddate = payperiodstartdate.AddDays(7)
                    Dim ButtonDialogResult As DialogResult
                    ButtonDialogResult = MessageBox.Show("      The Next Payroll Start Date is: " & payperiodstartdate.ToString() & System.Environment.NewLine & "            Through End Date: " & payperiodenddate.ToString())
                    If ButtonDialogResult = Windows.Forms.DialogResult.OK Then
                        exceptionsButton.Enabled = True
                        startpayrollButton.Enabled = False
                    End If
                End If
                oDr.Close()
                oCmd.Connection.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                oCmd.Connection.Close()
            End Try
    
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exceptionsButton.Click
            Dim connection As System.Data.SqlClient.SqlConnection
            Dim connectionString As String = "Initial Catalog=mdr;Data Source=xxxxx;uid=xxxxx;password=xxxxx"
            Dim ds As New DataSet
            Dim _sql As String = "SELECT [Exceptions].Employeenumber,[Exceptions].exceptiondate, [Exceptions].starttime, [exceptions].endtime, [Exceptions].code, datediff(minute, starttime, endtime)  as duration INTO scratchpad3" & _
     " FROM Employees INNER JOIN Exceptions ON [Exceptions].EmployeeNumber = [Exceptions].Employeenumber" & _
     " where [Exceptions].exceptiondate between @payperiodstartdate and @payperiodenddate" & _
     " GROUP BY [Exceptions].Employeenumber, [Exceptions].Exceptiondate, [Exceptions].starttime, [exceptions].endtime," & _
     " [Exceptions].code, [Exceptions].exceptiondate"
            connection = New SqlConnection(connectionString)
            Dim _CMD As SqlCommand = New SqlCommand(_sql, connection)
            Dim adapter As System.Data.SqlClient.SqlDataAdapter
            adapter.SelectCommand = _CMD
            _CMD.Parameters.Add(New SqlClient.SqlParameter("@payperiodstartdate", payperiodstartdate))
            _CMD.Parameters.Add(New SqlClient.SqlParameter("@payperiodenddate", payperiodenddate))
            Try
                adapter.Fill(ds)
                If (ds Is Nothing) Then
                    'it's empty
                    MsgBox("There was no data for this time period, press Ok to continue", "No Data")
                    connection.Close()
                    Exceptions.Hide()
                Else
                    'it exists and there are rows 
                    adapter.Fill(ds)
                    connection.Close()
                End If
    
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
                connection.Close()
            End Try
            Exceptions.Show()
        End Sub
        Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    End Class
    and when I run this with debug, I get to this line:

    Code:
       adapter.SelectCommand = _CMD
    and I get the error NullReferenceEx ception was unhandled.

    Intellisense warns me that the variable adapter is used before it has been assigned a value. I've tried

    Code:
     Dim adapter As System.Data.SqlClient.SqlDataAdapter = Nothing
    and that didn't seem to work either.

    Can anyone offer any help with this?

    Thank you
Working...