VBA, MS Access MS Access в примерах

Конкатенация НАОБОРОТ - Пребразование строки с разделителем в записи таблицы

По материалам: https://www.cyberforum.ru/ms-access/thread3055593.html

Private Sub SplitStringToRecords()
'Конкатенация НАОБОРОТ ...
'--------------------------------------------------------------------------
Dim sVal As String
Dim rsSRC As DAO.Recordset
Dim rsDST As DAO.Recordset
Dim lVal As Long, lCount&
Dim vArr As Variant
 
On Error GoTo SplitStringToRecords_Err
 
    sVal = "DELETE FROM Адреса_New"
    CurrentDb.Execute sVal
    
'Сброс (обнуление) значения счётчика
    sVal = "ALTER TABLE Адреса_New ALTER COLUMN AdrID COUNTER(1,1)"
    CurrentDb.Execute sVal
    
    Set rsSRC = CurrentDb.OpenRecordset("Адреса", dbOpenSnapshot)    'Источник -Только просмотр
    Set rsDST = CurrentDb.OpenRecordset("Адреса_New", dbOpenDynaset) 'Назначение (куда)
 
    With rsSRC
        Do Until .EOF = True
            sVal = !Дом & ""
            vArr = Split(sVal, ",")
            For lVal = 0 To UBound(vArr)
                rsDST.AddNew
                    rsDST!НасПункт = ![Населенный пункт]
                    rsDST!Улица = !Улица
                    rsDST!Дом = Trim(vArr(lVal))
                rsDST.Update
            Next lVal
            .MoveNext
        Loop
    End With
 
    
    MsgBox "Готово!" & vbCrLf & _
        rsSRC.RecordCount & " исходных записей преобразовано в " & _
        rsDST.RecordCount & " записей.", vbInformation
 
SplitStringToRecords_End:
    On Error Resume Next
    rsSRC.Close:    Set rsSRC = Nothing
    rsDST.Close:    Set rsDST = Nothing
    Err.Clear
    Exit Sub
 
SplitStringToRecords_Err:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Sub: SplitStringToRecords in module: []", vbCritical, "Error in Application"
    Resume SplitStringToRecords_End
End Sub



Picture




Скачать

MSA-2003 ( 54 kB) Пример


Назад ToTop
L.E. 07.12.2022
Рейтинг@Mail.ru