为什么总是出错。代码如下。郁闷<%@ Page Language="VB" ContentType="text/html" validateRequest="false"   ResponseEncoding="gb2312" %>
<%@ Import Namespace="system.data" %>
<%@ Import Namespace="system.data.oledb" %><script language="vb" runat="server">
Sub Page_Load(Src As Object, E As EventArgs)
  if not page.ispostback then
     call binddata()
  end if

End Subsub binddata()
     dim conn as new oledbconnection("provider=microsoft.jet.oledb.4.0;data source="& server.mappath("data.mdb"))
     dim cmd as new oledbcommand("select * from lanmu order by id desc",conn)
 dim adp as new oledbdataadapter(cmd)
 dim ds as new dataset()
 adp.fill(ds,"link")
 mydata.datasource=ds.tables("link").defaultview
 mydata.databind()
end subSub mydata_update(Src As Object, E As datagridcommandEventArgs)
   dim conn as new oledbconnection("provider=microsoft.jet.oledb.4.0;data source="& server.mappath("data.mdb"))
   dim txtid,lanmu as textbox
  ' txtid=e.item.cells(2).controls(0)
   lanmu=e.item.cells(2).controls(0)
   dim sqlstr as string
   sqlstr="update lanmu set lanmu='" & lanmu.text & "' where id=" & cint(mydata.datakeys(cint(e.item.itemindex)))
   dim cmd as new oledbcommand(sqlstr,conn)
   conn.open()
   cmd.executenonquery()
   conn.close
   mydata.edititemindex=-1
   call binddata()
   message.text=sqlstr
   
End SubSub mydata_cancel(Src As Object, E As datagridcommandEventArgs)
   mydata.edititemindex=-1
   call binddata()
End SubSub mydata_edit(Src As Object, E As datagridcommandEventArgs)
   mydata.edititemindex=cint(e.item.itemindex)
   call binddata()
End Sub
</script></script><html>
<body>
<form runat="server">
<asp:DataGrid DataKeyField="id"  headerstyle-backcolor="#bcbcbc" onupdatecommand="mydata_update" ID="mydata" runat="server" OnEditCommand="mydata_edit"   oncancelcommand="mydata_cancel">
  <columns>
  <asp:editcommandcolumn edittext="±à&frac14;&shy;" updatetext="&cedil;ü&ETH;&Acirc;" canceltext="&Egrave;&iexcl;&Iuml;&ucirc;" itemstyle-wrap="false"></asp:editcommandcolumn>
  </columns>
</asp:DataGrid><asp:Label ID="message" runat="server"></asp:Label>
</form>

</body>
</html>出错提示
-------------------------------------------
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------操作必须使用一个可更新的查询。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误: 
行 30:    dim cmd as new oledbcommand(sqlstr,conn)
行 31:    conn.open()
行 32:    cmd.executenonquery()
行 33:    conn.close
行 34:    mydata.edititemindex=-1
 源文件: c:\inetpub\wwwroot\net\4-21.aspx    行: 32 堆栈跟踪: 
[OleDbException (0x80004005): 操作必须使用一个可更新的查询。]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
   ASP._4_21_aspx.mydata_update(Object Src, DataGridCommandEventArgs E) in c:\inetpub\wwwroot\net\4-21.aspx:32
   System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e) +109
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e) +507
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e) +106
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +26
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +115
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +138
   System.Web.UI.Page.ProcessRequestMain() +1277 
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

解决方案 »

  1.   

    sqlstr="update lanmu set lanmu='" & lanmu.text & "' where id=" & cint(mydata.datakeys(cint(e.item.itemindex)))
    在这个地方设置断点看看ID有没有值和lanmu有没有值?
      

  2.   

    权限问题
    see
    http://community.csdn.net/Expert/topic/3054/3054501.xml?temp=.4695856
      

  3.   

    在资源管理器里面右键选择Access文件,设置web共享为everyone控制
    但问题依然存在。

    在这个地方设置断点看看ID有没有值和lanmu有值:
    update lanmu set lanmu='经济信息' where id=4 “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------操作必须使用一个可更新的查询。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误: 
    行 30:    dim cmd as new oledbcommand(sqlstr,conn)
    行 31:    conn.open()
    行 32:    cmd.executenonquery()
    行 33:    conn.close
    行 34:    mydata.edititemindex=-1