Toon posts:

[ASP.NET] + [ACCESS]

Pagina: 1
Acties:

Verwijderd

Topicstarter
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.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Je hebt (of beter, de ASPNET of IUSR_ ) account heeft waarschijnlijk geen (schrijf)rechten op de map waar het mdb bestand zich in bevind.
Als je de aspnet of iusr_ account daar de nodige rechten op geeft, zou het moeten werken.

(Je bent niet alleen verplicht om OleDb te gebruiken, je kan ook niet anders. SqlClient werkt enkel samen met SQL Server (vanaf 7.0) en MSDE).

Je moet trouwens je hele code hier niet plakken hoor. Enkel de relevante code is genoeg. In dit geval: geen eigenlijk. :P

[ Voor 16% gewijzigd door whoami op 17-03-2004 21:30 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Hallo,

Hoe wijs je juist die rechten toe? want ik ben geen grote MS Access kenner.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Dat heeft ook niets met Access te maken, maar met Windows.
Rechtsklikken op de map, properties, security kiezen, etc....

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik krijg nog steeds dezelfde fout. Ik heb volgende dingen aangepast:
rechtermuisklik op de map waar de database instaat, dan Delen Via Het Web, en dan Map Delen, vervolgens lees, schrijf rechten toegepast.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

Zie Deze hier

En voor je volgende vraag, die waarschijnlijk er op gaat volgen:
Dit hier

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Verwijderd schreef op 17 maart 2004 @ 21:57:
Ik krijg nog steeds dezelfde fout. Ik heb volgende dingen aangepast:
rechtermuisklik op de map waar de database instaat, dan Delen Via Het Web, en dan Map Delen, vervolgens lees, schrijf rechten toegepast.
Je moet dus de NTFS rechten goedzetten, zoals gorgi_19 al aangeeft. Niemand heeft het toch over 'delen' gehad, en al zeker niet via het web....

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

Ow trouwens, als je toch die PW-FAQ aan het doorlezen ben, lees dan gelijk nog een stukje over Parametrized queries, want ik gok dat je applicatie zo lek is als een mandje.

Hint: SQL Injection Attacks en Cross Site Scripting Attacks.

Doe je dat niet, dan moet je niet verbaasd zijn en hier boos aankomen met een post dat iemand je halve site vernaggeld heeft.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

.

[ Voor 100% gewijzigd door gorgi_19 op 17-03-2004 22:39 . Reden: Dubbel ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ik zal het zeker eens bekijken. Bedankt voor de oplossingen.
Pagina: 1