我用的是
Set dat = OpenDatabase(App.Path & "\", False, False, "FoxPro 2.5")
是可以的

解决方案 »

  1.   

    有几个主要的错误原因:
        这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
    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)  中的查询时,在执行这个查询是会出现该错误。
      

  2.   

    在insert时,你是否保证生成的ID没有重复?有的话,就绝对不可能了!
      

  3.   

    我看过了,有权限;没有重复的ID;申明,我是用DAO打开的!
      

  4.   

    你是在同时操作两个表中的字段,也会出现这个错误信息,解决办法是分开更新 这两个表中各自字段。
         db.Execute ("insert into a select * from b ")。
    建议把这句insert into a select * from b 
    分成两步看看!!
      

  5.   

    建议把这句insert into a select * from b 
    分成两步看看!!
    1.select
    2.insert
      

  6.   

    ualtree(梦想依旧) 怎么办呀,可不可以给出完整的代码:?!
      

  7.   

    你用select zd1,zd2,zd3。from b 来看看  也许你的表A和表B的字段次序不一样的
      

  8.   

    _1_(www.jinesc.com) :
        不是吧,字段次序不一样也会出错呀?!
      

  9.   

    你要不先用select * from c from b 做个新表 
    再来 insert  into c select * from b   试一下好了 我以前的这样的系统一般是先kill掉旧表再 select * into 的
      

  10.   

    select * from c from b ?????这个语句是怎么回事哦?
      

  11.   

    select * into c from b
      

  12.   

    _1_(www.jinesc.com) :
    谢谢你.成功了,搞定了,这个办法可行!但又出现 了另一个新问题,我运行这个程序以后,再次运行,出现错误:3173打不开工作组信息文件中的表"MYsysAccounts",这又是怎么回事呀?
      

  13.   

    这已经是很就以前的东西了我记得我一直用select * into 的 再KILL旧表 再改名的  美名约:数据整理