Beste Helpmij.nl
(VB.NET2008)
Ik was bezig met een project. Ik gebruikte eerst Microsoft Acces om een database te maken voor mijn programma. Dit werkte allemaal fijn, maar ik wilde het iets aanpassen. Ik wilde een zoekbox en na het plaatsen van een vraag hier kreeg ik die. Alles werkt nu perfect (data ophalen, lezen). Alleen kan ik geen data meer schrijven naar de database. (SQL-query) Voorheen gebruikte ik onderstaande code:
Maar doordat er een ander soort database gebruikt wordt, werkt dit niet meer. Om de database te openen en af te lezen gebruik ik deze code:
Wat moet ik doen (welke code moet ik gebruiken) om wél weer naar de nieuwe database te kunnen schrijven (die met de SQL-query?)
Alvast bedankt,
Tariq
(VB.NET2008)
Ik was bezig met een project. Ik gebruikte eerst Microsoft Acces om een database te maken voor mijn programma. Dit werkte allemaal fijn, maar ik wilde het iets aanpassen. Ik wilde een zoekbox en na het plaatsen van een vraag hier kreeg ik die. Alles werkt nu perfect (data ophalen, lezen). Alleen kan ik geen data meer schrijven naar de database. (SQL-query) Voorheen gebruikte ik onderstaande code:
Code:
Public Class MainForm
Private m_cnADONetConnection As New OleDb.OleDbConnection()
Private m_daDataAdapter As OleDb.OleDbDataAdapter
Private m_cbCommandBuilder As OleDb.OleDbCommandBuilder
Private m_dtContacts As New DataTable
Private m_rowPosition As Integer = 0
Private Sub MainForm_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
m_cnADONetConnection.Close()
m_cnADONetConnection.Dispose()
End Sub
Private Sub ShowCurrentRecord()
If m_dtContacts.Rows.Count = 0 Then
txtContactName.Text = ""
txtState.Text = ""
Exit Sub
End If
txtContactName.Text = _
m_dtContacts.Rows(m_rowPosition)("ContactName").ToString()
txtState.Text = _
m_dtContacts.Rows(m_rowPosition)("State").ToString()
End Sub
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cnADONetConnection As New OleDb.OleDbConnection()
m_cnADONetConnection.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\Contacts.mdb"
m_cnADONetConnection.Open()
m_daDataAdapter = New OleDb.OleDbDataAdapter("Select * From Contacts", m_cnADONetConnection)
m_cbCommandBuilder = New OleDb.OleDbCommandBuilder(m_daDataAdapter)
m_daDataAdapter.Fill(m_dtContacts)
Me.ShowCurrentRecord()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Move to the first row and show the data.
m_rowPosition = 0
Me.ShowCurrentRecord()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' If not at the first row, go back one row and show the record.
If m_rowPosition > 0 Then
m_rowPosition = m_rowPosition - 1
Me.ShowCurrentRecord()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' If not on the last row, advance one row and show the record.
If m_rowPosition < (m_dtContacts.Rows.Count - 1) Then
m_rowPosition = m_rowPosition + 1
Me.ShowCurrentRecord()
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' If there are any rows in the data table, move to the last and show
' the record.
If m_dtContacts.Rows.Count > 0 Then
m_rowPosition = m_dtContacts.Rows.Count - 1
Me.ShowCurrentRecord()
End If
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
' If there is existing data, update it.
If m_dtContacts.Rows.Count <> 0 Then
m_dtContacts.Rows(m_rowPosition)("ContactName") = txtContactName.Text
m_dtContacts.Rows(m_rowPosition)("State") = txtState.Text
m_daDataAdapter.Update(m_dtContacts)
End If
End Sub
Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click
Dim drNewRow As DataRow = m_dtContacts.NewRow()
drNewRow("ContactName") = txtNewContactName.Text
drNewRow("State") = txtNewState.Text
m_dtContacts.Rows.Add(drNewRow)
m_daDataAdapter.Update(m_dtContacts)
m_rowPosition = m_dtContacts.Rows.Count - 1
Me.ShowCurrentRecord()
End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
' If there is data, delete the current row.
If m_dtContacts.Rows.Count <> 0 Then
m_dtContacts.Rows(m_rowPosition).Delete()
m_daDataAdapter.Update(m_dtContacts)
m_rowPosition = 0
Me.ShowCurrentRecord()
End If
End Sub
End Class
Code:
Public Class Form1
'Maak de ODBC Database variable
Dim ODBC_Connectie As Odbc.OdbcConnection
'Geef aan welke databron je gaat gebruiken en geeft het volledige pad naar de database op
'Database staat in de \ZoekBox\ZoekBox\bin\Debug map
Dim Connectie_String As String = "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Temp\db.mdb"
'Creeer de Dataset variable
Public ds As New DataSet
Private Sub Me_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackColor = My.Settings.bc
Me.ForeColor = My.Settings.tc
Me.Button1.BackColor = My.Settings.buc
Me.Button2.BackColor = My.Settings.buc
'Maak de huidige dataset leeg
ds.Clear()
'Ga naar de Sub
Haal_SQL_Query_Op()
End Sub
'Zodra er een toets wordt ingedrukt in het tekstkader wordt deze Sub geactiveerd
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
'Maak de huidige dataset leeg
ds.Clear()
'Ga naar de Sub
Haal_SQL_Query_Op()
End Sub
Public Sub Haal_SQL_Query_Op()
'Verbind met de database volgens de opgegeven databron
ODBC_Connectie = New Odbc.OdbcConnection(Connectie_String)
'Open de database
ODBC_Connectie.Open()
'De SQL 'zoekfunctie' zoek naar alles in Naam of Achternaam waar de tekst van de Textbox1 in voorkomt.
Dim SQL_Query As String = "SELECT * FROM Adresgegevens WHERE (Naam LIKE '%" & TextBox1.Text & "%' OR AchternaamLIKE '%" & TextBox1.Text & "%') ORDER BY Naam, Achternaam;"
'Open de dataadapter om deze daarna te vullen met SQL Querydata
Dim da = New Odbc.OdbcDataAdapter(SQL_Query, ODBC_Connectie)
Label1.Text = "found " & da.Fill(ds, "Naam") & " records"
'Vul de DataGrid met data uit de DataSet
DataGridView1.DataSource = ds
DataGridView1.DataMember = "Naam"
'Sluit de database
ODBC_Connectie.Close()
End Sub
Wat moet ik doen (welke code moet ik gebruiken) om wél weer naar de nieuwe database te kunnen schrijven (die met de SQL-query?)
Alvast bedankt,
Tariq