
Crew .NET |
|
Waarom 2x een verbinding sluiten als je ze maar een keer open doet. Op regel 27 sluit je de verbinding en daarna nog eens op regel 34. Dat is zeker niet in orde. Declareer voor de duidelijkheid eens je variabelen op voorhand en niet apart allemaal in een codeblok. Wat nog niet logisch is, is dat je al een query maakt gebaseerd op de waarde van een tekstvak en pas daarna gaat controleren of er wel iets ingevuld is. Het is een beetje rommelige code, vind je zelf niet?
Dim oConString2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|schoolagenda.mdb;"
Dim oCon2 As New OleDb.OleDbConnection(oConString2)
Dim sqlVakBestaat As String
Dim sSQL As String
Dim oCmdVakBestaat As OleDbCommand()
Dim oCom As OleDbCommand()
Dim oReaderVakBestaat As OleDbDataReader
If (Me.txtVakAdd.Text.Equals("")) Then
MessageBox.Show("Vul een vaknaam in!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
Try
oCon2.Open()
sqlVakBestaat = "SELECT COUNT(*) FROM tblVakken WHERE Naam = '" & Me.txtVakAdd.Text & "'"
oCmdVakBestaat = New OleDbCommand(sqlVakBestaat, oCon2)
oReaderVakBestaat = oCmdVakBestaat.ExecuteReader
oReaderVakBestaat.Read()
If (oReaderVakBestaat(0) > 0) Then
MessageBox.Show("Het ingevoerde vak bestaat reeds!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
'insert into database
sSQL = "INSERT INTO tblVakken(naam) VALUES('" & Me.txtVakAdd.Text & "')"
oCom = New OleDbCommand(sSQL, oCon2)
Try
oCom.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
oCom.Dispose()
End Try
End If
oCmdVakBestaat.Dispose()
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
oCon2.Close()
oCon2.Dispose()
End Try
End If
Dim oConString2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|schoolagenda.mdb;" Dim oCon2 As New OleDb.OleDbConnection(oConString2) Dim sqlVakBestaat As String Dim sSQL As String Dim oCmdVakBestaat As OleDbCommand() Dim oCom As OleDbCommand() Dim oReaderVakBestaat As OleDbDataReader If (Me.txtVakAdd.Text.Equals("")) Then MessageBox.Show("Vul een vaknaam in!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Else Try oCon2.Open() sqlVakBestaat = "SELECT COUNT(*) FROM tblVakken WHERE Naam = '" & Me.txtVakAdd.Text & "'" oCmdVakBestaat = New OleDbCommand(sqlVakBestaat, oCon2) oReaderVakBestaat = oCmdVakBestaat.ExecuteReader oReaderVakBestaat.Read() If (oReaderVakBestaat(0) > 0) Then MessageBox.Show("Het ingevoerde vak bestaat reeds!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Else 'insert into database sSQL = "INSERT INTO tblVakken(naam) VALUES('" & Me.txtVakAdd.Text & "')" oCom = New OleDbCommand(sSQL, oCon2) Try oCom.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Finally oCom.Dispose() End Try End If oCmdVakBestaat.Dispose() Catch ex As Exception MessageBox.Show(ex.ToString) Finally oCon2.Close() oCon2.Dispose() End Try End If
Probeer dit eens, misschien heb ik per ongeluk met het op voorhand definieren van variabelen een klein foutje gemaakt maar normaal is deze code al veel beter. Verder heb ik niet direct een fout gevonden in je code. |