ASP中打开数据库时会报:“不支持此接口”的错误
编号:QA004691
建立日期: 2003年6月3日 最后修改日期:2003年6月3日
所属类别:
Q
fei liu:
操作系统:Win
编程工具:vb6.0
问题:我在vb6.0中制作了一个dll,该dll中通过ADO连接到Access2000数据库,编译好以后,在vb6.0的其它工程中能够成功引用。但当我在Interdev中把它引用到一个ASP文件后,运行该ASP会报:“不支持此接口”的错误。通过错误跟踪我发现是在数据库open时出的错。以下是dll文件代码,烦请不吝赐教:
Option Explicit
Private a1() As String
Public Function arry_ini() As String
On Error Resume Next
Dim myconn As New ADODB.Connection
Dim myrecf As New ADODB.Recordset
Dim myrect As New ADODB.Recordset
Dim i As Single
myconn.Provider = "Microsoft.Jet.OLEDB.4.0"
myconn.Properties("Data Source") = "E:\aa.mdb"
myconn.Open '运行到此会报不支持此接口的错误
Set myrecf = myconn.Execute("select * from board order by BoardName")
ReDim a1(5) As String
myrecf.MoveFirst
For i = 1 To 5
If Not myrecf.EOF Then
a1(i) = myrecf.Fields("BoardName").Value
myrecf.MoveNext
Else: Exit For
End If
Next i
End Function
ASP中代码:<% set shpfind = server.CreateObject("shortpath.pathfind")
shpfind.arry_ini
a=shpfind.arry_ini
response.write a
%>
A回答:
宋霈霖的意见:
源文件及已生成的DLL文件在附件
Sample.rar中。调用时可以使用如下代码
<%
dim smp
set smp = server.CreateObject("sample.clsSample")
smp.DataSource=server.MapPath(数据库的相对路径)
response.Write (smp.GetSchema())
set smp=nothing
%>
在 WindowXP/VB6.0/IIS5.1 测试通过。
wms821的意见:
请试试在Myconn.Open= 语句前增加一句:Myconn.CursorLocation == adUseClient或许能解决问题!
宋一丁的意见:
不太清楚你的问题是怎么回事,我也遇到了同样的问题。我解决的办法是这样写:
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=abc;Initial Catalog=db;User Id=sa;Password=sa"
Set rs = conn.Execute("select * from temp order by id ")
这样就可以通过了。
ZQlooknow的意见:
myconn.Properties("Data Source") = "E:\aa.mdb"
此句中,不能使用绝对路径,换为相对路径;最好使用SQLConnectionString
杨柳的意见:
可能是你在设计Data Source时使用了绝对路径的原因!
张林的意见:
或者把"Microsoft.Jet.OLEDB.4.0" 改为"Microsoft.Jet.OLEDB.3.5.1" 试试。我也有这种现象,不过和你的有点不一样啊!
此问题由宋霈霖等回答。
| |
|
|
| |
|
|