Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 482
от 19.02.2007, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 244, Экспертов: 32
В номере:Вопросов: 2, Ответов: 4


Вопрос № 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
Удачи.
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: 4-ый класс)
Ответ отправлен: 14.02.2007, 20:22

Отвечает: forest_walker
Здравствуйте, Mika_kl!
Можно добавить только вот что: если Вы хотите получить гарантированный результат расчетов, то придется разработать свой синтаксис написания, и уже на него ориентировать программу-анализатор
---------
осторожность, точность... и горит все синим пламенем! :))
Ответ отправил: forest_walker (статус: Практикант)
Ответ отправлен: 15.02.2007, 10:01


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное