首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VBA中连SQL SERVER连接串正确,执行打开也不报错,但是返回的状态却是0(关闭),该怎么解决

2012-05-15 
VBA中连SQL SERVER连接串正确,执行打开也不报错,但是返回的状态却是0(关闭)Dim CNN2 As New ADODB.Connect

VBA中连SQL SERVER连接串正确,执行打开也不报错,但是返回的状态却是0(关闭)
Dim CNN2 As New ADODB.Connection
Dim CNN_cmd As New ADODB.Command
Dim pthStr_tempdb As String '因存储过程在 tempdb 所以要与之联系

If CNN2.State = adStateClosed Then
  pthStr_tempdb = "Provider=SQLOLEDB.1;server=ICA0006\SQLEXPRES;user id =sa;password=qlzhang123;database=tempdb"
  CNN2.Open pthStr_tempdb ‘ 这句没有报错,是否代表我已经打开了呢?  
  MsgBox (CNN2.State) '对话框却显示cnn的连接状态为0,也就是关闭状态
 End If
  ‘程序一直继续执行,无错误
  Set CNN_cmd.ActiveConnection = CNN2 '指示指定的 Command对象当前所属的 Connection对象。
  CNN_cmd.CommandText = "Pro_GG_CD1" '设置Command对象源。"Pro_GG_CD1"
  CNN_cmd.CommandType = adCmdStoredProc 'adCmdStoredProc 存储过程 
  Set Rst_back = CNN_cmd.Execute  
  执行到这里也没有报错,然后正常终了
  但是没有取得数据库中值。实际上我在SQL SERVER 2005 EXPRESS 单独执行存储过程时,是有数据的。

[解决办法]
数据库编程没怎么做过。。。偶很菜,但是感觉起码要给点分吧,要不都没哟回答问题的动力
[解决办法]
把错误处理屏蔽掉,单步调试看看。
[解决办法]
把错误处理屏蔽掉,单步调试看看。
并检查连接字符串
[解决办法]
CNN2.Open pthStr_tempdb[,][,]后面还有参数的,你应该选择这些参数的.
[解决办法]
Dim cn As New ADODB.Connection
Dim rs As new ADODB.Recordset ‘我比较熟悉recordset,个人感觉recordset比command好用
dim strsql as string
CNN2.ConnectionString = "Provider=SQLOLEDB.1;server=ICA0006\SQLEXPRES;user id =sa;password=qlzhang123;database=tempdb" 
CNN2.Open
strsql=sql语句
rs.CursorLocation = adUseClient ’假如要绑定datagrid就要设游标了,不设游标recordset声明时不需要new关键字
rs.Open strsql, cn, adOpenDynamic, adLockOptimistic
Set rs.ActiveConnection=nothing ‘关闭数据库连接
cn.close
set datagrid1.datasource=rs ’rs关闭连接后,rs相当于内存中的一个数组。用起来很方便

热点排行