访问 - 按字符拆分字段



>我有一个访问表,目前只有 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

结束子'

表截图

相关内容

  • 没有找到相关文章

最新更新