Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: размер поля недостаточен, чтобы принять добавляемые данные
 
 автор: dmsrv803   (26.04.2012 в 15:13)   личное сообщение
 
 


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 строке получаю ошибку

размер поля недостаточен, чтобы принять добавляемые данные....

Дебагю дальше и с различным интервалом получаю эту ошибку.
Вопрос: и че мне с этим делать?

  Ответить  
 
 автор: Анатолий (Киев)   (26.04.2012 в 16:17)   личное сообщение
 
 

На какой строке кода появляется ошибка? Вы не показали, как открываете rsL и что делаете с данными.

[b][Maximum Row Size=2000/b] - первый раз вижу такой параметр. Дайте ссылку, где он описан.

  Ответить  
 
 автор: dmsrv803   (26.04.2012 в 16:29)   личное сообщение
 
 


rsL.Open "Select * from [Companies$]", cnn, adOpenStatic, adLockReadOnly


что касаемо Maximum Row Size=2000, то изначально он выглядел как Maximum Row Size=500, я предположил, что это может каким-то боком связано с максимально допустимой длинной записи и увеличил этот параметр, но никакого эффекта не последовало.

ошибка появляется на rsL.MoveNext

  Ответить  
 
 автор: Анатолий (Киев)   (26.04.2012 в 19:11)   личное сообщение
 
 

Вместо adOpenStatic попробуйте adOpenForwardOnly.
А еще в строку подключения добавьте параметр ImEx=1.

А вы уверены, что всё это из-за поля с длинными строками? И чем отличаются значение в строках с ошибками от остальных?
А если прилинковать таблицу и открыть?

  Ответить  
 
 автор: dmsrv803   (27.04.2012 в 15:02)   личное сообщение
 
 

я пробовал импортировать - таже самая ошибка. Само значение в поле с длинными строками (не такие они и длинные) не важно. Ошибка появляется при чтение записями с совершенно различными значениями, как по содержанию, так и по количеству символов. Если колонку с длинными строковыми значениями убрать из таблицы - все нормально. Линьковать не пробовал.

А adOpenForwardOnly помог избавиться от проблемы.

Спасибо за помощь

P.S. adOpenStatic также можно использовать, но для этого необходимо увеличить CacheSize = 2000

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList