Вопрос № 75705: Каким способом лучше, т.е. будет работать быстрее, проверка введенных данных в форму. Мне нужно проверять код, наличие которого нужно проверять в другой таблице (26406 записей). Пока я сделала так
kod_okpo = Me![okpo_f]
proverka = DCount(&qu...Вопрос № 75716: Здравствуйте уважаемые эксперты! Подскажите пожалуйста, как в Excel с помощью VBA определить количество списков на листе или в книге, а также их границы(адрес) и структуру(количество и формат полей)....
Вопрос № 75.705
Каким способом лучше, т.е. будет работать быстрее, проверка введенных данных в форму. Мне нужно проверять код, наличие которого нужно проверять в другой таблице (26406 записей). Пока я сделала так
kod_okpo = Me![okpo_f]
proverka = DCount("[okpo]", "okpoc", "okpo =" & kod_okpo)
If proverka < 1 Then
MsgBox "Код ОКПО введен неправильно!"
End If
Но данная конструкция работате долго...
Отправлен: 14.02.2007, 15:26
Вопрос задала: Dariola (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Dariola!
Попробуйте сделать так:
Dim rs as DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT okpo FROM okpoc WHERE okpo =" & kod_okpo)
If rs.RecordCount = 0 Then
...Ваш код...
Не забудьте закрыть рекордсет и очистить переменную
rs.Close
Set rs = Nothing
Удачи.
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: 4-ый класс)
Ответ отправлен: 14.02.2007, 21:13 Оценка за ответ: 5
Отвечает: forest_walker
Здравствуйте, Dariola!
К сообщению ув. Тесленко Е. А. позволю добавить следующее.
На практике мне приходилось сталкиваться с неприятной особенностью VBA при работе с базами данных - работа со снимком с базы идет намного быстрее, чем с самой базой (если размер базы позволяет :) ). Это связано со внутренними механизмами запроса-подтверждения: чем чаще в алгоритме выполняется запрос - тем больше тормозит. В вашем случае можно просто при старте программы однократно считать значения в переменную (глобальный массив) и работать уже с ними - размер таблицы не слишком большой, должно получиться.
Если Вы хотите сделать программу совсем быстрой - придется писать хэш-таблицу. Суть ее состоит в том, что Вы кодируете исходную строку по определенному алгоритму и получаете адрес в массиве (в идеале - сразу ячейки памяти), по которому и кладете строку . После этого Вам остается только перекодировать исследуемую строку и посмотреть, есть ли что-нибудь в массиве по данному адресу. Если есть - то сравнить.
За подробностями просьба в личку.
Если в чем напутал - извините. :)
--------- осторожность, точность... и горит все синим пламенем! :))
Ответ отправил: forest_walker (статус: Практикант)
Ответ отправлен: 15.02.2007, 09:59 Оценка за ответ: 5
Вопрос № 75.716
Здравствуйте уважаемые эксперты! Подскажите пожалуйста, как в Excel с помощью VBA определить количество списков на листе или в книге, а также их границы(адрес) и структуру(количество и формат полей).
Отправлен: 14.02.2007, 16:31
Вопрос задал: Mika_kl (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Mika_kl!
К сказаному добавить нечего, вопрос требует уточнения. Но можно подсчитать строки и солонки занимаемые диапазоном данных на листе.
ActiveSheet.UsedRange.Rows.Count
ActiveSheet.UsedRange.Columns.Count
Удачи.
Евгений.
Отвечает: forest_walker
Здравствуйте, Mika_kl!
Можно добавить только вот что: если Вы хотите получить гарантированный результат расчетов, то придется разработать свой синтаксис написания, и уже на него ориентировать программу-анализатор
--------- осторожность, точность... и горит все синим пламенем! :))
Ответ отправил: forest_walker (статус: Практикант)
Ответ отправлен: 15.02.2007, 10:01