注册 登录
编程论坛 VB6论坛

请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭时,连接成功,请问,能否在Excel文件打开时 ,以SQL 方式连接并操作数据库?

mansohu 发布于 2016-06-18 16:51, 4269 次点击
请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭时,连接成功,请问,能否在Excel文件打开时 ,以SQL 方式连接并操作数据库?谢谢!
7 回复
#2
风吹过b2016-06-18 17:53
sql 连接EXCEL,使用的是 独占模式,进入独占时失败,就出会这种情况。

-----------以下仅仅是猜测,未经测试---------------
你连接失败,是第一步建立连接时就失败,还是在打开表时失败。
连接时失败,那关闭文件再打开吧。
打开表时失,那换打开表的模式吧。打开表可选非独占模式。

#3
mansohu2016-06-18 20:50
回复 2楼 风吹过b
谢谢回复!不过我以前确实在打开Excel文件的情况下 查询过Excel里的数据,而且我记得,更改Excel里的数据后,在不保存的情况下,也能用SQL 查询到最新的数据。现在想不起来以前是怎么弄的了,还请帮忙,谢谢了!
#4
ZHRXJR2016-06-19 13:36
SQL连接,是不是使用ADO对象连接Excel的,如果是记录集对象的打开方式就有讲究。
如果是这样,你回复,帮你解决。
最好有代码。

[此贴子已经被作者于2016-6-19 13:37编辑过]

#5
mansohu2016-06-19 14:46
回复 4楼 ZHRXJR
太感谢了,麻烦你给看一下,下面是我的连接串
CnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile &  ";Extended Properties=Excel 12.0"
如果 ExcelFile 是只读打开的或关闭的,这个连接就没问题,如果是正常打开的,就连接不上了

[此贴子已经被作者于2016-6-19 14:47编辑过]

#6
ZHRXJR2016-06-19 19:02
回复 mansohu
CnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile &  ";Extended Properties=Excel 12.0"
只能说明你连接的是2007或以上版本的Excel,但不知道你的打开方式,出问题肯定不在这个字符串上。
#7
mansohu2016-06-19 19:21
回复 6楼 ZHRXJR

连接数据库代码如下:
Set Cnn = CreateObject("ADODB.Connection")
CnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile &  ";Extended Properties=Excel 12.0"
Cnn.Open CnnStr    ’如果ExcelFile是打开的,这句出错,如果是只读打开或关闭的,就可以正常连接

还请指导,非常感谢!
#8
ZHRXJR2016-06-20 08:24
回复 7楼 mansohu
你是在ASP中连接Excel的吗?你的代码应该是ASP的代码,在ASP中,这种“如果ExcelFile是打开的,这句出错,如果是只读打开或关闭的,就可以正常连接”是正常的,是ASP程序的性能决定的,即就是连接Access数据库也会出现这个问题。
如果你不是在ASP中连接,而是在VB中连接,这个代码就不对,在VB中连接一般采用ADO对象或ADO控件连接,引用ADO对象:
只有本站会员才能查看附件,请 登录

然后定义 Dim Cnn As New ADODB.Connection 数据库连接对象 与 Dim RS As New ADODB.Recordset 记录集对象,那么你的代码就应该是:
Dim Cnn As New ADODB.Connection, RS As New ADODB.Recordset
CnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile &  ";Extended Properties=Excel 12.0"
Cnn.Open CnnStr

这样不论你是否打开Excel,均不会出现问题。
1