对不起,上面文中的dbreadly应为dbreadonly.

解决方案 »

  1.   

    这说明这个数据库已经被网络上的另一个用户使用,而且是“排他”方式打开的,你当然没有办法。只有等他好了以后再说咯。或者,告诉你另外一个方法:找到 WJZ,拔掉他的电源……
      

  2.   

    FILECOPY在使用时要保证该文件(数据库)一定是关闭的,否则就执行不了!
      

  3.   

    让WJZ那位老兄先把ACCESS给关喽!
      

  4.   

    首先要感谢各位指点。但我这里要再声明几点:1、WJZ就是我的电脑,而且绝没有与其他机器联网;
                        2、我在运行此程序时,并没有打开ACCESS;前面好几位朋友都提到:运行压缩与拷贝前要先关闭数据库,我猜测也是这个理,可是要怎样才能
    关闭它呢?
    (我的工程一运行,就通过ADO控件与DATAGRID控件把数据库的表显示在窗体上了。而且我又很想把"压缩与拷贝"的功能和访问数据库的其他功能做在同一个程序中。)
      

  5.   

    断开程序与数据库的连接,关闭一切会引起错误的对象,这个不是ADO,DAO的时,这个提示是说有人正在访问数据库,你应该断开连接才可以实现你的想法。
      

  6.   

    to 各位:  我知道我的程序中有打开的表,所以不能压缩与拷贝,但我可以肯定这是ADO控件打开的,可我就是不知道该怎样在压缩与拷贝前关闭所有的表,或者说断开连接,有谁能告诉我怎么才能彻底割断ADO控件与数据库的联系吗?(但不要用关闭整个工程的方法。)
      

  7.   

    用set 语句关闭 
     connection.close   
    set connection =nothing 
    我想应该在你点击开始压缩的控件事件中用这条语句
      

  8.   

    你叫机器‘WJZ’上的用户‘ADMIN’将数据库关掉不就可以啦。
      

  9.   

    to setfocus: 我用的是ADO控件,而不是ADO代码。
    to  siyuan79: 请看我9月3日的留言。
      

  10.   

    你是这样用的吗?If Dir("New.mdb") <> "" Then _
          Kill "New.mdb"DBEngine.CompactDatabase "Current.mdb", _
          "New.mdb", dbLangKoreanFileCopy "New.mdb","Current.mdb"
    Kill "New.mdb"
      

  11.   

    你的问题是数据库打开的时候产生了.LDB文件,记在重启计算机后删除该文件就可以压缩数据库了(这个问题我也遇到过)。
      

  12.   

    to ozw: 基本上是这样,但不知"dbLangKorean"是何意?
    to crystal2000:请问该.LDB文件是什么文件?在哪个目录中?
    不过,我本人还是觉得问题的关键在于要断开ADO控件与数据库的联系!
      

  13.   

    在一个程序中实现的时候, 先做个打开数据库后的标记, 很简单的, 在FILECOPY时先判断,如果是打开, 可以暂时关闭数据库,别忘了检查数据库的变化, 需要保存及时保存! FILECOPY 后在打开, 主要是关闭数据库时需要了解数据库使用情况。
      

  14.   

    可我就是不知如何在程序中关闭用ADO控件打开的数据库啊!!!能否举例说明?谢谢。
      

  15.   

    关闭所有数据库,用 table(i).close 方法.
      

  16.   

    to loudf: 对ADO控件来说,好象根本没有table这个对象?
      

  17.   

    找了半天一无所获,看来关掉ado控件的连接好象是有点难度。
    我想还是用代码来代替控件吧!!便于管理!呵呵(偷懒)
    我再帮你找找
      

  18.   

    注销一下!ADO控件登陆名错误或是密码!
      

  19.   

    问题出在Ado控件上
    用控件做数据库开发看似很容易,而且可以少写很多代码,可是也带来很多弊病,我个人的观点是不用控件,这样上面的问题也就很好解决了。因为程序一旦运行起来,控件就与数据库关联并在后台操作。
    建议ADO控件的所有属性(特别是关联数据库)在程序中动态设定,只有在对数据库操作时才关联,用完后取消,这样也许能行
    还有,我用VB操作数据库一般采用这样的原则:
      用数据库对象,不用控件
      每次打开结果集都是只读和只向前的
      所有对数据库的操作都用动作查询来实现
      

  20.   

    那我想请教:如不用ADO控件而用对象代码的话,那我如何能够把代码中查到的数据显示到DATAGRID控件上去呢?
    谢谢!
      

  21.   

    dim rs as ado.recordset
    set datagrid.datasource = rs
    就可以了
      

  22.   

    用ADO控件也可以,不要给它设属性
    dim cn as adodb.connection
    dim rs as new adodb.recordset
    cn.open "......"
    rs=cn.Execute("select ....")
    Set Adodc1.Recordset = rs
      

  23.   

    用ADO的话,工程引用要添加ADO库 vb6.0 
      

  24.   

    to 小石头:你的"dim rs as ado.recordset "是否应为"dim rs as adodb.recordset ".另外:在改用ADO代码"set datagrid.datasource = rs"后,如果要压缩数据库,是否不必作任何处理就可进行?还是说也要把该rs关闭才能压缩?如要关闭,又如何关闭rs呢?谢各位!
      

  25.   

    我昨天做了试验,发现几个问题:
    1、按小石头的用Set DataGrid1.DataSource = rs语句的话,运行时会出错,系统提示
       "行集合不能作为标签"
    2、按沧浪客的用Set Adodc1.Recordset = rs语句的话,运行时能看到ADO控件变亮,
    说明其连到数据库上了,但刷新ADO与DATAGRID两控件后,DATAGRID上仍没有数据。总之,上述两种方法好象都不能让网格中显示出数据来。
    请各位指点原因或其他方法。多谢!!!
      

  26.   

    把Email给我,我给你解决问题。
      

  27.   

    [email protected] weidong70!
      

  28.   

    同意: DevilXelloss(傑洛仕) 的后一种方法:)