【问题标题】:Use VBA in MS Access to do multiple functions of REPLACE?在MS Access中使用VBA做REPLACE的多项功能?
【发布时间】:2020-11-23 23:48:46
【问题描述】:

我正在处理一个清理地址的项目,需要创建大约 40 多个规则来修复它们。我需要的是一个带有查询的 Microsoft Access 文件,该文件调用一个 Visual Basic 模块来对一串数据运行多个 REPLACE 命令。

示例:假设数据字符串如下所示

  • 123 假 Str.
  • 假街345号

我希望 Visual Basic 模块能够做到

  • 替换“Str.”带“ST”
  • 将“街道”替换为“ST”
  • 将“路”替换为“RD”

等等。一旦有了它,我就可以将结构复制到实际数据中。但是,我对如何在查询中调用 VBA 函数以及如何让 VBA 函数导出查询可以读取的值的知识有限。任何帮助将不胜感激

【问题讨论】:

  • 数据在表的字段中吗?我希望你不是建议你需要一个 UDF 方法来解决这个问题。
  • 是的,这些字段在表格中。我的挑战是,在 SQL 中执行此操作将涉及 50 个按顺序提供的查询,或者功能嵌套得太深以至于我无法找到出路。

标签: vba ms-access


【解决方案1】:

我不确定我是否正确理解您的问题,因为这是一项非常简单的任务:

sql = "SELECT MyReplaceFunction([MyAddressField]) FROM MyTable"

像这样在模块中放置一个公共函数:

Public Function MyReplaceFunction(FieldValue As String) As String
    FieldValue  = Replace(FieldValue,"Str.","ST")
    FieldValue  = Replace(FieldValue,"Street","ST")
    FieldValue  = Replace(FieldValue,"Road","RD")
' continue like that with all your criteria
    MyReplaceFunction = FieldValue  
End Function

【讨论】:

  • 天哪,谢谢你,这将让我免于嵌套替换函数或 50 个单独的替换查询的噩梦,我害怕这样做
  • @RobertPatrician 只是为了让您意识到,性能方面和调试,这不是很好。此外,这并没有改变基础数据,而是在每次呈现数据时呈现数据的“更清晰的形式”。如果您想对数据进行清理,那么我建议您采用不同的方法。
猜你喜欢
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 2018-03-13
  • 1970-01-01
相关资源
最近更新 更多