我正在尝试分隔备忘录字段。该字段中包含多个注释,我需要将其解析为不同的列。然而,每个音符遵循相同的逻辑,以mm / dd / yyyy开头,然后音符本身后跟一个空格。
所以一个备忘录字段的例子是
01/25/2000工作在Rack-ID 03/03/2010签约Rack-ID 05/15/2014更新了Rack-ID
我需要将每个注释解析为Access中的不同列。
我正在研究VBA中的Split函数,他们最初有" |"作为一个分隔符,但删除它,现在我必须拉日期
注意" tbl_example"是我的测试访问数据库中的表 " Tx_example"是包含要在我的测试访问数据库中分隔的数据的列的名称
Sub Example()
On Error GoTo err_Handler
Dim rsD As DAO.Recordset
Set rsD = CurrentDb.OpenRecordset("tbl_Example")
Do While Not rsD.EOF
rsD.Edit
rsD!F1 = Trim(Split(rsD!Tx_Example, "|")(0))
rsD!F2 = Trim(Split(rsD!Tx_Example, "|")(1))
rsD!F3 = Trim(Split(rsD!Tx_Example, "|")(2))
rsD.Update
rsD.MoveNext
Loop
sub_Exit:
rsD.Close
Set rsD = Nothing
Exit Sub
err_Handler:
If Err.Number = 9 Then
Resume Next
Else
MsgBox "Err: " & Err.Number & vbNewLine & Err.Description
End If
End Sub
不确定我如何更换" |"用日期搜索。 我也不反对做一个替换和插入" |"就在每个日期之前,所以我会让我的分隔符回来。
问题是我不确定如何在文本备注字段中找到日期,否则我将能够使用替换功能或更新查询。
感谢任何帮助,谢谢。
答案 0 :(得分:2)
Public Function AddPipesBeforeDates(ByVal strText As String) As String
Dim regex As RegExp
Dim matches As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
regex.Pattern = "\d{2}/\d{2}/\d{4}"
Set matches = regex.Execute(strText)
For Each m In matches
strText = Replace(strText, m, "|" & m)
Next
AddPipesBeforeDates = strText
Set matches = Nothing
Set regex = Nothing
End Function
Sub Example()
On Error GoTo err_Handler
Dim rsD As DAO.Recordset
Dim results as variant
Set rsD = CurrentDb.OpenRecordset("tbl_Example")
Do While Not rsD.EOF
results = split(AddPipesBeforeDates(rsD!Tx_Example), "|")
rsD.Edit
rsD!F1 = Trim(results(1))
rsD!F2 = Trim(results(2))
rsD!F3 = Trim(results(3))
rsD.Update
rsD.MoveNext
Loop
sub_Exit:
rsD.Close
Set rsD = Nothing
Exit Sub
err_Handler:
If Err.Number = 9 Then
Resume Next
Else
MsgBox "Err: " & Err.Number & vbNewLine & Err.Description
End If
End Sub
答案 1 :(得分:0)
我最近写了类似的东西来从备忘录字段中删除过时的注释。此代码可能无法正常工作,但会让您更接近并为您提供一些想法。
一些初步说明:不要指望例程在第一次扫描时完成全部工作。创建临时表以将结果写入,并且每次运行例程时,首先清除临时表。每次运行后,调整代码以捕获上一次运行中遗漏的所有内容。这样,您将优化例程,直到准确捕获所有数据。您可能还需要手动编辑一些注释以使其工作
/usr/lib/jvm/java-8-oracle/jre/
另外,我强烈建议不要在同一个表中使用多个音符字段。您的Notes表应该看起来像我上面的temp_Notes表。在例程成功之后,只需运行Notes表而不是temp_Notes就可以了。
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-30-generic", arch: "amd64", family: "unix"