Ik gebruik Visual Basic 2010 en ben een programma aan het maken dat ms access 2007 gebruikt.
Ik heb op mijn form een datagridview, een textbox, combobox, een zoekbutton, en een show all button.
Door de combobox kan ik in 2 kolommen zoeken en dan weergeven in de datagrid.
Nu is het zo dat ik de eerste keer dat ik op de button "Show all" klik gewoon alle gegevens uit de database in de datagrid, maar wil ik daarna zoeken in 1 van de 2 kolommen, dan krijg ik de volgende foutmelding:
object reference not set to an instance of an object
Ik heb al geprobeerd te zoeken via google, daar kwam vaak uit dat dit te maken heeft met de "fill" functie van een adapter, maar ik kom er nog niet uit.
Hieronder de diverse code die ik gebruik:
Voor het weergeven van de gehele database.
Voor het zoeken met de combobox:
En de data uit kolommen weergeven in textvelden:
Enige hulp is welkom!
Ik heb op mijn form een datagridview, een textbox, combobox, een zoekbutton, en een show all button.
Door de combobox kan ik in 2 kolommen zoeken en dan weergeven in de datagrid.
Nu is het zo dat ik de eerste keer dat ik op de button "Show all" klik gewoon alle gegevens uit de database in de datagrid, maar wil ik daarna zoeken in 1 van de 2 kolommen, dan krijg ik de volgende foutmelding:
object reference not set to an instance of an object
Ik heb al geprobeerd te zoeken via google, daar kwam vaak uit dat dit te maken heeft met de "fill" functie van een adapter, maar ik kom er nog niet uit.
Hieronder de diverse code die ik gebruik:
Voor het weergeven van de gehele database.
Code:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Conn As New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\songlisteditor.mdb")
Try
dsOle.Clear()
dtOle.Clear()
cmdOle = Conn.CreateCommand
cmdOle.CommandText = "SELECT * FROM songs where songtitle ORDER BY songtitle ASC"
da.SelectCommand = cmdOle
da.Fill(dsOle, "songs") ' This Table name
DataGridView1.DataSource = dsOle
DataGridView1.DataMember = "songs" ' This Table name
Me.DataGridView1.Columns("Id").Visible = False
Me.DataGridView1.Columns("Songtext").Visible = False
Me.DataGridView1.Columns(1).Width = 206
DataGridView1.ReadOnly = True
Catch ex As Exception
MsgBox("Error: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "Songlist Editor Error !!")
End Try
End Sub
Voor het zoeken met de combobox:
Code:
Private Sub SearchButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchButton.Click
con.ConnectionString = ("Provider=Microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\songlisteditor.mdb")
If ComboBox1.SelectedIndex = 1 And TextBox1.TextLength > 0 Then
Try
dsOle2.Clear()
dtOle2.Clear()
cmdOle2 = con.CreateCommand
cmdOle2.CommandText = "SELECT * FROM songs where songtitle LIKE '%" & TextBox1.Text & "%' ORDER BY songtitle ASC"
da2.SelectCommand = cmdOle2
da2.Fill(dsOle2, "songs") ' This Table name
DataGridView1.DataSource = dsOle2
DataGridView1.DataMember = "songs" ' This Table name
Me.DataGridView1.Columns("Id").Visible = False
Me.DataGridView1.Columns("Songtext").Visible = False
Me.DataGridView1.Columns(1).Width = 206
DataGridView1.ReadOnly = True
Catch ex As Exception
MsgBox("Error: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "Songlist Editor Error !!")
End Try
ElseIf ComboBox1.SelectedIndex = 1 And TextBox1.TextLength = 0 Then
MsgBox("Error: Type search term and select where to search", MsgBoxStyle.Exclamation, "Songlist Editor Error !!")
ElseIf ComboBox1.SelectedIndex = 2 And TextBox1.TextLength > 0 Then
Try
dsOle3.Clear()
dtOle3.Clear()
cmdOle3 = con.CreateCommand
cmdOle3.CommandText = "SELECT * FROM songs where songtext LIKE '%" & TextBox1.Text & "%' ORDER BY songtitle ASC"
da3.SelectCommand = cmdOle3
da3.Fill(dsOle3, "songs") ' This Table name
DataGridView1.DataSource = dsOle3
DataGridView1.DataMember = "songs" ' This Table name
Me.DataGridView1.Columns("Id").Visible = False
Me.DataGridView1.Columns("Songtext").Visible = False
Me.DataGridView1.Columns(1).Width = 206
DataGridView1.ReadOnly = True
Catch ex As Exception
MsgBox("Error: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "Songlist Editor Error !!")
End Try
ElseIf ComboBox1.SelectedIndex = 2 And TextBox1.TextLength = 0 Then
MsgBox("Error: Type search term and select where to search", MsgBoxStyle.Exclamation, "Songlist Editor Error !!")
Else
If ComboBox1.SelectedIndex = 0 Then
MsgBox("Error: Type search term and select where to search", MsgBoxStyle.Exclamation, "Songlist Editor Error !!")
End If
End If
End Sub
En de data uit kolommen weergeven in textvelden:
Code:
Private Sub DataGridView1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
Dim i As Integer
i = DataGridView1.CurrentRow.Index
Me.TextBox3.Text = DataGridView1.Item(0, i).Value
Me.TextBox2.Text = DataGridView1.Item(1, i).Value
Me.RichTextBox1.Text = DataGridView1.Item(3, i).Value
End Sub
Enige hulp is welkom!