|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Есть процедура на VBA в задачу, которой входит считать большой объём информации (более 10 тыс. строк) с листа MSExcel в массив: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Проблема в том, что в массив попадают значения не всех ячеек. Например, по адресу mas3(18,7730) ожидается значение «РД в наличии 18.08.2017», но реально там «NULL»: Подскажите, как решить проблему? Исходник: ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2018, 04:48 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Исходник: ИСХОДНИК ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2018, 04:51 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
осталось выяснить, что и откуда надо запускать, чтобы воспроизвести вашу проблему. скриншот нечитаемый ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2018, 10:39 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Нужно запустить процедуру "MassPSD3" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 14:28 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Shocker.Pro, нужно запустить процедуру "MassPSD3" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 14:29 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Shocker.Pro, в эксель файле 7737 строка! В массиве 7730 строка! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 14:43 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Shocker.Pro, идеи какие нибудь есть, из-за чего это происходить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2018, 06:47 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
АртЮганскShocker.Pro, идеи какие нибудь есть, из-за чего это происходить? склонность екселя к автопреобразованию данных замените строку подключения на OLEDB к примеру Код: vbnet 1.
или Код: vbnet 1.
в зависимости от драйвера, который у вас стоит На будущее, строки подключения ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2018, 08:45 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
HandKot, Попробовал, две ваших строки на строку: Код: vbnet 1.
Выдаёт ошибку: " Ошибочный аргумент. " на строку: Код: vbnet 1.
Выдаёт ошибку: " Невозможно найти устанавливаемый ISAM. " ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 07:53 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
HandKot, Спасибо всем, проблема решена! С такой строкой: Код: vbnet 1.
работает идеально! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 09:04 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
Ещё так попробуй Public Const sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Art\МАКРОСЫ\УНС_Маска\Макрос\bd.xlsb;Extended Properties=Excel 12.0 Xml;" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 15:48 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
АртЮганскHandKot, Спасибо всем, проблема решена! С такой строкой: Код: vbnet 1.
работает идеально! в Вашем случае обратите внимание на IMEX=1 . Именно этот параметр и НЕ позволяет экселю преобразовывать входящие данные, что и решило Вашу проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 07:35 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
HandKotв Вашем случае обратите внимание на IMEX=1 . Именно этот параметр и НЕ позволяет экселю преобразовывать входящие данные, что и решило Вашу проблему Только собралась написать благодарственный пост с дифирамбами, а тут выяснилось, что действует не на все поля или не на все типы. Оный параметр помог с одним полем и упорно подставляет нули в другое. Оба числовые. Проблемы в тех ячейках, к которым есть примечание "число сохранено как текст". Строка подключения: Код: javascript 1.
Вообще-то я маяюсь с jscript :-) но, кажется, это неважно в контексте ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 14:04 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
natalitvinenkoтут выяснилось, что действует не на все поля или не на все типы. Оный параметр помог с одним полем и упорно подставляет нули в другое. Оба числовые. Проблемы в тех ячейках, к которым есть примечание "число сохранено как текст". Строка подключения: Код: javascript 1.
Вообще-то я маяюсь с jscript :-) но, кажется, это неважно в контексте ситуации. Добрый день. Пришлите файлик с примером. Тут посмотрят ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 08:08 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
HandKotВообще-то я маяюсь с jscript :-) но, кажется, это неважно в контексте ситуации. Добрый день. Пришлите файлик с примером. Тут посмотрят[/quot] Спасибо! Уже сама разгребла и именно так, как Вы сказали - https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1308941&msg=21816519 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2019, 10:08 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
HandKot, вдогонку к предыдущему посту. Еще немножко чудили пользователи. Данные получались , возможно, путем распознавания бумажной версии, и потому там в одной фамилии присутствовала одинарная кавычка ' . Программа доходила до этой строчки и валилась, хотя вроде всяких try натыкано много. Предварительно чистить поля от всего, что не буква, тоже был не вариант по ряду причин. Отловила злосчастную кавычку, отписали юзерам и решили проблему:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2019, 10:12 |
|
Функция ADODB.Recordset.GetRows передаёт в массив не все значения!
|
|||
---|---|---|---|
#18+
АртЮганскидеи какие нибудь есть, из-за чего это происходить? При открытии Recordset-a ADODB пытается определить тип поля. Делает он это не по всем строкам, а только по первым. Соответственно если в первых строках в столбце стоит число, а где-то в середине в нем же написано "Вася", то эта строка не будет добавлена в Recordset. При желании можно самим принудительно указать тип полей Recordset-a, например, следующим образом: SELECT ' ' AS F1, 0 AS F2, ... WHERE 1=2 UNION SELECT F1, F2, ... В общем, как-то так, насколько помню ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 09:04 |
|
|
start [/forum/topic.php?fid=60&tid=2154930]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 415ms |
0 / 0 |