含有 MSFlexGrid等作为传递参数的过程,在编译.引用时,先定义了后
再直接           类名.gongdandata(MSFlexGrid2) 却报错??DLL类时报报错:提示private 对象模块不能作为参数/公共过程的返回类型,公共数据成员或公共用户定义类型字段在公共的对象中使用 ??在ActiveX DLL,项目要怎么定义???如何解决,代码如下:是不是还要声明什么控件类型???Public Sub gongdandata(MSF1 As MSFlexGrid)Dim j As Integer
Dim i As Integer
Dim mrc1 As ADODB.Recordset
  Set mrc1 = sl(Trim(txtsql))
..........

解决方案 »

  1.   

    这个问题仍然没有解决, 关于含有对象参数的过程封装, 高手帮忙看一下我的错误是哪里.??我的操作过程及代码如下:我在ActiveX DLL中想将下列代码封装成以下DLL: 但不成功,请高手帮忙解决一下:谢谢!!
    bhsq是类名,类的工程名  bhsq1:    
    Public Function sl(ByVal sql As String) As ADODB.Recordset
    Dim mycon As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set mycon = New ADODB.Connection
    mycon.ConnectionString = "rovider=sqloledb;server=.;Database=sxcpmc;Uid=sawd=;"
    mycon.Open
    Dim stokens() As String
      Set rst = New ADODB.Recordset
      rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
    Set sl = rst
    End Function单独封装上面的代码,能在程序使用
       Dim bhs As New bhsq '用里面的类名,而不是用类的工程名
            Set mrc1 = bhs.sl(Trim(txtsql))
            Set bhs = Nothing                                      '能正常使用'

    -----------------------------
    但是,再想封装以代码就报错了.
    错误提示:提示private 对象模块不能作为参数/公共过程的返回类型,公共数据成员或公共用户定义类型字段在公共的对象中使用
     Public Sub gongdandata(ByVal MSF1 As MSFlexGrid)   '预览生产单gongdan窗体时用到
    Dim i As Integer
    Dim mrc1 As ADODB.Recordset  Set mrc1 = sl(Trim(txtsql))
      If mrc1.EOF = False Then
       mrc1.MoveFirst
       MSF1.RowHeightMin = 410 
        MSF1.CellAlignment = 0
       With MSF1
        .Rows = 1
        Do While Not mrc1.EOF
         .Rows = .Rows + 1
         For i = 1 To mrc1.Fields.Count
             .TextMatrix(.Rows - 1, i - 1) = FormatNumber(mrc1.Fields(i - 1), 3, -1)
         Next i
         mrc1.MoveNext
        Loop
        mrc1.Close
      End With
    End If
    End Sub
      

  2.   

    Public Sub gongdandata(ByVal MSF1 As MSFlexGrid)
    这个不能用byval了,去掉就行
      

  3.   

    Public Sub gongdandata(MSF1 As MSFlexGrid)
    这个不能用byval了,去掉还是不行,还是报同样的错
    提示private 对象模块不能作为参数/公共过程的返回类型,公共数据成员或公共用户定义类型字段在公共的对象中使用 ??为何???