'好久没用vb6了,一用就出错,大家帮我看看
'我的意图是创造一个命令对象然后返回它,以下代码编译错Private Function CreateComm(ByVal sqlText As String, _
                       ByRef param() As ADODB.Parameter, _
                       ByVal sqlCmdType As ADODB.CommandTypeEnum) As Command
    '此函数创造一个command对象
    Dim conn As ADODB.Connection
    Dim comm As New ADODB.Command
    conn = New Connection
    conn.ConnectionString = GetConn()
    comm.CommandText = sqlText
    comm.CommandType = sqlCmdType
    comm.ActiveConnection = conn
    Dim paratemp As Variant
    If Not IsEmpty(param) Then
        For Each paratemp In param
            comm.Parameters.Append (paratemp)
        Next
    End If
    On Error GoTo err:
        conn.Open
'错误出现在下边一行,提示属性的错误使用
        CreateComm = comm
        Return
err:
'可以增加错误处理代码,如写入日志
        
End Function

解决方案 »

  1.   

    CreateComm = comm好像不能这么赋值吧,因为command是对象.
    你可以直接使用,返回一个byref的(MyCommand参数)试试
    Private Function CreateComm(ByVal sqlText As String, _
                           ByRef param() As ADODB.Parameter, _
                           ByVal sqlCmdType As ADODB.CommandTypeEnum, _
                           ByRef mycommand as ADODB.Command)
        '此函数创造一个command对象
        Dim conn As ADODB.Connection
        conn = New Connection
        conn.ConnectionString = GetConn()
        mycommand.CommandText = sqlText
        mycommand.CommandType = sqlCmdType
        mycommand.ActiveConnection = conn
        Dim paratemp As Variant
        If Not IsEmpty(param) Then
            For Each paratemp In param
                mycommand.Parameters.Append (paratemp)
            Next
        End If
        On Error GoTo err:
            conn.Open
        exit function
    err:
        msgbox err.Description, "提示信息"     
    End Function
      

  2.   

    这个当然可以了。
    因为vb.net里可以用return obj,我想当然了。
      

  3.   

    在VB.NET中我也遇到过这种问题,但是对象在.NET好像也是不能直接"="的。
    例如: 两个Listbox
    不能ListBox1=ListBox2
    在VB6中也是一样
    Dim command1 As ADODB.Command
    Dim command2 As ADODB.Command
    command1 = command2     <-这样是错误的。
    关键是对象有很多其他的方法属性,两个对象是不可能直接相等的,在VC中可以使用指针。但是VB6里面是没有的。
      

  4.   

    只要有定义就可以啊

    private function createcomm(byval sqltext as string, _ 
                                byref param() as sqlparameter,...) _
                                as sqlcommand 
    dim ....
    dim mycommand as sqlcommand=new sqlcommand(sqltext,myconnection)
    ....
    return mycommand
    end function
    private function ex()
    dim x as sqlcommand
    x=createcommand(...)
    end function
    可以运行啊