| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4152 人关注过本帖
标题:请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭时, ...
只看楼主 加入收藏
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
结帖率:20.69%
收藏
已结贴  问题点数:2 回复次数:7 
请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭时,连接成功,请问,能否在Excel文件打开时 ,以SQL 方式连接并操作数据库?
请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭时,连接成功,请问,能否在Excel文件打开时 ,以SQL 方式连接并操作数据库?谢谢!
搜索更多相关主题的帖子: 数据库 Excel 
2016-06-18 16:51
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:1 
sql 连接EXCEL,使用的是 独占模式,进入独占时失败,就出会这种情况。

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


授人于鱼,不如授人于渔
早已停用QQ了
2016-06-18 17:53
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 2楼 风吹过b
谢谢回复!不过我以前确实在打开Excel文件的情况下 查询过Excel里的数据,而且我记得,更改Excel里的数据后,在不保存的情况下,也能用SQL 查询到最新的数据。现在想不起来以前是怎么弄的了,还请帮忙,谢谢了!
2016-06-18 20:50
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:1 
SQL连接,是不是使用ADO对象连接Excel的,如果是记录集对象的打开方式就有讲究。
如果是这样,你回复,帮你解决。
最好有代码。

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


请不要选我!!!
2016-06-19 13:36
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 4楼 ZHRXJR
太感谢了,麻烦你给看一下,下面是我的连接串
CnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile &  ";Extended Properties=Excel 12.0"
如果 ExcelFile 是只读打开的或关闭的,这个连接就没问题,如果是正常打开的,就连接不上了

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

2016-06-19 14:46
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
回复 mansohu
CnnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelFile &  ";Extended Properties=Excel 12.0"
只能说明你连接的是2007或以上版本的Excel,但不知道你的打开方式,出问题肯定不在这个字符串上。

请不要选我!!!
2016-06-19 19:02
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 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是打开的,这句出错,如果是只读打开或关闭的,就可以正常连接

还请指导,非常感谢!
2016-06-19 19:21
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
回复 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,均不会出现问题。

请不要选我!!!
2016-06-20 08:24
快速回复:请问,我用 SQL 连接 Excel 文件时,当文件打开时,连接失败,文件关闭 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044385 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved