|
11 Кб. |
|
| Пример, полезный и зря некто "Любитель" ведет себя как на сайте футбольных болельщиков.
К тому же, пример напомнил мне одну проблему, связанную с заполнением полей без клавиатуры, а значит, и без получения фокуса полем.
Невозможно отследить события типа изменения полей!
Я как-то столкнулся с задачей "разрешить" кнопку если N полей заполнено.
А поля заполнялись исключительно (!!!!!!) выбором из списков.
Сейчас набросал по памяти (во вложении), но смысл в коде.
Ничего кроме того что в примере не придумал. | |
|
| |
|
11 Кб. |
|
| Не смотрел предмет спора, но "проблема" Дяди Федора решается очень просто и без таймера.
Вот один из вариантов, например:
Private Sub Form_Open(Cancel As Integer)
Me.ПолеСоСписком0.AfterUpdate = "=funEnabledBtn()"
Me.ПолеСоСписком6.AfterUpdate = "=funEnabledBtn()"
End Sub
Public Function funEnabledBtn()
Me.Поле0 = Me.ПолеСоСписком0
Me.Поле2 = Me.ПолеСоСписком6
Кнопка.Enabled = Len(Nz(Поле0)) And Len(Nz(Поле2))
End Function
|
При этом поле0 и Поле2 не имеют источника данных.
Кнопка работает так как ей и положено.
ps. Правда так и не понял, зачем перегонять данные из полей со списками в текстовые поля, но, наверное, так надо было.
Пошел гляну предмет спора. | |
|
| |
|
|
|
| да, пример мой не совсем удачный.
но я ж сказал - на скорую руку.
на самом деле вместо полей со списом д.были быть подчиненные формы, а в них выбор | |
|
| |
|
|
|
| Я, пожалуй, соглашусь с первым комментарием, и даже с формулировкой, увы.
Метод, которым получают данные поля формы в разделе Заказы и Заказано обычно так и называют.
Имеем три связанные таблицы.
Добыть все данные можно максимум 3 наборами данных.
А что видим: ВОСЕМЬ D-функций, причем 4 из них к запросу.
Это восемь ОТКРЫТЫХ и ЗАКРЫТЫХ наборов данных на каждый выбор клиента в поле со списком + набор данных самого поля со списком.
ИТОГО 9 наборов данных в одной форме на три связанные таблицы.
К тому-же, помещенные D-функции в свойство текстового поля "Данные" значительно медленнее работают, чем если их вызывать из модуля формы, во много раз!!! А их там 8.
У меня не самый медленный ПК, но тормоза - видны невооруженным глазом, а записей в таблицах не так уж и много.
Наверное, это не есть удачный пример для начинающих. | |
|
| |
|
|
|
| Ну что... буду оправдываться
Хотя пример делал не я, но решение о его размещении лежит на мне...
При создании раздела идея была показать начинающим КАК можно решить ту или иную задачу, при этом решение должно быть максимально простым.
Если заметили, в этих примерах используются фильтры на уровне формы, вместо условий в источниках данных и т.п.
т.е. задача не стояла сказать "всегда делай так", задача показать принципиальную возможность решения, конкретной задачи именно по этому под каждую задачу отдельная форма и отдельный пример, что бы ВЫДЕЛИТЬ решение.
При этом примеры должны был быть ... ну эффектным что ли, с точки зрения наглядности, а не оптимальности кода. Именно из-за этого там так много полей... понятно, что значительно эффективнее было создать подчиненные формы, но задача была решение конкретной узкой задачи "получения данных из таблиц не подключенных к форме"....
Ну вот собственно и все... | |
|
| |
|
|
|
| 1. Капитан всегда прав.
2. Если капитан неправ, читай п.1.
...задача была решение конкретной узкой задачи "получения данных из таблиц не подключенных к форме"...
Автору, наверное, следовало показать несколько способов и кратко описать преимущества и недостатки каждого, а не показывать 8 раз наиболее затратный из них, без пояснений его недостатков.
А так складывается впечатление у новичка, что других способов и нет вовсе. | |
|
| |
|
|
|
| Конструктивно. За что люблю | |
|
| |