1>程序中的用到Sql 语句:
-----------------------------------
sqlstr+="insert into SendCarCmdTab " +
" (SendCmdID,CarSendUnit,CarDriver,CarNo,CarType,UseUnit,CarUser,CarUseTime,ReturnTime,Mission,Times,ServerAdd,ReportAdd,FromEnd,CmdSender,FreeType) "+
"values('" + this.SendCmdID.Text.ToString() + 
"','" + this.CarSendUnit.Text.ToString() + 
"','" + this.CarDriver.Text.ToString() +
"','" + this.CarNo.Text.ToString() +
"','" + this.CarType.Text.ToString() +
"','" + this.UseUnit.Text.ToString() +
"','" + this.CarUser.Text.ToString() +
"','" + this.CarUseTime.Text.ToString() +
"','" + this.ReturnTime.Text.ToString() +
"','" + this.Mission.Text.ToString() +
"','" + this.Times.Text.ToString() +
"','" + this.ServerAdd.Text.ToString() +
"','" + this.ReportAdd.Text.ToString() + 
"','" + this.FromEnd.Text.ToString() + 
"','" + this.CmdSender.Text.ToString() +
"','" + this.FreeType.Text.ToString() + "')";
2>----------------------------------
如果对相应的TextBox赋值是生成的sql形式如下:
insert into SendCarCmdTab  (SendCmdID,CarSendUnit,CarDriver,CarNo,CarType,UseUnit,CarUser,CarUseTime,ReturnTime,Mission,Times,ServerAdd,ReportAdd,FromEnd,CmdSender,FreeType) 
values('2006-1-1-1','','','','','一连队','','2006-01-03','','','','','前方楼','','','')这个SQL在ACCESS查询中可以运行成功
高手看看怎么回事??----------------------------------
3>-----------------------------------
提示错误 如下:
----------------------------------
操作必须使用一个可更新的查询。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。源错误: 
行 194:
行 195: OleDbCommand objcommand=new OleDbCommand(sqlstr,cn);
行 196: objcommand.ExecuteNonQuery();
行 197:
行 198: cn.Close();
 源文件: c:\inetpub\wwwroot\clmanagement\jgsendcmd.aspx.cs    行: 196 堆栈跟踪: 
[OleDbException (0x80004005): 操作必须使用一个可更新的查询。]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   clManagement.jgManagement.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\clmanagement\jgsendcmd.aspx.cs:196
   System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain() 

解决方案 »

  1.   

    把表结构生成sql语句贴出来,建测试环境,帮你跟一下
      

  2.   

    先告诉我有没有数据库的操作权限啊?
    首先给Access加一个everyone的完全控制的权限看看,结果怎么样?
      

  3.   

    表名:   SendCarCmdTab  
    SendCmdID
    CarSendUnit
    CarDriver
    CarNo
    CarType
    UseUnit
    CarUser
    CarUseTime
    ReturnTime
    Mission
    Times
    ServerAdd
    ReportAdd
    FromEnd
    CmdSender
    FreeType
    --------------------------
    以上字段都是 文本 类型   长度:50
      

  4.   

    错误“操作必须使用一个可更新的查询”原因及解决办法
    错误信息:
    Microsoft OLE DB Provider for ODBC Drivers error '80004005' 
    [Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an
    updateable query. 
    或者是:
    Microsoft JET Database Engine (0x80004005)
    操作必须使用一个可更新的查询。
    原因:
    有几个主要的错误原因:
    这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
    ADO由于以下的几个原因而不能够写数据库造成的。
    1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。 
    要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
    当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
    Jet需要在该目录建立一个.ldb文件。
    2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
    SQL = "UPDATE Products Set UnitPrice = 2;"
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Mode = 3 '3 = adModeReadWrite
    Conn.Open "myDSN"
    Conn.Execute(SQL)
    Conn.Close
    注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
    3。还有可能是在ODBC管理器中将该DSN的只读选项选中。
    4。你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新
    这两个表中各自字段。
    5。当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)
    中的查询时,在执行这个查询是会出现该错误。
    先看看这个.
      

  5.   

    一般应该是 ASPNET 帐户的权限问题
    如果用了ODBC,看看ODBC的设置,是不是只读
      

  6.   

    谢谢各个大哥帮忙!!! Many 3xs
    问题解决
    To: renyu732(Sysinfo) 我按你方法解决了问题
    To: singlepine(小山) charles_y(难得糊涂) 感谢善良、热心大哥
      

  7.   

    结贴
    我刚学习ACCESS方面东西;晓的很少,
    继续学习中。。
      

  8.   

    CREATE TABLE SendCarCmdTab (
    SendCmdID varchar(50) ,
    CarSendUnit varchar(50) ,
    CarDriver varchar(50) ,
    CarNo varchar(50) ,
    CarType varchar(50) ,
    UseUnit varchar(50) ,
    CarUser varchar(50) ,
    CarUseTime varchar(50) ,
    ReturnTime varchar(50) ,
    Mission varchar(50) ,
    Times varchar(50) ,
    ServerAdd varchar(50) ,
    ReportAdd varchar(50) ,
    FromEnd varchar(50) ,
    CmdSender varchar(50) ,
    FreeType varchar(50)

    sql语句没问题
      

  9.   

    数据库 没有被写入权限 给数据库 增加 everyone 写入的权限就可以, 默认情况下是只读的
      

  10.   

    数据库 没有被写入权限 给数据库 增加 everyone 写入的权限就可以, 默认情况下是只读的