在分配相同类型的变量时,VB6是否有方法抛出类型不匹配错误?

在分配相同类型的变量时,VB6是否有方法抛出类型不匹配错误?,vb6,type-mismatch,Vb6,Type Mismatch,我正试图找出类型不匹配错误的原因,但我不明白它被抛出的原因。我正在分配一个与从中分配的变量类型相同的变量 Begin bxControls.starTable m_tblClaims 'Defined at the top of the form file Dim objTable As PVDataTable5.DataTable Set objTable = m_tblClaims.Table 正如您所看到的,发生的赋值不应该有类型不匹配,因为它们是相同的类型。任何帮助都会很棒。TIA试

我正试图找出类型不匹配错误的原因,但我不明白它被抛出的原因。我正在分配一个与从中分配的变量类型相同的变量

Begin bxControls.starTable m_tblClaims 'Defined at the top of the form file

Dim objTable As PVDataTable5.DataTable
Set objTable = m_tblClaims.Table
正如您所看到的,发生的赋值不应该有类型不匹配,因为它们是相同的类型。任何帮助都会很棒。TIA试试这个

Dim objTable As PVDataTable5.DataTable
Set objTable = m_tblClaims.Table.Object
请注意,这可能在IDE中工作,但在编译时失败

用户控件的故事主要是来自IDE的完全谎言。例如,所有用户控件属性/方法都被称为后期绑定,即使IDE intellisense给出的调用站点看起来像是早期绑定的

对于当前加载到IDE中的每个用户控件类型(例如,作为项目组的一部分),IDE将创建代理日期类型,其中包含合并的原始控件属性/方法和一些VB提供的属性/方法(如
Visible
等),这些属性/方法来自
VBControlExtender

这就是为什么
Dim objTable As pvdatatable 5.DataTable
有时不是
pvdatatable 5.DataTable
数据类型的声明,而是来自OCA文件的代理
pvdatatable 5.DataTable
,即当用户控件加载到IDE中时


传递对VB6用户控件的引用的唯一明智的方法是传递
VBControlExtender
而不是使用其
Object
属性来访问包装的引用。

哪一行抛出错误?错误将被抛出“Set objTable=m_tblClaims.Table“是的,在第二个代码段中,我提供了
m_tblClaims的属性getter。Table
也是在该代码段的顶部定义的。因为Table属性是Object类型,我想很有可能你没有合适的东西在里面。为什么它被定义为对象,这通常是一个不好的迹象。这似乎对我不起作用。@DylanMangold所以它一定是另一种情况——你的
属性Get Table()as Object
返回真正的控件引用,而你的
暗淡的objTable作为pvdatatable 5。DataTable
需要
VBControlExtender
和炸弹。尝试将
属性Get Table
对象更改为显式
VBControlExtender
类型。
Dim objTable As PVDataTable5.DataTable
Set objTable = m_tblClaims.Table.Object