从MS访问中的另一个文本字段中提取文本

时间:2017-02-16 16:40:58

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

我不是百分百确定如何言语我的问题!我有一个带有文本的字段(从报告中自动填充),其格式为“Home / area / process /”,可以快速提取区域文本。

它在开始时始终是相同的但是在区域之后它可能是“/ process / more processes”甚至“/ information / more information”所以我不能拉出一些简单的“提取所有东西”Home /和/ process “

希望这有意义我有大约9000个条目来执行此操作:)

先谢谢大家,我对VBA开放/查询Access 2007的任何内容!

2 个答案:

答案 0 :(得分:2)

尝试:

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的信息。

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

答案 1 :(得分:0)

我设法通过创建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"中没有任何内容的文档存在一些错误。部分但整体工作。

感谢指点,我现在手持解析字符串知识:)