【问题标题】:Enums in DAO don't have the regular system methods?DAO 中的枚举没有常规的系统方法?
【发布时间】:2012-03-06 19:00:35
【问题描述】:

我正在尝试从 DAO 记录集中获取数据类型。代码如下:

Public Function EditFormData(frm As Form)
  Dim rst As DAO.Recordset
  Dim fieldType as DAO.DataTypeEnum

  Set rst = frm.RecordsetClone
  rst.MoveFirst

  fieldType = rst.Fields(0).Type
  MsgBox fieldType.ToString

当我尝试运行此程序时,我在 msgbox 中的 fieldType 上收到 Invalid Qualifier 错误,但不知道为什么,因为这是我第一次尝试 Enums。

【问题讨论】:

  • 文档声明 Type 返回整数结果,而不是枚举。另见:allenbrowne.com/func-06.html
  • @TimWilliams 我的理解是返回的整数对应于 DAO.DataTypeEnum 中的数据类型条目,所以我试图获取相应的字符串。但是,您链接到的函数描述了对每个值进行硬编码,并且它是字符串对应的,以便将整数转换回字符串,基本上将内置枚举与该信息分开。我希望避免这样做,但如果没有更简单的方法我可以。谢谢你的链接。
  • VB[A] 中的枚举没有那个方便的“ToString()”方法。在函数中手动编码字符串值并不好玩,但幸运的是有人已经为您完成了......

标签: ms-access enums vba dao


【解决方案1】:

创建您自己的函数以将枚举转换为文本。我没有从头开始编写代码,而是找到了这个示例。

http://bytes.com/topic/access/answers/209125-can-you-tell-datatype-control

PS 我的第一篇文章或评论,请随时发表评论。

【讨论】:

    【解决方案2】:

    你知道记录集的当前位置是什么吗?如果它在EOF,那么您将遇到麻烦。在获取字段类型之前尝试调用 rst.MoveFirst。

    【讨论】:

    • 已修复。它在我的原始代码中,只是在副本中遗漏了它。
    • 应该澄清我用 rst.MoveFirst 修复了帖子,我仍然遇到原始问题的问题
    • Type 属性实际上定义为一个整数。我也会尝试将 fieldtype 定义为整数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多