【发布时间】:2020-03-02 19:17:41
【问题描述】:
我有一个包含以下列的表格。我正在尝试将 Additional Fig 和 Additional Item 分开在新记录中,但旧 ID 仍与它们相关联。
所以我最终得到了一张如下表所示的表格。在 ID 89 上有两个额外的无花果,但只有一个额外的项目,在这样的记录中,缺少的附加项目将留空或 9999 需要放入记录中。
下面的代码来自Split Field Into Multiple Records in Access DB。它让我接近我想做的事情。代码将一列拆分为多列,但我需要将两列拆分为多列,并找到一种方法来处理有额外无花果但没有额外项目的记录,反之亦然。
Option Explicit
Public Sub ReformatTable()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rsADD As DAO.Recordset
Dim strSQL As String
Dim strField1 As String
Dim strField2 As String
Dim varData As Variant
Dim strAppCode As String
Dim i As Integer
Set db = CurrentDb
' Select all eligible fields (have a comma) and unprocessed (Field2 is Null)
strSQL = "SELECT AppCode, Field1, Field2 FROM Table1 WHERE ([Field1] Like ""*,*"") AND ([Field2] Is Null)"
' This recordset is only used to Append New Records
Set rsADD = db.OpenRecordset("Table1", dbOpenDynaset, dbAppendOnly)
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
With rs
While Not .EOF
' Do we need this for newly appended records?
strAppCode = !AppCode
strField1 = !Field1
varData = Split(strField1, ",") ' Get all comma delimited fields
' Update First Field
.Edit
!Field2 = Trim(varData(0)) ' remove spaces before writing new fields
.Update
' Add new fields for remaining data at end of string
For i = 1 To UBound(varData)
With rsADD
.AddNew
' ***If you need a NEW Primary Key based on current AppCode
!AppCode = strAppCode & "-" & i
' ***If you remove the Unique/PrimaryKey and just want the same code copied
!AppCode = strAppCode
' Copy previous Field 1
!Field1 = strField1
' Insert Field 2 based on extracted data from Field 1
!Field2 = Trim(varData(i)) ' remove spaces before writing new fields
.Update
End With
Next
.MoveNext
Wend
.Close
rsADD.Close
End With
Set rsADD = Nothing
Set rs = Nothing
db.Close
Set db = Nothing
End Sub
【问题讨论】:
-
您自己尝试了一些代码吗?
-
你想要split。
-
所以你还没有尝试适配代码?