Копирование с сервера и локальных наборов записей (Access VBA) - усекаются ли поля после 255 символов? - PullRequest
0 голосов
/ 14 сентября 2018

Короче говоря, я перетаскиваю кучу данных из хранилища данных в локальную базу данных Access.Я опубликую код перед тем, как показать, что я делаю с первым набором исходных данных.Остальные наборы данных извлекаются с использованием тех же концепций.

Локальные таблицы предварительно определены, а рассматриваемые текстовые поля являются полями "memo" в локальной БД.Я проверил, и исходные данные, загружаемые в хранилище данных, не усекают эти поля.Также я могу экспортировать данные через другие приложения без усечения этих полей.Итак, что-то происходит, когда я импортирую данные из хранилища данных в мою локальную базу данных доступа.

Вот соответствующая выдержка из моего (очень простого) кода.Я просто сопоставляю имена полей и использую свойство набора записей .value для копирования данных с сервера в локальную таблицу.

Есть идеи?

Dim db As DAO.Database
Set db = CurrentDb

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim rsServer As ADODB.Recordset
Set rsServer = New ADODB.Recordset

Dim rsLocal As Recordset
Dim fField As ADODB.Field

'Open Connection
With conn
    .ConnectionString = dataConnectionString
    .Open
End With

'*****************************
'*******Data set 1 data*******
'*****************************

'Open server DSET_1_SOURCE_DATA table
Set rsServer = conn.Execute(SQL_DSET1_SERVER)

'Open local DSET_1_LOCAL_DATA table
Set rsLocal = db.OpenRecordset(SQL_DSET1_LOCAL)

'DELETE ALL RECORDS FROM LOCAL TABLE
DoCmd.SetWarnings False
DoCmd.RunSQL ("DELETE * FROM DSET_1_LOCAL_DATA")
DoCmd.SetWarnings True

rsServer.MoveFirst

Do Until rsServer.EOF
    rsLocal.AddNew

    For Each fField In rsServer.Fields
        rsLocal.Fields(fField.Name).Value = rsServer.Fields(fField.Name).Value
    Next

    recordCount = recordCount + 1
    rsLocal.Update
    rsServer.MoveNext
Loop

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я решил свою проблему.Это была не та проблема, о которой я думал.

Данные копировались из моего набора записей сервера в мой локальный набор записей просто отлично.Это также обновляло соответствующие таблицы просто отлично.Чего я не понял, так это того, что экспорт из запроса SELECT непосредственно в EXCEL усекает памятные поля после 255 символов.Сделав последний запрос в таблицу, а затем экспортировав , решил мою проблему.

Спасибо всем, кто откликнулся, пытаясь помочь.

0 голосов
/ 14 сентября 2018

Может быть, вы должны попробовать этот код для полей MEMO

rsLocal.Fields(fField.Name).AppendChunk(rsServer.Fields(fField.Name).GetChunk(rsServer.Fields(fField.Name).ActualSize))
...