>我有一个访问表,目前只有 1 个字段,但它应该是 5 个单独的字段。该字段是文本,应在每个";"处拆分。分号之间的每个部分可以有不同的长度。
我目前正在使用宏创建此表,因此能够通过宏添加此解决方案会很棒。但是如果这是唯一的选择,我愿意在查询中使用函数。
例:现在:F100584698878941;HG1D100037;HG-G8;HG1D100037;HG-45
应该是:F1
00584698878941
F2HG1D100037
F3HG-G8
F4HG1D100037
F5HG-45
您可以使用更新查询执行此操作 - 但这意味着需要大量函数调用
以下是一些适合您的代码:
PREP:确保表具有 F1、F2、F3、F4、F5 字段
使用"Ctrl-G"打开VB编辑器
插入模块
复制/粘贴代码
Public Sub LoadTable()
Const YOUR_TABLE_NAME As String = "Table2"
Const SQL_UPDATE_DATA As String = "SELECT * FROM [" & YOUR_TABLE_NAME & "] WHERE F2 Is Null"
Dim rs As DAO.Recordset
Dim strF1Data As String
Dim varData As Variant
Set rs = CurrentDb.OpenRecordset(SQL_UPDATE_DATA)
With rs
Do Until .EOF
strF1Data = !F1
varData = Split(strF1Data, ";")
If UBound(varData) = 4 Then
.Edit
!F1 = varData(0)
!F2 = varData(1)
!F3 = varData(2)
!F4 = varData(3)
!F5 = varData(4)
.Update
End If
.MoveNext
Loop
.Close
End With
Set rs = Nothing
End Sub
PREP:修改常量YOUR_TABLE_NAME以匹配表名
按 F5 运行它
拿起一本好的 VBA 书 - 你可以做更多的事情
To dbmitch:
法典:
'public sub loadTable()
Const Compare_Files As String = "Table2"
Const SQL_UPDATE_DATA As String = "SELECT * FROM [" & Compare_Files & "] WHERE F2 Is Null"
Dim rs As DAO.Recordset
Dim strF1Data As String
Dim varData As Variant
Set rs = CurrentDb.OpenRecordset(SQL_UPDATE_DATA)
With rs
Do Until .EOF
strF1Data = !F1
varData = Split(strF1Data, ";")
If UBound(varData) = 4 Then
.Edit
!F1 = varData(0)
!F2 = varData(1)
!F3 = varData(2)
!F4 = varData(3)
!F5 = varData(4)
.Update
End If
.MoveNext
Loop
.Close
End With
Set rs = Nothing
结束子'
表截图