|
|
|
|
str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Me.txtFileName.value & ";Extended Properties=""Excel 8.0;HDR=YES;Maximum Row Size=2000"""
Set cnn = CreateObject("ADODB.Connection")
cnn.Open (str)
Set rsL = CreateObject("ADODB.Recordset")
Do While Not rsl.EOF
rsL.MoveNext
Loop
|
Читаю из Excel, на листе около 40 000 строк и 12 колонок. Одна из колонок содержит длинные строковые значения (макс 300 символов). На примерно 30 670 строке получаю ошибку
размер поля недостаточен, чтобы принять добавляемые данные....
Дебагю дальше и с различным интервалом получаю эту ошибку.
Вопрос: и че мне с этим делать? | |
|
| |
|
|
|
| На какой строке кода появляется ошибка? Вы не показали, как открываете rsL и что делаете с данными.
[b][Maximum Row Size=2000/b] - первый раз вижу такой параметр. Дайте ссылку, где он описан. | |
|
| |
|
|
|
|
rsL.Open "Select * from [Companies$]", cnn, adOpenStatic, adLockReadOnly
|
что касаемо Maximum Row Size=2000, то изначально он выглядел как Maximum Row Size=500, я предположил, что это может каким-то боком связано с максимально допустимой длинной записи и увеличил этот параметр, но никакого эффекта не последовало.
ошибка появляется на rsL.MoveNext | |
|
| |
|
|
|
| Вместо adOpenStatic попробуйте adOpenForwardOnly.
А еще в строку подключения добавьте параметр ImEx=1.
А вы уверены, что всё это из-за поля с длинными строками? И чем отличаются значение в строках с ошибками от остальных?
А если прилинковать таблицу и открыть? | |
|
| |
|
|
|
| я пробовал импортировать - таже самая ошибка. Само значение в поле с длинными строками (не такие они и длинные) не важно. Ошибка появляется при чтение записями с совершенно различными значениями, как по содержанию, так и по количеству символов. Если колонку с длинными строковыми значениями убрать из таблицы - все нормально. Линьковать не пробовал.
А adOpenForwardOnly помог избавиться от проблемы.
Спасибо за помощь
P.S. adOpenStatic также можно использовать, но для этого необходимо увеличить CacheSize = 2000 | |
|
| |