使用三层结构获取服务器上的记录-
客户端程序运行后提示"拒绝的权限"!
请各位帮忙解决!
是不是我的服务器的权限设置有问题?该怎么设置?

解决方案 »

  1.   

    Option Explicit
    Private Cn As rdoConnection
    Implements ObjectControl
    Private mobjContext As ObjectContextPrivate Sub Class_Initialize()
     Set Cn = Nothing
    End SubPrivate Sub Class_Terminate()
        Set Cn = Nothing
    End Sub
    Private Function BpSetSQLConn() As String     '返回连接符
        BpSetSQLConn = "dsn=realtime;uid=rtss;pwd=rtss;"
    End Function
    Private Function BpSetSQLMNsc()
        BpSetSQLMNsc = "dsn=realtime;uid=mnsc;pwd=mnscmgr;"
    End FunctionPrivate Sub ObjectControl_Activate()
        Set mobjContext = GetObjectContext()
        mobjContext.EnableCommit
    End SubPrivate Function ObjectControl_CanBePooled() As Boolean
        ObjectControl_CanBePooled = True
    End FunctionPrivate Sub ObjectControl_Deactivate()
        Set mobjContext = Nothing
    End Sub
    Public Function ConnectOracle() As Boolean  '实时数据连接数据库
    Set Cn = New rdoConnection
    On Error GoTo ErrHandle:
      Cn.Close
        With Cn
          .Connect = BpSetSQLConn()
          .LoginTimeout = 60
          .CursorDriver = rdUseOdbc
          .EstablishConnection rdDriverNoPrompt, True
          .QueryTimeout = 0
        End With
      ConnectOracle = True
      Exit Function
    ErrHandle:
      Set Cn = Nothing
      ConnectOracle = False
    End Function
    Public Function ConnectOracleMNsc() As Boolean  '电量数据连接数据库
    Set Cn = New rdoConnection
    On Error GoTo ErrHandle:
      Cn.Close
        With Cn
          .Connect = BpSetSQLMNsc()
          .LoginTimeout = 60
          .CursorDriver = rdUseOdbc
          .EstablishConnection rdDriverNoPrompt, True
          .QueryTimeout = 0
        End With
      ConnectOracleMNsc = True
      Exit Function
    ErrHandle:
      Set Cn = Nothing
      ConnectOracleMNsc = False
    End Function
    '对数据进行查询
    Public Function GetReservation(ByVal VarSql As String, ByRef _
    ReservationData As rdoResultset) As Boolean
    On Error GoTo ErrHandle:
      Dim rrssTemp As rdoResultset
      Dim sql As String
      sql = VarSql
        DoEvents
       Set rrssTemp = Nothing
       Set rrssTemp = Cn.OpenResultset(sql, _
             rdOpenKeyset, rdConcurReadOnly, rdAsyncEnable + rdExecDirect)
       DoEvents
       Do While rrssTemp.StillExecuting
          DoEvents
       Loop
    Set ReservationData = rrssTemp
    Set rrssTemp = Nothing
    ErrHandle:
        Set rrssTemp = Nothing
        If Err Then
            MsgBox Err.Description, 48
        End If
    End Function
    '修改数据
    Public Function UpdateData(ByVal UpdateSql As String) As Boolean
    On Error GoTo ErrHandle:
      Dim StrUpdate As String
      Dim RsUpdate As rdoResultset
     ' Dim rcolTemp As rdoColumn
       StrUpdate = UpdateSql
       Set RsUpdate = Nothing
       Set RsUpdate = Cn.OpenResultset(StrUpdate, _
             rdOpenKeyset, rdConcurReadOnly, rdAsyncEnable + rdExecDirect)
       Do While RsUpdate.StillExecuting
          DoEvents
       Loop
       Set RsUpdate = Nothing
       UpdateData = True
       Exit Function
    ErrHandle:
     Set RsUpdate = Nothing
     UpdateData = False
     MsgBox "修改数据出错"
    End Function
      

  2.   

    你使用的是COM组件吧。
    你的数据库连接Oracle吧.你的数据库连接字符串的Open操作在那里?
      

  3.   

    我用的是RDO,
    连接的字符串在此定义:
    Private Function BpSetSQLConn() As String     '返回连接符
        BpSetSQLConn = "dsn=realtime;uid=rtss;pwd=rtss;"
    End Function
    这些代码应该没有问题,在有些机器上可以用,有些机器不能用,
    可能是机器的设置问题,但我不懂在哪里设置,请帮忙!
      

  4.   

    你的oracle的连接数据库权限是最高的吗?
      

  5.   

    你使用的是DNS连接,你在不能使用的机器上检查一下你的DNS,看能不能连接到服务器。
      

  6.   

    你的客户机时什么配置?98/2000?
    如果DNS连接不上,建议你将oracle驱动重新安装一下再试.
      

  7.   

    我的oracle用户的权限没有问题,本机可以通过DNS连接数据库。
    应该是客户机没有权限访问服务器组件,我不懂该在哪设置
      

  8.   

    free_eyes(自由之眼) :
    我给你发了留言
      

  9.   

    设置用户为Users,不能使用Guest
      

  10.   

    我还是不太清楚你的意思,
    我的服务器只有二个用户一个是administrator,属于administrators组
    一个是guest,属于guests组
      

  11.   

    各位CSDN的兄弟快点帮帮忙,真的很急,分不够可以再加
      

  12.   

    你的客户机登陆服务器肯定要使用用户名和密码吧,那么你的服务器一定要为用户分配权限吧。登陆权限,所以建议你看的是服务器的登陆用户设置。把所有用guest登陆的用户权限提高。
      

  13.   

    这不是访问数据服务器的权限问题
    而是访问应用服务器的权限问题你现在应该是没有访问COM的权限 
    在COM+服务管理中进行好设置而且你的组件是有状态的
    建议改成无状态组件而且VB不支持对象缓冲池
    借地方郁闷一下!!!
      

  14.   

    MTS于COM组件的连接没有关系
    主要是看看你的服务器用户设置。
    你的客户机登陆服务器是否有足够权限。
    你的客户端调用方法试什么?
    Dim myObjContext As ObjectContext               
    Set ComObj = CreateObject("工程1.class1","172.30.1.1")
    是这种方法吗?