各位,我用的是 SQL SERVER 6.5,一个老版本,程序段如下:
Private Sub Command2_Click()
Dim Strsql As String
Dim rsLendTab As ADODB.Recordset
Dim adoConn As ADODB.Connection
Set adoConn = New ADODB.Connection
Set rsLendTab = New ADODB.Recordset rsLendTab.CursorType = adOpenKeyset
rsLendTab.LockType = adLockOptimistic
rsLendTab.CursorLocation = adUseClient sconnectionstring = "Provider=MS Remote;" & _
"Remote Server=\\***.***.***.***;" & _
"Remote Provider=MSDASQL;" & _
"DSN=数据库名;" & _
"Uid=***;" & _
"Pwd=***;" adoConn.Open sconnectionstring
MsgBox "连接成功!" Strsql = "select * from TableName"
'*********** 出错处 *****************
rsLendTab.Open Strsql, adoConn
'*****************************************
'错误信息: 实时错误 '4100'
' 无法创建业务对象
'*****************************************
MsgBox rsLendTab.RecordCountEnd Sub
数据库在另一台机器上。连接都已经过了,创建记录集时出错!我对sql server 6.5 不太了解,还望高手指点!
Private Sub Command2_Click()
Dim Strsql As String
Dim rsLendTab As ADODB.Recordset
Dim adoConn As ADODB.Connection
Set adoConn = New ADODB.Connection
Set rsLendTab = New ADODB.Recordset rsLendTab.CursorType = adOpenKeyset
rsLendTab.LockType = adLockOptimistic
rsLendTab.CursorLocation = adUseClient sconnectionstring = "Provider=MS Remote;" & _
"Remote Server=\\***.***.***.***;" & _
"Remote Provider=MSDASQL;" & _
"DSN=数据库名;" & _
"Uid=***;" & _
"Pwd=***;" adoConn.Open sconnectionstring
MsgBox "连接成功!" Strsql = "select * from TableName"
'*********** 出错处 *****************
rsLendTab.Open Strsql, adoConn
'*****************************************
'错误信息: 实时错误 '4100'
' 无法创建业务对象
'*****************************************
MsgBox rsLendTab.RecordCountEnd Sub
数据库在另一台机器上。连接都已经过了,创建记录集时出错!我对sql server 6.5 不太了解,还望高手指点!
解决方案 »
- 请问怎样设置select语句按年份和期数的字段选择记录(好像要选择2003第33期到2004年的第56期之间的记录)
- 如何使textbox 控件的焦点(I字型光标)始终在最底下???
- 请问哪位高手有考勤管理系统的原代码(VB+oralce)???(救命的人在哪里?)
- 请大家关注这个网站,http://quanyi.diy.163.com
- 一个简单的问题,还望大家指点。(急!!!) 谢谢!!!!!
- bcrun大哥,你好, vbRichClient5库 cWebKit组件的问题,请帮忙
- VB里new一对象后,当不再用到此对象时,是否也要象VC一样delete掉,如果是,用什么方法?
- 请教,怎样修改MP3的ID3标签??
- 有哪位vb高手给我讲一下vb6的ActiveDLLs和ActiveEXEs的各种线程模式有何不同?请详细一点。
- 如何解读OUTLOOK地址簿文件“*.wab”的内容?
- VB初学者的疑惑:关于inputbox
- 如何取得机器的唯一标志,如硬盘序列号等?
Dim Strsql As String
Dim rsLendTab As ADODB.Recordset
Dim adoConn As ADODB.Connection
Set adoConn = New ADODB.Connection
Set rsLendTab = New ADODB.Recordset
Dim sconnectionstring As String
rsLendTab.CursorType = adOpenStatic
rsLendTab.LockType = adLockOptimistic
rsLendTab.CursorLocation = adUseClient' sconnectionstring = "Provider=MS Remote;" & _
' "Remote Server=\\***.***.***.***;" & _
' "Remote Provider=MSDASQL;" & _
' "DSN=phsdata;" & _
' "Uid=***;" & _
' "Pwd=***;"
With adoConn
.CursorLocation = adUseClient
.Provider = "sqloledb"
.Properties("Data Source").Value = "***.***.***.***"
.Properties("Initial Catalog").Value = "数据库名"
.Properties("User ID") = "***"
.Properties("Password") = "***"
End With
adoConn.Open 'adoConn.Open sconnectionstring
MsgBox "连接成功!" Strsql = "select * from tablename"
'*********** 出错处 *****************
rsLendTab.Open Strsql, adoConn
'*****************************************
'错误信息: 实时错误 '4100'
' 无法创建业务对象
'*****************************************
MsgBox rsLendTab.RecordCountEnd Sub
谢谢!,但是不行!
实时错误 '-2147467259(80004005)'
[DBNMPNTW] 拒绝访问。
Set rsLendTab = New ADODB.Recordset
去掉以上两句看一下。
请检查你的IP地址是否正确,是否可以PING通,另外检查你的用户名和密码是否正确,同时检查用户权限是否具有访问该数据库(指的是Properties("Initial Catalog").Value = "数据库名")的权限
我的数据库是SQL SERVER 6.5,是不是版本不同,用法不同呢
我的是vb6+sp5+sql server6.5+win98,服务器是2000。
sql server6.5 和 sql server7.0 差别好像很大!
我现在在我的机子上安装了一个SQL SERVER 7.0的客户端。之后用您给的程序段执行通过了。对于大部分表都能返回正确数据,但是有的表不正确。有的表只返回一条数据还不正确。而我在服务器上执行SQL 语句时可以看到全部数据,不知道为什么?还有就是我本来用的连接串还是不行,它错在哪里呢?为什么会connect 成功,但select 失败呢?
to jxhgr(小龙蟹) :用的是ADO2.5
主要是不明白为什么会出现
1 连接成功访问出错的问题(原来) 和
2 部分表数据客户端返回值与在服务器上访问得到的不一样
这两个问题
建议使用异步方式来操作远程数据库:Dim WithEvents adoConn As ADODB.Connection
Dim ConnOK as BooleanPrivate Sub adoConn_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
If adStatus = adStatusOK Then ConnOK = True
End SubPrivate Sub adoConn_WillConnect(ConnectionString As String, UserID As String, Password As String, Options As Long, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
ConnOK = False
End SubPrivate Sub Command2_Click()
'......
adoConn.Open sconnectionstring Do Until ConnOK
Loop MsgBox "连接成功!" Strsql = "select * from TableName"
rsLendTab.Open Strsql, adoConn '......
End Sub
to of123() : 我试了一下你的代码,还是不行,大概不是连接的的问题。不过也要谢谢你,
我又学了一招:)那位高手能够解释一下第二个问题呢?
试一试
Private Sub Command2_Click()
Dim Strsql As String
Dim rsLendTab As ADODB.Recordset
Dim adoConn As ADODB.Connection
Set adoConn = New ADODB.Connection
Set rsLendTab = New ADODB.Recordset
Set rsLendTab .ActiveConnection = adoConn
rsLendTab.CursorType = adOpenKeyset
rsLendTab.LockType = adLockOptimistic
rsLendTab.CursorLocation = adUseClient sconnectionstring = "Provider=MS Remote;" & _
"Remote Server=\\***.***.***.***;" & _
"Remote Provider=MSDASQL;" & _
"DSN=数据库名;" & _
"Uid=***;" & _
"Pwd=***;" adoConn.Open sconnectionstring
MsgBox "连接成功!" Strsql = "select * from TableName"
'*********** 出错处 *****************
rsLendTab.Source = Strsql
rsLendTab.Open'*****************************************
第一个问题已经解决了,
我现在只想请高手指点一下第二个问题,即:
2 部分表数据客户端返回值与在服务器上访问得到的不一样!
还望高手指教!
你用用户aaa,密码bbb可以连接到数据库ccc,并不意味着用户aaa可以访问数据库ccc,关键是看aaa对于ccc的权限了。把aaa的访问权限设为ccc的dbo一级的,你试一试保证可以。
strCon = "Driver={SQL Server};" & _
"Server=***.***.***.***;" & _
"Database=testdb;" & _
"Uid=****;" & _
"Pwd=*******;"
就行了。
不过问题是,我是知其然而不知其所以然啊。哪位高手给我解释一下或指点上哪去了解以下问题的详细解释呢:不同的连接字符串的功能,比如说sql server就有好几种连法,都是什么意思呢,有的用Provider=;有的用driver=;
像这个问题为什么用Provider=;的不行,而用driver=;的就行呢?