Переполнение числового поля Попытка импортировать Lotus123 Sheets в MS Access - PullRequest
0 голосов
/ 29 июня 2018

Я работаю над проектом, в котором у компании все еще есть все в лотосных заметках, и мы начинаем переделывать систему, чтобы они больше не работали на Lotus.

Сейчас я просто пытаюсь импортировать таблицы Lotus в базу данных MS Access, но получаю сообщение об ошибке «Числовое переполнение». Кто-нибудь знает, как с этим справиться?

Таблица содержит 196 столбцов и 846 строк. В настоящее время я назвал диапазон в таблице лотоса. Однако в идеале мы могли бы просто назвать диапазон, который мы хотим импортировать, так:

"SELECT * INTO PRNTDATM FROM [a:a1..a:a8100]"

Полная ошибка:

Ошибка времени выполнения '-2147467259 (800004005)' Переполнение числового поля

Private Sub Command0_Click()
Dim CombLoop As Integer
Dim LotusCn As Object
Dim rsLotus As Object
Dim strSql, CombFileName, GotoRange As String

Set LotusCn = CreateObject("ADODB.Connection")
Set rsLotus = CreateObject("ADODB.Recordset")

LotusCn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= K:\GEVS04\NUMBDATM.WK3; Extended Properties=Lotus WK3;"


strSql = "Select * INTO PRNTDATM FROM phil"
rsLotus.Open strSql, LotusCn

LotusCn.Close
Set rsLotus = Nothing
Set LotusCn = Nothing

End Sub

С этого поста я работал над ним и получил некоторые улучшения, теперь я могу читать и импортировать некоторые тестовые данные в таблицы. Найденное добавление работало лучше, чем импорт всей новой таблицы, поэтому придется попробовать этот маршрут. Это, похоже, решило проблему переполнения, потому что теперь у меня уже есть сама структура таблицы, поскольку существует только около 5 структур таблиц, которые должны нормально работать для этого кода.

Код теперь:

Dim CombLoop As Integer
  Dim LotusCn As Object
  Dim rsLotus As Object
  Dim strSql As String
  Dim rs As DAO.Recordset

    Set LotusCn = CreateObject("ADODB.Connection")
    Set rsLotus = CreateObject("ADODB.Recordset")

    LotusCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\Users\germany5.PLIMSOLL\Desktop\TEST.WK4;" & _
    "Extended Properties=Lotus WK4;"

    strSql = "SELECT * FROM [a1..C3];"
    rsLotus.Open strSql, LotusCn

    Set rs = CurrentDb.OpenRecordset("Select * From NICHDATMGECO20;")

    If Not (rsLotus.EOF And rsLotus.BOF) Then
        FindRecordCount = rsLotus.RecordCount
        rsLotus.MoveFirst
        Do Until rsLotus.EOF = True
            Field1 = rsLotus![Reg. Number]
            Field3 = rsLotus![Sales / Tot.Assets]
            Field2 = rsLotus![Company Name]
            rs.AddNew
            rs![Reg. Number] = Field1
            rs![Company Name] = Field2
            rs.Update
        rsLotus.MoveNext
        Loop
    End If

    LotusCn.Close
    Set rsLotus = Nothing
    Set LotusCn = Nothing
    rs.Close

Просто чтобы сообщить вам, что проблема была решена, и выше - это конечный результат кода, который прекрасно работает для меня. Мне нужно было ссылаться на Lotus 123 в Инструментах на тот случай, если кто-то захочет повторить то, что я сделал здесь.

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