我用ado链接打开一个dbf文件,但是每次打开时
总是提示以下信息:Project Pro_Bancan.exe raised exception class EOleException with message'无法启动应用程序。工作组信息文件丢失,或是已被其他用户以独占方式打开。'.Process stopped.UseStep or Run to continue.这是什么原因,用什么办法可以解决阿!
嫌分少可以加,只要能解决问题!

解决方案 »

  1.   

    先确认 dbf文件 是否被其它程序占用 
    或者拷贝到别的位置看看。
    dbf文件 偶用 tdbf控件操作的
      

  2.   

    dbf你完了
    这个东东只能操作一次
      

  3.   

    dbf同时,只能一个程序访问。
      

  4.   

    你的dbf是什么数据库?Oracle的数据库文件也是dbf呢?
      

  5.   

    如果是foxpro的,建议用BDE,如果觉得烦,建议Halcyon控件。
      

  6.   

    是forpro的,我现在用tdbf控件,但是不知道怎么用?
    哪位能讲解一下不?
      

  7.   

    我现在想直接把局域网上的db200608.dbf导入我的sql 里
    怎么写?我想在这样写
    SELECT * into db200608
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="\\192.168.1.115\c$\LGKQJ\";User ID=Administrator;
    Password=;Extended properties=dBase 5.0')...db200608
    还是提示:
    OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。验证失败。
    [OLE/DB provider returned message: 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。]大家快帮帮忙啊,急了,现在~
      

  8.   

    保证
    Data Source="\\192.168.1.115\c$\LGKQJ

    用户密码
    是正确的
      

  9.   

    1、使用BDE实现:创建一个table对象,设置其databasename属性为你放置DBF文件的路径,设置其tablename属性为你访问的表,如果是独占方式打开,请设置exclusive属性为ture,这样当table被active是就会返回DBF中的数据(我记得我原来是能够实现的,但是我刚才试了一下,我的delphi环境报错,好像是BDE驱动不对),你可以试一下能否成功。
    2、使用odbc数据源,可以手工建立也可以在程序里面建立好ODBC数据原,使用Microsoft FoxPro VFP Driver(*.dbf)驱动,注意在设置该数据源的时候,要选择Free Table directory
    ,设置PATH路径(你放置DBF的路径),然后在前台用ADO访问,我试过可以的,你试一下。
      

  10.   

    接上面,在创建ADO连接字符串是用户名和密码都不用输,哈哈,这大概就是DBF文件被淘汰的原因吧,单个的DBF文件没有密码保护功能。
      

  11.   

    实在抱歉,还得麻烦大家
    怎样建立odbc数据源?
      

  12.   

    明白了
    刚开始我就是使用odbc,可是连接时总是提示
    “Project Pro_Bancan.exe raised exception class EOleException with message'无法启动应用程序。工作组信息文件丢失,或是已被其他用户以独占方式打开。'.Process stopped.UseStep or Run to continue.”
      

  13.   

    在程序里面建立ODBC数据源其实很简单,就是对注册表的操作,你先在控制面板中的管理工具下的数据源里面手工创建一个,名称弄的特殊一点,配置好后,到注册表里面去搜索这个名称,找到后,你就会发现具体的键值是怎么设置的,记下来,然后在程序里面做同样的操作就行了,哈哈,简单吧
      

  14.   

    dbf文件只能以独占的方式打开,所以你得保证别的程序没有打开这个文件
      

  15.   

    要删除DBF里的数据更有难度吧,有谁知道怎样彻底删除DBF里的一条记录吗?我删除时它只在里面加了一个删除标识,没把数据删除?
      

  16.   

    删除DBF中的一条记录,要用DBI函数要用DbiPackTable
    如Check(DbiPackTable(Table1.DbHandle,Table1.Handle,Nil,szdBase,True));
      

  17.   

    EXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’ /***********  导入Excel 
    SELECT * 
    FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, 
      ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions 
    SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+’ ’ 转换后的别名 
    FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, 
      ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions /** 导入文本文件 
    EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword’ /** 导出文本文件 
    EXEC master..xp_cmdshell ’bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword’ 
    或 
    EXEC master..xp_cmdshell ’bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword’ 导出到TXT文本,用逗号分开 
    exec master..xp_cmdshell ’bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password’ 
    BULK INSERT 库名..表名 
    FROM ’c:\test.txt’ 
    WITH ( 
        FIELDTERMINATOR = ’;’, 
        ROWTERMINATOR = ’\n’ 

    --/* dBase IV文件 
    select * from 
    OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’ 
    ,’dBase IV;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [客户资料4.dbf]’) 
    --*/ --/* dBase III文件 
    select * from 
    OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’ 
    ,’dBase III;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [客户资料3.dbf]’) 
    --*/ --/* FoxPro 数据库 
    select * from openrowset(’MSDASQL’, 
    ’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\’, 
    ’select * from [aa.DBF]’) 
    --*/ /**************导入DBF文件****************/ 
    select * from openrowset(’MSDASQL’, 
    ’Driver=Microsoft Visual FoxPro Driver; 
    SourceDB=e:\VFP98\data; 
    SourceType=DBF’, 
    ’select * from customer where country != "USA" order by country’) 
    go 
    /***************** 导出到DBF ***************/ 
    如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句 insert into openrowset(’MSDASQL’, 
    ’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\’, 
    ’select * from [aa.DBF]’) 
    select * from 表 说明: 
    SourceDB=c:\  指定foxpro表所在的文件夹 
    aa.DBF        指定foxpro表的文件名.  
    /*************导出到Access********************/ 
    insert into openrowset(’Microsoft.Jet.OLEDB.4.0’, 
       ’x:\A.mdb’;’admin’;’’,A表) select * from 数据库名..B表 /*************导入Access********************/ 
    insert into B表 selet * from openrowset(’Microsoft.Jet.OLEDB.4.0’, 
       ’x:\A.mdb’;’admin’;’’,A表) *********************  导入 xml 文件 DECLARE @idoc int 
    DECLARE @doc varchar(1000) 
    --sample XML document 
    SET @doc =’ 
    <root> 
      <Customer cid= "C1" name="Janine" city="Issaquah"> 
          <Order oid="O1" date="1/20/1996" amount="3.5" /> 
          <Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied 
          </Order> 
       </Customer> 
       <Customer cid="C2" name="Ursula" city="Oelde" > 
          <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue 
                 white red"> 
                <Urgency>Important</Urgency> 
                Happy Customer. 
          </Order> 
          <Order oid="O4" date="1/20/1996" amount="10000"/> 
       </Customer> 
    </root> 
    ’ 
    -- Create an internal representation of the XML document. 
    EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT statement using OPENXML rowset provider. 
    SELECT * 
    FROM OPENXML (@idoc, ’/root/Customer/Order’, 1) 
          WITH (oid     char(5), 
                amount  float, 
                comment ntext ’text()’) 
    EXEC sp_xml_removedocument @idoc 
    这时maming2003(嘿!兄弟!!要煤不???) 在另外一个帖子中的回复,可能对你有用,你要谢谢这个兄弟哦