ms-access - 对象模块需要为接口'~'实现'~'
问题描述
所以我尝试按照这些问题作为指导:
这是每当我单击表单上的控件时出现的错误:
这是我的界面:
交易记录
Option Compare Database
Option Explicit
Public Property Get TRANSACTION_DATE() As Date
End Property
这是我的课程:
账簿记录
Option Compare Database
Option Explicit
Implements ITransactionRecord
'from interface
Private tTRANSACTION_DATE As Date
Private Property Get ITransactionRecord_TRANSACTION_DATE() As Date
ITransactionRecord_TRANSACTION_DATE = TRANSACTION_DATE
End Property
Public Property Get TRANSACTION_DATE() As Date
TRANSACTION_DATE = tTRANSACTION_DATE
End Property
Public Property Let TRANSACTION_DATE(ByVal newTRANSACTION_DATE As Date)
tTRANSACTION_DATE = CDate(Format((newTRANSACTION_DATE), "m / d / yyyy"))
End Property
传输记录
Option Compare Database
Option Explicit
Implements ITransactionRecord
'from interface
Private tTRANSACTION_DATE As Date
Private Property Get ITransactionRecord_TRANSACTION_DATE() As Date
ITransactionRecord_TRANSACTION_DATE = TRANSACTION_DATE
End Property
Public Property Get TRANSACTION_DATE() As Date
TRANSACTION_DATE = tTRANSACTION_DATE
End Property
Public Property Let TRANSACTION_DATE(ByVal newTRANSACTION_DATE As Date)
tTRANSACTION_DATE = CDate(Format((newTRANSACTION_DATE), "m / d / yyyy"))
End Property
我做错了什么?
解决方案
Public Property Get TRANSACTION_DATE() As Date End Property
在 VBA 的公共接口成员名称中不能有下划线,因为这样你会得到:
Private Property Get ITransactionRecord_TRANSACTION_DATE() As Date
VBA 对这两个下划线感到困惑,它只期待一个;在 VBA 中,实现接口成员(或处理事件源的事件)的成员将是一个名为的私有方法[Source]_[MemberName]
:_
下划线字符在接口成员的签名中具有句法含义,如果有的话,应该小心使用,至少在任何表示由其他人实现的类。
将您的属性重命名为PascalCase TransactionDate
,问题就消失了:
Public Property Get TransactionDate() As Date
End Property
Private Property Get ITransactionRecord_TransactionDate() As Date
推荐阅读
- c# - Automapper - 将属性映射到 IEnumerable
- spss - 如何在 SPSS 中为多个类别分配相同的数字编码?
- javascript - 如何在 firefox 插件中使用 Javascript 将图像上传到 ImgBB API
- c++ - c++中如何结合插入排序和归并排序提高效率
- ios - AVSpeechSynthesizer 使用 Apple Watch 的扬声器而不是耳机作为输出通道
- .net - 用 Costura Fody 封装类库
- dicom - DICOM 图像中引用的图像序列中的[引用的 SOP 类/实例 UID] 是什么?
- excel - 如何将范围与变量一起使用 - 1004 错误不断出现
- java - Postgresql:作为Java本机查询中的查询输入的空值抛出运算符不存在:字符变化= bytea异常
- android - 在 Android for Work 应用程序中访问联系人