![]() |
|
Модераторы: Akina |
![]()
|
|
| neiron |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 18.4.2006 Где: Краснодар Репутация: 3 Всего: 4 |
Необходимо информацию из текстовика добавить в БД. С малыми файлами работает отлично. Но с большими возникают трудности.
Собственно код:
Обновление БД:
Сначала маленький вопросик по 2й строке. Что лучше использовать: For i = 1 To (KolDan / KolLine) или for i=1 to ubound(arrdan)? Что быстрее? Или koldan/kolline в переменную вынести? Теперь собственно проблема. При загрузке файлов, где количество данных более 1*4000 (примерно), т.е. 2 и более рядов данных и в каждом более чем по 4000 значений, возникают непонятные проблемы с заполнением БД. Примерно до 4000й строки всё нормально пишется, затем строки непонятным образом переставляются (зависимости не нашёл). Именно переставляются, а не заменяются неизвестными значениями. При этом концовка может получиться какой угодно - последние записи в БД могут даже совпадать с исходными. Массив ArrDan смотрел, все переменные тоже отслеживал. На выполнение подаётся правильная строка. Что интересно, при пошаговом выполнении строки пишутся нормально, в автомате сбой. Причём сбой всё время повторяется, т.е. начинает менять на определённой строке. Пока это писал ещё заметил. Для экспорта из екселя используется точно такой же код. Он работает прекрасно, хотя точно так же использует массив.
что называется - найдите 5 отличий. При этом во втором куске использовался строковый массив, в первом числовой. Изменил везде на строковый - теперь строки начинают меняться ещё раньше. В чём же может быть дело? Почему в первом примере строки пишутся коряво, а во втором всё работает? Типы данных везде одинаковы. Это сообщение отредактировал(а) neiron - 11.2.2008, 05:04 |
||||||
|
|||||||
| Akina |
|
||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Совершенно очевидно, что если данные содержатся в массиве, то ни то, ни другое.
Либо
Второй вариант предпочтительнее для статических данных. Если же данные лежат в коллекции - то ForEach без вариантов. Ну очень невнятно... я, например, пока не понял что происходит. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
| neiron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 18.4.2006 Где: Краснодар Репутация: 3 Всего: 4 |
Добавил counter поле. Всё нормально теперь. Видимо, отображение появлялось не в порядке заполнения БД, а как-то иначе, что меня и пугало.
Akina, спасибо, но не понимаю принципа. Т.е. пределы счётчика автоматом запоминаются где-то в памяти и при каждой проверке i не происходит высчитывание пределов, а происходит только сравнение? Иначе зачем использовать в объявлении цикла функции? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
О господи!!! еще один адепт файловых баз данных... а а каком языке вы понимаете принцип работы цикла? они абсолютно везде одинаковы... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| neiron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 18.4.2006 Где: Краснодар Репутация: 3 Всего: 4 |
Akina, принцип как таковой я понимаю. Не понимаю одного - при каждой иттерации счётчик сравнивается с пределами. Пределы эти высчитываются непосредственно во время сравнения или хранятся в памяти в течении всего выполнения цикла? Я спрашиваю что эффективнее с точки зрения оптимизации по скорости?
Сделал маленькую тулзу. Проверил - разницы в скорости вообще не заметил. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
То есть экспериментально установили, что пределы вычисляются ДО начала выполнения цикла и в дальнейшем не пересчитываются. Хотя нагляднее было в качестве одного из пределов использовать то, что вернет InputBox:
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| neiron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 18.4.2006 Где: Краснодар Репутация: 3 Всего: 4 |
Akina, угу, теперь понятно. Спасибо.
|
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |