[ASP.NET] Lezen en bewerken in access database lukt niet.

Pagina: 1
Acties:

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:52

Erhnam

het Hardware-Hondje :]

Topicstarter
Ik heb een voorbeeld script wat werkt met een SQL server omgebouwd zodat het zou moeten werken met een access database. Maar dit gebeurt of werkt dus niet. iedere keer stuit ik op hetzelfde probleem. Ook een ander simpel scriptje gaf hetzelfde probleem:

Exception Details: System.Data.OleDb.OleDbException: No value given for one or more required parameters.

Line 36: MyCommand.ExecuteNonQuery()

Het script leest de access database uit.. Import alles in een grid en vervolgens zet het er knoppen naast waar je data mee kan bewerken. Nu heb ik het vermoeden dat het misschien aan access ligt. Zou het kunnen zijn zodra je uitleest en de database open is je er niet meer naar kan schrijven :?

( Als er behoefte is kan ik het script wel hier neerzetten )

http://www.xbmcfreak.nl/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:44

gorgi_19

Kruimeltjes zijn weer op :9

ExecuteNonQuery en uitlezen? Deze word dacht ik gebruikt als je juist geen records terug wilt hebben.

En een script / code verduidelijkt de boel wel (graag NIET alle 10.000 regels, maar alleen de relevante dingen... :P)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:52

Erhnam

het Hardware-Hondje :]

Topicstarter
Okee komt ie :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<%@ Page Language="VB" debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<html>
<head>
    <meta name="GENERATOR" Content="ASP Express 2.1">
    <title>Untitled</title>

<script language="VB" runat="server">
Sub MyDataGrid_EditCommand(s As Object, e As DataGridCommandEventArgs )
    MyDataGrid.EditItemIndex = e.Item.ItemIndex
    BindData
End Sub
Sub MyDataGrid_Cancel(Source As Object,   E As DataGridCommandEventArgs)
    MyDataGrid.EditItemIndex = -1
    BindData()
End Sub

Sub MyDataGrid_UpdateCommand(s As Object, e As DataGridCommandEventArgs )
    Dim conn As OleDbConnection
    Dim MyCommand As OleDbCommand
    Dim strConn as string = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & _
                   "C:\Inetpub\wwwroot\er2000.mdb;"
    Dim txtFirstName As textbox = E.Item.cells(2).Controls(0)
    Dim txtLastName As textbox = E.Item.cells(3).Controls(0)
    Dim txtTitle As textbox = E.Item.cells(4).Controls(0)
    Dim strUpdateStmt As String
    strUpdateStmt =" UPDATE login_users SET" & _
    " FirstName = '" & txtFirstName.Text  & "', " & _
    " LastName = '" & txtLastName.Text  & "', " & _
    " Title = '" & txtTitle.Text  & "'" & _
    " WHERE UserID = '" & e.Item.Cells(1).Text & "'"
    conn = New OleDbConnection(strConn)
    MyCommand = New OleDbCommand(strUpdateStmt, conn)
    conn.Open()
    MyCommand.ExecuteNonQuery()
    MyDataGrid.EditItemIndex = -1
    BindData
End Sub

Sub Page_Load(Source as Object, E as EventArgs)
    if not Page.IsPostBack then
        BindData
    end if
End Sub
Sub BindData()
Dim strConn as string = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & _
                   "C:\Inetpub\wwwroot\er2000.mdb;"
Dim sql as string = "Select UserID, Name, Surname, Password from login_users"
Dim conn as New OleDbConnection(strConn)
Dim objDR as OleDbDataReader
Dim Cmd as New OleDbCommand(sql, conn)
conn.Open()
objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
MyDataGrid.DataSource = objDR
MyDataGrid.DataBind()
End Sub
</script>
</head>
<body><div align="center">
<form runat="server" method="post">
<asp:Datagrid runat="server"
    Id="MyDataGrid"
    GridLines="Both"
    cellpadding="3"
    cellspacing="0"
    Headerstyle-BackColor="#CCCCCC"
    Headerstyle-Font-Name="Verdana"
    Headerstyle-Font-Size="12pt"
        Headerstyle-Font-Bold="True"
    BackColor="#FFFFFF"
    Font-Name="Verdana"
    Font-Size="12pt"
    BorderColor="Black"
    AutogenerateColumns="False"
    OnEditcommand="MyDataGrid_EditCommand"
    OnCancelcommand="MyDataGrid_Cancel"
    OnUpdateCommand="MyDataGrid_UpdateCommand">
    <Columns>
    <asp:EditCommandColumn 
            ButtonType="LinkButton" 
            UpdateText="Update" 
            CancelText="Cancel" 
            EditText="Edit" 
        HeaderText="Edit"> </asp:EditCommandColumn>
        <asp:BoundColumn 
            DataField="UserID" 
            HeaderText="UserID" 
            ReadOnly="True"> </asp:BoundColumn>
        <asp:BoundColumn 
            DataField="Name" 
            HeaderText="Name"> </asp:BoundColumn>
        <asp:BoundColumn 
            DataField="Surname" 
            HeaderText="Surname"> </asp:BoundColumn>
        <asp:BoundColumn 
            DataField="Password" 
            HeaderText="Password"> </asp:BoundColumn>
        </Columns>
</asp:DataGrid>
</form>
</div>
</body>
</html>

http://www.xbmcfreak.nl/


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Ipv van uw waardes mee te geven in uw CommandText, gebruik je beter parameters:
code:
1
2
3
4
5
6
7
8
MyCommand.CommandText = "UPDATE tabel SET veld = @p_waarde WHERE id = @p_id";
MyCommand.Parameters.Add ("@p_Waarde", OleDbType.Varchar);
MyCommand.Parameters.Add ("@p_id",           OleDbType.Integer);

MyCommand.Parameters["@p_Waarde"].Value = bla;
MyCommand.Parameters["@p_Id"].Value = 1;

MyCommand.ExecuteNonQuery();


Ik vermoed dat uw probleem eigenlijk ligt bij uw query. Er zal een foutje in zitten, een spatie of komma vergeten, een veld- of tabelnaam mistyped oid.

https://fgheysels.github.io/