Ms access 扩展SQL中的数字范围

Ms access 扩展SQL中的数字范围,ms-access,vba,ms-access-2016,Ms Access,Vba,Ms Access 2016,是否可以编写SQL代码来扩展目标Zip范围列中的数字集群? 截图附在下面 使用Access 2016,谢谢 您需要DAO来运行此操作 创建一个助手函数来拆分邮政编码: Public Function ExpandCluster(ByVal ClusterList As String) As Variant Dim Clusters As Variant Dim Items As Variant Dim ZipCodes() As String

是否可以编写SQL代码来扩展目标Zip范围列中的数字集群? 截图附在下面

使用Access 2016,谢谢


您需要DAO来运行此操作

创建一个助手函数来拆分邮政编码:

Public Function ExpandCluster(ByVal ClusterList As String) As Variant

    Dim Clusters    As Variant
    Dim Items       As Variant
    Dim ZipCodes()  As String

    Dim Index       As Integer
    Dim FirstCode   As Integer
    Dim LastCode    As Integer
    Dim ThisCode    As Integer
    Dim Redimmed    As Boolean

    Clusters = Split(ClusterList, ",")
    ReDim ZipCodes(0)
    For Index = LBound(Clusters) To UBound(Clusters)
        Items = Split(Clusters(Index), "-")
        FirstCode = Val(Items(LBound(Items)))
        LastCode = Val(Items(UBound(Items)))
        While FirstCode <= LastCode
            Debug.Print Index, FirstCode
            If Redimmed Then
                ReDim Preserve ZipCodes(UBound(ZipCodes) + 1)
            Else
                Redimmed = True
            End If
            ZipCodes(UBound(ZipCodes)) = Format(FirstCode, "000")
            FirstCode = FirstCode + 1
        Wend
    Next

    ExpandCluster = ZipCodes

End Function

使用了一些通用名称。当然,请根据您的实际表名和字段名进行调整。

您是指PPKLaneID吗?如果是,则设置为IDENTITY@LukaszSzozda不,对不起,我指的是目标Zip范围列。@是的,访问2016“扩展这些数字簇”是什么意思?@Shawn我想写一个代码,创建新行并输入范围内的每个数字。(例如:850、851、852、853等)在新的行中。
Public Sub FillTable()

    Dim Source      As DAO.Recordset
    Dim Target      As DAO.Recordset

    Dim ZipCodes()  As String
    Dim Index       As Integer

    Set Source = CurrentDb.OpenRecordset("Select * From tblParent Where ZipRange Is Not Null")
    Set Target = CurrentDb.OpenRecordset("Select * From tblChild")

    While Not Source.EOF
        ZipCodes = ExpandCluster(Source!ZipRange.Value)
        For Index = LBound(ZipCodes) To UBound(ZipCodes)
            Target.AddNew
                ' Assign foreign key.
                Target!FK.Value = Source!Id.Value
                ' Assign this zip code.
                Target!ZipCode.Value = ZipCodes(Index)
                '
                ' Insert lines for other field values. 
                '
            Target.Update
        Next
        Source.MoveNext
    Wend
    Source.Close
    Target.Close

End Sub