Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教:如何使用【引用】文件中的【类模块】

litao  发表于:2017-10-31 12:36:33  
复制

我将类模块,单独存放到一个MDB文件中,这个文件被【引用】到主文件(MDB)中,能够看到引用过来的【类模块】。

但是,主文件中无法New这些类,求指点??


暂时只能用Object形式引用,这很麻烦!

 

Top
红尘如烟 发表于:2017-10-31 13:16:54

在引用.mdb 中:假设有自定义类模块,名为 MyClass。

创建一个自定义函数:

    Function GetNewMyClass() As MyClass
        GetNewMyClass = New MyClass
    End Function

在主文件.mdb中使用:

Sub Test()
    Dim cls As MyClass
    Set cls = GetNewMyClass()
End Sub

这里的关键点就在于,你不能在 主文件.mdb 中直接使用 New 关键字来对引用库中 的类实例化。

但我们可以用自定义函数来间接完成。即,在引用库中用 New 关键字对类进行实例化,再用自定义函数GetNewMyClass将引用返回给主程序。

另外还要注意!!!类模块的Instancing属性,要设为 2 - PublicNotCreatable,不能使用默认的 1 - Private



litao 发表于:2017-10-31 14:55:51

谢谢 @红尘如烟 老师!

我按您说的新建了两个 MDB文件,引用后。

在:

Dim cls As MyClass


 总是弹出错误提示【用户定义类型未定义】!

如果改为:Dim cls As Object   才可以,不过这就 不好自动显示下面的属性和方法了!

能否提供一个简单的范本?? 我用的是ACCESS2003



红尘如烟 发表于:2017-11-01 08:40:06

你没有把类模块的Instancing属性设为 2 - PublicNotCreatable吧?

不能使用默认的 1 - Private,这个表示该类模块属于它所在的库私有,在其它库中不可见。



litao 发表于:2017-11-01 10:19:42
非常感谢!

总记录:4篇  页次:1/1 9 1 :