Экспорт таблиц множественного доступа и удаление возвратов каретки / разрывов строк - PullRequest
0 голосов
/ 08 июня 2019

Я создаю автоматизированный процесс, который экспортирует 50 таблиц, которые у меня есть, в доступ к CSV. У меня проблема в том, что в одной строке таблицы есть возврат каретки или разрывы строк. Когда я открываю экспортированные файлы CSV в виде текстового файла, некоторые строки разбиваются.

Тип данных для проблемной строки - весь текст. Мне нужна помощь в интеграции оператора в мой сценарий VBA, чтобы удалить пробелы перед любыми символами и удалить также разрывы строк или возврат каретки.

В этой таблице есть только один столбец, из-за которого возникают проблемы.

Я пробовал операторы Trim & Replace, которые, похоже, не работают. Это может быть вызвано неправильным написанием.

Option Compare Database
Option Explicit

Public Sub ExportDatabaseObjects()
On Error GoTo Err_ExportDatabaseObjects

    Dim db As Database
    Dim td As TableDef
    Dim d As Document
    Dim c As Container
    Dim i As Integer
    Dim sExportLocation As String

    Set db = CurrentDb()

    sExportLocation = "C:\File Path\"

For Each td In db.TableDefs 'Tables
    If Left(td.Name, 4) <> "MSys" Then
        CurrentDB.execute " UPDATE " & td.Name & " SET yourColumn='" & REPLACE(yourColumn, CHAR(13)+CHAR(10), "") & "' WHERE INSTR(1, yourColumn, CHAR(13)+CHAR(10))>0"
        DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".csv", True
    End If
Next td
Set db = Nothing
    Set c = Nothing

    MsgBox "All database objects have been exported as a csv file to " & sExportLocation, vbInformation

Exit_ExportDatabaseObjects:
    Exit Sub

Err_ExportDatabaseObjects:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_ExportDatabaseObjects

End Sub

Мой VBA-скрипт успешно экспортирует все таблицы в моей базе данных доступа в нужную папку. Теперь мне нужна помощь в очистке данных, прежде чем они поступят в производство.

1 Ответ

0 голосов
/ 08 июня 2019
For Each td In db.TableDefs 'Tables
    If Left(td.Name, 4) <> "MSys" Then
        CurrentDB.execute " UPDATE " & td.Name & " SET yourColumn='" & REPLACE(yourColumn, CHAR(13)+CHAR(10), "") & "' WHERE INSTR(1, yourColumn, CHAR(13)+CHAR(10))>0"
        DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".csv", True
    End If
Next td

Это должно помочь вам найти и заменить плохих персонажей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...