PROBLEEMSTELLING:
Een Access database, één tabel met één primaire sleutel.
ASP.NET website vraagt uit de database gegevens op en zet deze in een DataGrid. Deze heeft mogelijkheid tot EDIT en UPDATE.
Na commando edit gaat deze over tot E.Item.Itemindex (edit item index) en kunnen hier nieuwe waarden voor een rij worden ingevuld, alle waarden behalve de primaire sleutel welke onveranderbaar is.
De update functie kijkt en vergelijkt welk veld in de op het scherm getoonde tabel de ID heeft, vergelijkt deze met de ID in de tabel van de database en update in die rij de waarden. De ID is een Autonummer veld.
Welnu... ik zeg update en de pagina stuurt de waarden in de textboxes naar de update functie:
'Qupdate(ID,Software,Kluis,Kast,Extra,Ltotaal,Lgebruik,Lspec,Ontbreekt)'
De update functie (even zonder verdere benaming en specs van de params):
En dan... de rowsAffected return 0!!! Waarom?
De oude waarden blijven staan en de update is mislukt.
Heb geprobeerd behalve de waarden op ID te vergelijken met de tabel het ook een geprobeerd met het veld 'Software' (wordt wel vervelend bij dubbele waarden). Dan werkt het wel, de update geschiedde. Alleen het kolommetje (veld eigenlijk, want er is slechts 1 row) software zelf update niet. hmm....
In ieder geval...
Wie kan mij zeggen waarom mijn update functie niet functioneert?
Bas Zwaan
ICTRO
Vestiging Utrecht
Een Access database, één tabel met één primaire sleutel.
ASP.NET website vraagt uit de database gegevens op en zet deze in een DataGrid. Deze heeft mogelijkheid tot EDIT en UPDATE.
Na commando edit gaat deze over tot E.Item.Itemindex (edit item index) en kunnen hier nieuwe waarden voor een rij worden ingevuld, alle waarden behalve de primaire sleutel welke onveranderbaar is.
De update functie kijkt en vergelijkt welk veld in de op het scherm getoonde tabel de ID heeft, vergelijkt deze met de ID in de tabel van de database en update in die rij de waarden. De ID is een Autonummer veld.
Welnu... ik zeg update en de pagina stuurt de waarden in de textboxes naar de update functie:
'Qupdate(ID,Software,Kluis,Kast,Extra,Ltotaal,Lgebruik,Lspec,Ontbreekt)'
De update functie (even zonder verdere benaming en specs van de params):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Code:
Function Qupdate(ByVal id As Integer, ByVal software As String, ByVal inkluis As Boolean, ByVal inkast As Boolean, ByVal extrainfo As String, ByVal totaallicenties As String, ByVal ingebruiklicenties As String, ByVal specificatielicenties As String, ByVal ontbreekt As Boolean) As Integer
Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\Inetpub\wwwr"& _
"oot\softwarekast.mdb"
Dim dbConnection As System.Data.IDbConnection = New System.Data.OleDb.OleDbConnection(connectionString)
Dim queryString As String = "UPDATE [software] SET [Software]=@Software, [inkluis]=@inkluis, [inkast]=@inkast,"& _
" [extrainfo]=@extrainfo, [totaallicenties]=@totaallicenties, [ingebruiklicenties"& _"]=@ingebruiklicenties, [specificatielicenties]=@specificatielicenties, [ontbreek"& _"t]=@ontbreekt WHERE ([software].[Id] = @Id)"
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim rowsAffected As Integer = 0
dbConnection.Open
Try
rowsAffected = dbCommand.ExecuteNonQuery
Finally
dbConnection.Close
End Try
Return rowsAffected
End Function |
En dan... de rowsAffected return 0!!! Waarom?
De oude waarden blijven staan en de update is mislukt.
Heb geprobeerd behalve de waarden op ID te vergelijken met de tabel het ook een geprobeerd met het veld 'Software' (wordt wel vervelend bij dubbele waarden). Dan werkt het wel, de update geschiedde. Alleen het kolommetje (veld eigenlijk, want er is slechts 1 row) software zelf update niet. hmm....
In ieder geval...
Wie kan mij zeggen waarom mijn update functie niet functioneert?
Bas Zwaan
ICTRO
Vestiging Utrecht