0

1) Could anybody tell me why I am getting a NullReferenceException when I hit exit?
2) Also, how would I display my txtPrice in currency form ($0.00)
3) How would I disable my navigation buttons at the same time once they reach the end of the datagrid?

Option Strict On

Public Class frmBookInfo

Private aflag As Boolean
Private Sub All_TitlesBindingNavigator_RefreshItems(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

Private Sub frmBookInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.PublishersTableAdapter.Fill(Me._books_Fall2012_A2DataSet.Publishers)
'TODO: This line of code loads data into the '_books_Fall2012_A2DataSet.Publishers' table. You can move, or remove it, as needed.
Me.TitlesTableAdapter.Fill(Me._books_Fall2012_A2DataSet.Titles)
'TODO: This line of code loads data into the '_books_Fall2012_A2DataSet.Titles' table. You can move, or remove it, as needed.

  txtBookTitle.Focus()
  btnFirst.Enabled = False
  btnBack.Enabled = False
  btnSave.Enabled = False
  btnUndo.Enabled = False
  lblSelectPublisher.Visible = False
  cmbSelectPublisher.Visible = False
  ToolStripStatusLabel2.Text = "Record # " + (TitlesBindingSource.Position + 1).ToString + " out of " + TitlesBindingSource.Count.ToString
End Sub

Private Sub TitlesBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Validate()
Me.TitlesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me._books_Fall2012_A2DataSet)

End Sub

Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
    TitlesBindingSource.MovePrevious()
    btnForward.Enabled = True
    btnLast.Enabled = True
    ToolStripStatusLabel2.Text = "Record # " + (TitlesBindingSource.Position + 1).ToString + " out of " + TitlesBindingSource.Count.ToString
    If TitlesBindingSource.Position = 0 Then
        btnBack.Enabled = False
    End If
End Sub

Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
    TitlesBindingSource.MoveFirst()
    btnForward.Enabled = True
    btnLast.Enabled = True
    ToolStripStatusLabel2.Text = "Record # " + (TitlesBindingSource.Position + 1).ToString + " out of " + TitlesBindingSource.Count.ToString
    If TitlesBindingSource.Position = 0 Then
        btnFirst.Enabled = False
    End If
End Sub

Private Sub btnForward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForward.Click
    btnBack.Enabled = True
    btnFirst.Enabled = True
    TitlesBindingSource.MoveNext()
    ToolStripStatusLabel2.Text = "Record # " + (TitlesBindingSource.Position + 1).ToString + " out of " + TitlesBindingSource.Count.ToString
    If TitlesBindingSource.Position = 215 Then
        btnForward.Enabled = False
    End If
End Sub

Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
    btnBack.Enabled = True
    btnFirst.Enabled = True
    TitlesBindingSource.MoveLast()
    ToolStripStatusLabel2.Text = "Record # " + (TitlesBindingSource.Position + 1).ToString + " out of " + TitlesBindingSource.Count.ToString
    If TitlesBindingSource.Position = 215 Then
        btnLast.Enabled = False
    End If
End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
    Me.Close()
End Sub

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    aflag = True
    Me.TitlesBindingSource.AddNew()
    ToolStripStatusLabel2.Text = "Adding new row"
    ToolStripStatusLabel1.Visible = True
    add()

End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
    Dim results As DialogResult
    results = MessageBox.Show("Are you sure you want to delete this data?", "",
        MessageBoxButtons.YesNo)
    If results.Equals(DialogResult.Yes) Then
        TitlesBindingSource.RemoveCurrent()
        TitlesBindingSource.EndEdit()
    End If

End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    If txtBookTitle.Text = "" Then
        MessageBox.Show("Please enter a title")
        txtBookTitle.Focus()
    End If
    If txtISBN.Text = "" Then
        MessageBox.Show("Please enter a valid ISBN")
        txtISBN.Focus()
    End If
    If cmbSelectPublisher.SelectedIndex = -1 Then
        MessageBox.Show("Select a publisher")
        cmbSelectPublisher.Focus()
    End If
    If cmbSelectPublisher.SelectedIndex <> -1 Then
        TitlesBindingSource.EndEdit()

        Dim x As Integer
        x = CInt(cmbSelectPublisher.SelectedValue)

        _books_Fall2012_A2DataSet.Titles(TitlesBindingSource.Position).PubID = x
        TitlesTableAdapter.Update(_books_Fall2012_A2DataSet)
    End If
    Exit Sub

End Sub

Private Sub cmbSelectPublisher_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSelectPublisher.SelectedIndexChanged
    Dim intPubID As Integer
    intPubID = CInt(cmbSelectPublisher.SelectedValue)
    fillpub(intPubID)

End Sub

Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
    edit()

End Sub

Private Sub btnUndo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUndo.Click
    undo()
    TitlesBindingSource.CancelEdit()

End Sub

Private Sub TitlesBindingSource_PositionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TitlesBindingSource.PositionChanged
    Dim fill As Integer
    If Not aflag Then

    ToolStripStatusLabel1.Text = ""
    ToolStripStatusLabel2.Text = "Record # " + (TitlesBindingSource.Position + 1).ToString + " out of " + TitlesBindingSource.Count.ToString

    fill = _books_Fall2012_A2DataSet.Titles(TitlesBindingSource.Position).PubID
    fillpub(fill)
    End If
End Sub


Private Sub fillpub(ByVal argPubID As Integer)

        Dim drpub As _books_Fall2012_A2DataSet.PublishersRow
        drpub = _books_Fall2012_A2DataSet.Publishers.FindByPubID(argPubID)

        If drpub.IsNameNull Then
            txtPublisher.Text = ""
        Else
            txtPublisher.Text = drpub.Name
        End If

        If drpub.IsAddressNull Then
            txtAddress.Text = ""
        Else
            txtAddress.Text = drpub.Address
        End If

        If drpub.IsCityNull Then
            txtCity.Text = ""
        Else
            txtCity.Text = drpub.City
        End If


        If drpub.IsStateNull Then
            txtState.Text = ""
        Else
            txtState.Text = drpub.State
        End If

        If drpub.IsZipNull Then
            txtZipCode.Text = ""
        Else
            txtZipCode.Text = drpub.Zip
        End If
    End Sub


Private Sub txtValidate_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPages.KeyPress, txtPublicationYear.KeyPress, txtPrice.KeyPress, txtISBN.KeyPress
        Select Case e.KeyChar
            Case ControlChars.Back

            Case "0"c To "9"c

            Case "-"c
                If sender Is txtPages Then
                    e.Handled = True
                ElseIf sender Is txtPublicationYear Then
                    e.Handled = True
                ElseIf sender Is txtPrice Then
                    e.Handled = True
                ElseIf CType(sender, TextBox).Text.Contains("-") Then
                    e.Handled = True
                Else
                End If
            Case "."c
                If sender Is txtPages Then
                    e.Handled = True
                ElseIf sender Is txtPublicationYear Then
                    e.Handled = True
                ElseIf sender Is txtISBN Then
                    e.Handled = True
                ElseIf CType(sender, TextBox).Text.Contains(".") Then
                    e.Handled = True
                  Else
                  End If
            Case "$"c
                If sender Is txtPages Then
                    e.Handled = True
                ElseIf sender Is txtPublicationYear Then
                    e.Handled = True
                ElseIf sender Is txtISBN Then
                    e.Handled = True
                ElseIf CType(sender, TextBox).Text.Contains("$") Then
                    e.Handled = True
                  Else
                  End If
            Case Else
                e.Handled = True
        End Select
    End Sub

Private Sub txtBookTitle_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtBookTitle.GotFocus
  If txtBookTitle.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
      ToolStripStatusLabel1.Text = "Book title is required"
  End If

End Sub

Private Sub txtISBN_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtISBN.GotFocus
  If txtISBN.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
      ToolStripStatusLabel1.Text = "ISBN is required"
  End If
End Sub

Private Sub txtDescription_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.GotFocus
  If txtDescription.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
      ToolStripStatusLabel1.Text = "Description is not required"
  End If
End Sub

Private Sub txtSubject_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtSubject.GotFocus
  If txtState.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
      ToolStripStatusLabel1.Text = "Subject is not required"
  End If
End Sub

Private Sub txtPages_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPages.GotFocus
  If txtPages.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
      ToolStripStatusLabel1.Text = "Page # is not required"
  End If
End Sub

Private Sub txtPublicationYear_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPublicationYear.GotFocus
  If txtPublicationYear.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
  ToolStripStatusLabel1.Text = "Publication year is not required"
  End If
End Sub

Private Sub txtPrice_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPrice.GotFocus
  If txtPrice.ReadOnly Then
      ToolStripStatusLabel1.Text = ""
  Else
      ToolStripStatusLabel1.Text = "Price is not required"
  End If
End Sub

Private Sub cmbSelectPublisher_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbSelectPublisher.GotFocus
  If cmbSelectPublisher.Enabled = False Then
      ToolStripStatusLabel1.Text = ""
  Else
  ToolStripStatusLabel1.Text = "Publisher is required"
  End If
End Sub

Private Sub edit()
    txtBookTitle.ReadOnly = False
    txtISBN.ReadOnly = False
    txtDescription.ReadOnly = False
    txtSubject.ReadOnly = False
    txtPages.ReadOnly = False
    txtPublicationYear.ReadOnly = False
    txtPrice.ReadOnly = False
    cmbSelectPublisher.Visible = True
    lblSelectPublisher.Visible = True

End Sub

Private Sub add()
    txtPublisher.Clear()
    txtAddress.Clear()
    txtCity.Clear()
    txtState.Clear()
    txtZipCode.Clear()
    txtPublicationYear.Text = ""
    txtBookTitle.ReadOnly = False
    txtISBN.ReadOnly = False
    txtDescription.ReadOnly = False
    txtSubject.ReadOnly = False
    txtPages.ReadOnly = False
    txtPublicationYear.ReadOnly = False
    txtPrice.ReadOnly = False
    btnForward.Enabled = False
    btnLast.Enabled = False
    btnAdd.Enabled = False
    btnBack.Enabled = False
    btnFirst.Enabled = False
    btnEdit.Enabled = False
    btnDelete.Enabled = False
    btnExit.Enabled = False
    btnSave.Enabled = True
    btnUndo.Enabled = True
    cmbSelectPublisher.Enabled = True
    cmbSelectPublisher.Visible = True
    lblSelectPublisher.Visible = True

End Sub

Private Sub undo()
    txtBookTitle.ReadOnly = True
    txtISBN.ReadOnly = True
    txtDescription.ReadOnly = True
    txtSubject.ReadOnly = True
    txtPages.ReadOnly = True
    txtPublicationYear.ReadOnly = True
    txtPrice.ReadOnly = True
    btnForward.Enabled = True
    btnLast.Enabled = True
    btnAdd.Enabled = True
    btnBack.Enabled = False
    btnFirst.Enabled = False
    btnEdit.Enabled = True
    btnDelete.Enabled = True
    btnExit.Enabled = True
    lblSelectPublisher.Visible = False
    cmbSelectPublisher.Visible = False
    btnSave.Enabled = False
    btnUndo.Enabled = False

End Sub
End Class
2
Contributors
3
Replies
4
Views
4 Years
Discussion Span
Last Post by Begginnerdev
0

I am not seeing a handler for the form close event, is something firing off - or is it not being handled?

As for currency, try this:

txtPrice.Text = CDec(txtPrice.Text).ToString("C")

As for the navigation, are you scrolling, or clicking to the next entry?

0

When I exit, I get a nullreferenceexception that highlights "If drpub.IsNameNull Then" and it says "Object reference not set to an instance of an object."

Also, for my btnsave_click, how would I make it so when I save, it checks to make sure everything is entered correctly and then saves to the database and disables specific buttons?

0

You could create some functions that cast the data entered to the type.

Just check for failures, and then prompt the user with the problem.

Something like this:

Private Function CheckIfInteger(ByVal sVal As String)
    Try
        Cint(sVal)
        Return True
    Catch ex As Exception
        MsgBox(ex.Message & vbcrlf & "Please check data entered! '" & sVal & "' is invalid!")
        Return False
    End Try
End Sub

Just create one for each data type, and halt on error. (False value returned)

As for the NullReference. I am not sure where you get this declaration:

Dim drpub As _books_Fall2012_A2DataSet.PublishersRow

Do you have a class named "_books_Fall2012_A2DataSet"?

I think what you are wanting is Something like this:

'***DISCLAIMER***
'Can't test this code, so I can tell if it works or not.
Dim drpub As New String() {_books_Fall2012_A2DataSet.PublishersRow}

Edited by Begginnerdev

This article has been dead for over six months. Start a new discussion instead.
Take the time to help us to help you. Please be thoughtful and detailed and be sure to adhere to our posting rules.