【问题标题】:Display certain text based off of Data Selection根据数据选择显示某些文本
【发布时间】:2016-10-11 16:59:22
【问题描述】:

我正在制作一个表格,显示我们数据库中的所有部件(来自名为 TAGS 的主组件表)。所有值都显示正常,因为它是从 TAG 表中提取的。问题是,在创建表时,他们从未输入每种组件类型的描述。

例如,在表格中,为清楚起见,TagLabel“CON”应该在报告中包含描述“Condensers”(一些标签标签不是很直观)。

我正在尝试使用 VBA 代码来格式化 TagLabel 框旁边的文本框 (TagDescription),该框根据 TagLabel 的内容显示描述。 “简单”但非常乏味的解决方案只是通过 TAG 表并手动添加描述列。

我正在尝试做这样的事情来避免这种情况:

Private Sub Report_Page()
If Me.TagLabel = "CON" Then
    Set Me.TagDescription = "Condensers"
End If
End Sub

我确定这只是一个简单的语法修复,但我尝试了一些不起作用的方法,例如在 Me.TagLabel 的末尾添加 .value.text 等。谢谢大家请提前帮助!

【问题讨论】:

  • 你不应该 Set 值。 分配是使用 Let 关键字进行的,或者根本没有关键字(因为 Let 无论如何都已弃用/无用)。保留Set 以供参考 分配。字符串是 VBA 中的值。
  • @Mat's Mug 我取出了Set 并重新添加了.value,但它仍然无法正常工作。还有其他建议或一些示例代码吗?
  • .Value.Text默认属性,恕我直言,最好将它们保留并明确引用它们。默认属性是错误的邪恶来源(不是在此实例中,而是依赖它们有一天或另一天咬你)。如果你打破If 条件并检查Me.TagLabel 的值,它是否说"CON" 完全正确,没有任何前导或尾随空格?
  • @Mat's Mug,是的,它确实说的是“CON”……还有另外 20 个左右的组件我必须分类,但我认为它们中没有包含任何空格跨度>

标签: vba ms-access report


【解决方案1】:

这可能是您正在寻找的语法,但我确定您是否会得到您想要的效果。这听起来像一个非常丑陋的解决方案。

Private Sub Report_Page()
    If TagLabel = "CON" Then
       TagDescription = "Condensers"
    End If
End Sub

如果您要不厌其烦地为每个可能的 TagLabel 构建一个大的 IF 块,您可能应该硬着头皮使用查找表以正确的方式进行操作。

只需在标签查找表中创建一个新列并更新标签 - 更少的输入然后执行您正在谈论的所有代码。然后很容易将表格加入到报表查询中,您的文本框将自动填充

【讨论】:

  • 与该代码块中 OP 代码的唯一区别是您删除了 Me 说明符,该说明符应该基本上为零。
  • 同意 - 有时复制/粘贴和理解更容易看到视觉效果,不是吗?
  • 是的。可能是Code Review 我在说话,但如果我必须维护该代码,我会强烈反对在这里或任何地方依赖默认属性。分配TagLabel.Value(或者是.Text?)比分配TagLabel 清晰得多,看起来您可能想要分配对象引用本身。我讨厌默认属性。 </rant> ;-)
  • 是的 - 你是对的 - 就此而言,TagDescription 很可能是一个需要 .Caption 以防止其损坏的标签
猜你喜欢
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 2015-07-11
相关资源
最近更新 更多