Ms access 扩展SQL中的数字范围
是否可以编写SQL代码来扩展目标Zip范围列中的数字集群? 截图附在下面 使用Access 2016,谢谢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
您需要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