【问题标题】:Pulling text from another text field in MS-access从 MS-access 中的另一个文本字段中提取文本
【发布时间】:2017-07-05 21:52:36
【问题描述】:

我不能 100% 确定如何表达我的问题!!我有一个带有文本的字段(从报告中自动填充),其格式为“Home/area/process/”是否有一种快速提取区域文本的方法。

它在开始时总是一样的,但在区域之后它可能是“/process/more processes”甚至“/information/more information”,所以我无法提取一些简单的东西“提取”Home/和/process之间的所有内容"

希望这是有道理的,我有大约 9000 个条目可以这样做:)

在此先感谢大家,我对 VBA 持开放态度/查询 Access 2007 的任何内容!

【问题讨论】:

  • 关键字将是“解析”一个字符串。查看拆分功能here。您的分隔符将是“/”。你也可以使用字符串函数的组合来实现同样的事情,see here

标签: ms-access vba ms-access-2007


【解决方案1】:

试试:

Dim exampleString As String
Dim exampleArray() As String

exampleString = [field containing the string you want to split]
exampleArray = Split(exampleString,"/")

例如,如果您提到的字段中有以下字符串:home/area/process

字段名称为txtField,在名为rptSummary的报表中

然后您可以执行以下操作:

Dim exampleString As String
Dim exampleArray() As String

exampleString = Reports!rptSummary!txtField.Value
exampleArray = Split(exampleString, "/")

然后您可以访问exampleArray 的所有索引,并随心所欲地使用它们。例如,如果您想创建一个弹出窗口,显示exampleArray 中每个索引的内容,您可以执行以下操作:

MsgBox exampleArray(0) //Creates a message box popup that displays "home"
MsgBox exampleArray(1) //...displays "area"
MsgBox exampleArray(2) //...displays "process"

您也可以使用Mid 函数,这需要更多细节。关于here的信息。

为了更具体,我们需要有关字段名称、报告名称、所涉及的表单等的更多信息。

【讨论】:

  • 感谢您,我在 excel 中使用了一点 VBA,但无法访问。本质上,“家/区域/进程”是另一个系统中文档的位置,我需要提取它所属的区域。有没有办法可以将 ExampleArray(1) 添加到我的表(tblDocuments)中名为“Area”的字段中?到目前为止,非常感谢!
  • 在早上研究后快速起来,我认为最简单的方法是使用 mid 功能,到目前为止,我已经使用 [Mid([documents.Location],InStr([ files.Location],"/")+1) AS Area] 现在我需要删除第二个“/”之后的所有内容,感谢您的帮助和指点
  • 假设所有内容都将始终由分隔符“/”分隔,使用Split 函数并调用exampleArray(1)(或任何你想调用的名称),可能会更干净,肯定使用Mid 函数比多次解析更容易使用。例如,为了响应您的第一个评论回复,您可以编写一些 SQL 并在 VBA 中执行它(将 SQL 语句分配给一个字符串变量,使用DoCmd.RunSQL 执行该语句)以将exampleArray(1) 附加到一个表中。跨度>
【解决方案2】:

我已经设法通过创建 2 个查询并将以下内容添加到新字段来解决这个问题 - 一个删除字符串“Home/”的第一部分

firstArea: Mid([tblDocuments.Location],InStr([tblDocuments.Location],"/")+1)

然后使用此查询,我创建了另一个查询,仅在“/”之前显示下一部分(仅使用第一个结果在该区域之后添加其他所有内容,即“/process bit”

Area: Left([All docs with area.firstArea],InStr([All docs with area.firstArea],"/")-1)

我确定这不是最简洁的方式,“/Process”部分中没有任何内容但总体有效的文档存在一些错误。

感谢您的指点,我现在掌握了解析字符串的知识:)

【讨论】:

    猜你喜欢
    • 2022-07-04
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多