Hallo,
Ik heb een probleem met mijn ASP.NET pagina's. Ik gebruik daarvoor een (gewone) Microsoft Access database en leg de connectie door middel van een OledbConnection. Vervolgens voer ik in de verschillende pagina's van mijn website een aantal SQL statements uit. Daar ligt het probleem: een SELECT FROM statement lukt perfect, maar een INSERT of een UPDATE geeft telkens dezelfde fout:
Beschrijving: Er is een onverwerkte uitzondering opgetreden tijdens het uitvoeren van de huidige webaanvraag. Raadpleeg de stacktracering voor meer informatie over deze fout en de oorsprong ervan in de code.
Details van uitzondering: System.Data.OleDb.OleDbException: De bewerking moet worden uitgevoerd op een query die kan worden bijgewerkt.
Fout in bron:
Regel 80: cn.Open()
Regel 81: daClubs.Update(ds, "clubs")
Regel 83: cn.Close()
Hier is de code uit een van de pagina's. Deze code werkt perfect in een gewoon programma gemaakt met Visual Studio .NET:
<%@ Page Language="VB" EnableSessionState="true" Debug="true" %>
<script runat="server">
Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=artgym.mdb"
Dim cn As New System.Data.OleDb.OleDbConnection(strConnection)
Protected Sub Page_Load(Byval Sender As System.Object, ByVal e As System.EventArgs)
If not Session("protected")=true then
Response.Redirect("login.aspx")
Else
Dim ds As System.Data.DataSet = getDataSet()
Dim dtClub As System.Data.DataTable = ds.Tables("clubs")
Dim dtFederatie As System.Data.DataTable = ds.Tables("federaties")
Dim row As System.Data.DataRow
If Not IsPostBack Then
txtClubnaam.Text = dtClub.Rows(0)("Clubnaam")
txtNaam.Text = valideer(dtClub.Rows(0)("verNaam"))
txtVoornaam.Text = valideer(dtClub.Rows(0)("verVoornaam"))
txtAdres.Text = valideer(dtClub.Rows(0)("verAdres"))
txtNr.Text = valideer(dtClub.Rows(0)("verNr"))
txtBus.Text = valideer(dtClub.Rows(0)("verBus"))
txtPostcode.Text = valideer(dtClub.Rows(0)("verPostcode"))
txtWoonplaats.Text = valideer(dtClub.Rows(0)("verWoonplaats"))
txtEmail.Text = valideer(dtClub.Rows(0)("verEmail"))
txtTelefoon.Text = valideer(dtClub.Rows(0)("verTelefoon"))
txtFax.Text = valideer(dtClub.Rows(0)("verFax"))
ddlLand.Items.Add("Belgie")
ddlLand.items.Add("Nederland")
btnAanpassen.Enabled = True
End If
End If
End Sub
Protected Sub btnTerug_Click(Sender As Object, E As EventArgs)
Response.Redirect("main.aspx")
End Sub
Protected Sub btnAanpassen_Click(Sender As Object, E As EventArgs)
'hier moeten alle controles komen
Call Update_Club
End Sub
Protected Sub Update_Club
Dim strClubs As String = ("SELECT * FROM Club")
Dim daClubs As new System.Data.Oledb.OledbDataAdapter(strClubs, cn)
Dim cbClub As New System.Data.Oledb.OledbCommandBuilder(daClubs)
Dim ds As System.Data.DataSet = getDataSet()
Dim dtClub As System.Data.DataTable = ds.Tables("clubs")
Dim row As System.Data.DataRow
row = dtClub.Rows(0)
row.beginEdit()
row("clubnaam") = txtClubnaam.Text
row("verNaam") = txtNaam.Text
row("verVoornaam") = txtVoornaam.text
row("verAdres") = txtAdres.Text
row("verNr") = txtNr.Text
row("verBus") = txtBus.Text
row("verPostcode") = txtPostcode.text
row("verWoonplaats") = txtWoonplaats.text
row("verTelefoon") = txtTelefoon.Text
row("verFax") = txtFax.text
row("verEmail") = txtEmail.Text
row.EndEdit()
cn.Open()
' Hier loopt het mis
daClubs.Update(ds, "clubs")
cn.Close()
End Sub
Function valideer(Byval veld As System.Object) As String
If IsDBNull(veld) Then
Return ""
ELse
Return veld
End If
End Function
Function GetDataSet() As System.Data.DataSet
Dim strClubs As String = ("SELECT * FROM Club WHERE clubNaam = '" + session("username") +"'")
Dim daClubs As new System.Data.Oledb.OledbDataAdapter(strClubs, cn)
Dim dataSet As new System.Data.DataSet()
cn.Open()
daClubs.Fill(dataSet, "clubs")
cn.Close()
Return dataSet
dataSet.Clear()
End Function
</script>
Ik heb al gezocht op MSDN.microsoft.com, maar daar wordt alles gedaan met een SQL connection ipv OleDb. Maar voor dit project zijn we verplicht OleDb te gebruiken. Ik hoop dat er iemand mij kan helpen. Dank bij voorbaat.
Ik heb een probleem met mijn ASP.NET pagina's. Ik gebruik daarvoor een (gewone) Microsoft Access database en leg de connectie door middel van een OledbConnection. Vervolgens voer ik in de verschillende pagina's van mijn website een aantal SQL statements uit. Daar ligt het probleem: een SELECT FROM statement lukt perfect, maar een INSERT of een UPDATE geeft telkens dezelfde fout:
Beschrijving: Er is een onverwerkte uitzondering opgetreden tijdens het uitvoeren van de huidige webaanvraag. Raadpleeg de stacktracering voor meer informatie over deze fout en de oorsprong ervan in de code.
Details van uitzondering: System.Data.OleDb.OleDbException: De bewerking moet worden uitgevoerd op een query die kan worden bijgewerkt.
Fout in bron:
Regel 80: cn.Open()
Regel 81: daClubs.Update(ds, "clubs")
Regel 83: cn.Close()
Hier is de code uit een van de pagina's. Deze code werkt perfect in een gewoon programma gemaakt met Visual Studio .NET:
<%@ Page Language="VB" EnableSessionState="true" Debug="true" %>
<script runat="server">
Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=artgym.mdb"
Dim cn As New System.Data.OleDb.OleDbConnection(strConnection)
Protected Sub Page_Load(Byval Sender As System.Object, ByVal e As System.EventArgs)
If not Session("protected")=true then
Response.Redirect("login.aspx")
Else
Dim ds As System.Data.DataSet = getDataSet()
Dim dtClub As System.Data.DataTable = ds.Tables("clubs")
Dim dtFederatie As System.Data.DataTable = ds.Tables("federaties")
Dim row As System.Data.DataRow
If Not IsPostBack Then
txtClubnaam.Text = dtClub.Rows(0)("Clubnaam")
txtNaam.Text = valideer(dtClub.Rows(0)("verNaam"))
txtVoornaam.Text = valideer(dtClub.Rows(0)("verVoornaam"))
txtAdres.Text = valideer(dtClub.Rows(0)("verAdres"))
txtNr.Text = valideer(dtClub.Rows(0)("verNr"))
txtBus.Text = valideer(dtClub.Rows(0)("verBus"))
txtPostcode.Text = valideer(dtClub.Rows(0)("verPostcode"))
txtWoonplaats.Text = valideer(dtClub.Rows(0)("verWoonplaats"))
txtEmail.Text = valideer(dtClub.Rows(0)("verEmail"))
txtTelefoon.Text = valideer(dtClub.Rows(0)("verTelefoon"))
txtFax.Text = valideer(dtClub.Rows(0)("verFax"))
ddlLand.Items.Add("Belgie")
ddlLand.items.Add("Nederland")
btnAanpassen.Enabled = True
End If
End If
End Sub
Protected Sub btnTerug_Click(Sender As Object, E As EventArgs)
Response.Redirect("main.aspx")
End Sub
Protected Sub btnAanpassen_Click(Sender As Object, E As EventArgs)
'hier moeten alle controles komen
Call Update_Club
End Sub
Protected Sub Update_Club
Dim strClubs As String = ("SELECT * FROM Club")
Dim daClubs As new System.Data.Oledb.OledbDataAdapter(strClubs, cn)
Dim cbClub As New System.Data.Oledb.OledbCommandBuilder(daClubs)
Dim ds As System.Data.DataSet = getDataSet()
Dim dtClub As System.Data.DataTable = ds.Tables("clubs")
Dim row As System.Data.DataRow
row = dtClub.Rows(0)
row.beginEdit()
row("clubnaam") = txtClubnaam.Text
row("verNaam") = txtNaam.Text
row("verVoornaam") = txtVoornaam.text
row("verAdres") = txtAdres.Text
row("verNr") = txtNr.Text
row("verBus") = txtBus.Text
row("verPostcode") = txtPostcode.text
row("verWoonplaats") = txtWoonplaats.text
row("verTelefoon") = txtTelefoon.Text
row("verFax") = txtFax.text
row("verEmail") = txtEmail.Text
row.EndEdit()
cn.Open()
' Hier loopt het mis
daClubs.Update(ds, "clubs")
cn.Close()
End Sub
Function valideer(Byval veld As System.Object) As String
If IsDBNull(veld) Then
Return ""
ELse
Return veld
End If
End Function
Function GetDataSet() As System.Data.DataSet
Dim strClubs As String = ("SELECT * FROM Club WHERE clubNaam = '" + session("username") +"'")
Dim daClubs As new System.Data.Oledb.OledbDataAdapter(strClubs, cn)
Dim dataSet As new System.Data.DataSet()
cn.Open()
daClubs.Fill(dataSet, "clubs")
cn.Close()
Return dataSet
dataSet.Clear()
End Function
</script>
Ik heb al gezocht op MSDN.microsoft.com, maar daar wordt alles gedaan met een SQL connection ipv OleDb. Maar voor dit project zijn we verplicht OleDb te gebruiken. Ik hoop dat er iemand mij kan helpen. Dank bij voorbaat.