sql 7 数据库,每个客户端应用程序用户只拥有Public角色的权限,在数据库中已设置Public角色不具备对数据库内任何Object的操作权限.客户端应用程序启动后激活一个应用程序角色 APP_ROLE,此角色定义的所有的操作权限.
问题:
Private Sub cboContractNo_Click()
    Dim adcmd1 As New ADODB.Command
    Dim adpara1 As New ADODB.Parameter
    Dim adrs1 As New ADODB.Recordset
    Dim adcmd2 As New ADODB.Command
    Dim adpara2 As New ADODB.Parameter
    Dim adrs2 As New ADODB.Recordset    Set adcmd.ActiveConnection = padcnnCCS
    adcmd.CommandText = "SP_1"
    adcmd.CommandType = adCmdStoredProc
    Set adpara1 = adcmdTmp.CreateParameter("contract_uid", adInteger, adParamInput, , cboContractNo.Columns("contract_uid").Value)
    adcmdTmp.Parameters.Append adparaTmp
    set adrs1 = adcmdTmp.Execute
    ...
    Set adcmd2.ActiveConnection = padcnnCCS
    adcmd2.CommandText = "SP_2"
    adcmd2.CommandType = adCmdStoredProc
    Set adpara2 = adcmdTmp.CreateParameter("contract_uid", adInteger, adParamInput, , cboContractNo.Columns("contract_uid").Value)
    adcmd2.Parameters.Append adparaTmp
    set adrs2 = adcmdTmp.Execute
    ...
End Sub
当程序运行 set adrs2 = adcmdTmp.Execute 发生错误!说没有权限运行 sp_2! 实际上应用程序角色 APP_ROLE是具备运行sp_1和sp_2的权限的,在代码中随便注释任何一段EXECUTE代码都能正常运行,可两个EXECUTE命令一起运行时就说无权限运行!为什么呢?
请高手指教.

解决方案 »

  1.   

    看看 padcnnCCS 的连接属性
      

  2.   

    改成
    Set adcmd.ActiveConnection = padcnnCCS
        adcmd.CommandText = "SP_1"
        adcmd.CommandType = adCmdStoredProc
        Set adpara1 = adcmd.CreateParameter("contract_uid", adInteger, adParamInput, , cboContractNo.Columns("contract_uid").Value)'这里
        adcmdTmp.Parameters.Append adpara1 '这里
        set adrs1 = adcmd.Execute '这里
        ...
        Set adcmd2.ActiveConnection = padcnnCCS
        adcmd2.CommandText = "SP_2"
        adcmd2.CommandType = adCmdStoredProc
        Set adpara2 = adcmd2.CreateParameter("contract_uid", adInteger, adParamInput, , cboContractNo.Columns("contract_uid").Value)'这里
        adcmd2.Parameters.Append adpara2 '这里
        set adrs2 = adcmd2.Execute '这里
      

  3.   

    上面还有一点adcmdTmp.Parameters.Append adpara1 改成adcmd.Parameters.Append adpara1
      

  4.   

    请问ADODB.COMMAND有没有一种属性设置只能在同时运行一个COMMAND?
      

  5.   

    哦,set adrs1 = adcmd.Execute 之后set adcmd=nothing
      

  6.   

    更好的方法是加上这句问题解决CursorLocation = adUseClient.