【问题标题】:Excel oledb connection to Ms-Access database lock access dbExcel oledb 连接到 Ms-Access 数据库锁访问 db
【发布时间】:2010-08-17 07:05:23
【问题描述】:

我有一个使用 ole db 连接连接到 MS-Access 2003 数据库的 Excel 电子表格。当我刷新电子表格中的数据并打开我的 ms-access 数据库时,它说数据库是只读的。如果我关闭电子表格然后打开 MS-Access DB,它会以写入模式打开。以下是 Excel 电子表格中使用的连接字符串。

Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;
Data Source=D:\Dev\Reports.mdb;Mode=Share Deny Write;Extended Properties="";
Jet OLEDB:System database="";Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

【问题讨论】:

  • 你如何接受答案?在提出新问题之前,您应该接受正确的答案。
  • 我没有得到任何解决问题的有效答案
  • @hgulyan 我很高兴有上一个问题的链接。
  • @Remou 他在 SO 中提出了 7 个问题,但没有得到接受的答案。你可以吗?
  • @hgulyan 我只是想检查一下我给出的答案是否与您给出的答案相同。 @Kannabiran 似乎没有按照 SO 的精神工作。

标签: excel


【解决方案1】:

将"Mode=Share Deny Write" 更改为"Mode=Read"

在连接字符串中

【讨论】:

【解决方案2】:

您是否检查过 Excel 用户对包含 Access 文件的文件夹具有完全权限?

【讨论】:

  • 我找到了解决办法...我们需要设置mode=read;在连接字符串中...解决了问题
【解决方案3】:

Excel 的后台刷新选项已启用。禁用它,或使用查询工作室将查询设计为 DBQ。

<xml id=msodc><odc:OfficeDataConnection xmlns:odc="urn:schemas-microsoft-com:office:odc"
xmlns="http://www.w3.org/TR/REC-html40">
  <odc:Connection odc:Type="ODBC">
    <odc:ConnectionString>
    DBQ=<database path and filename>;DefaultDir=<database path>;
    Driver={Microsoft Access Driver (*.mdb, *.accdb)};DriverId=25;
    FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;
    ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;
    </odc:ConnectionString>
  <odc:CommandText>SELECT ... FROM ... WHERE ... </odc:CommandText>
  </odc:Connection>
</odc:OfficeDataConnection></xml>

【讨论】:

    【解决方案4】:

    对于那些使用旧版 Excel(比如我使用 Excel 2003)的用户,它们没有 GUI 连接字符串选项:

    首先将查询保存为.dqy,然后使用您喜爱的文本编辑器打开保存的文件。将Mode 键与其他键一起添加(实际SQL 查询字符串上方的行,不要忘记;)

    你必须使用数值而不是字符串值:

    Numerical String
    Mode=0x1 Mode=Read
    Mode=0x2 Mode=Write
    Mode=0x3 Mode=ReadWrite
    Mode=0x4 Mode=Share Deny Read
    Mode=0x8 Mode=Share Deny Write
    Mode=0xC Mode=Share Exclusive
    Mode=0x10 Mode=Share Deny None

    感谢提供link to the documentation of the numeric values 的@Slai。

    【讨论】:

      猜你喜欢
      • 2013-04-20
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多