|
|
|
| Acc2003.
Есть свободный выпадающий список. Есть Sub в котором в зависисимости от значения логического поля идёт перезаряда источника и установка на 1-м значении
me.dd_date.RowSource = "query1" '(либо "query2")
me.dd_date.SetFocus
me.dd_date.ListIndex = 0
(dd-DropDown:)
При открытии формы так же проход по этой процедуре из FormOpen. Всё срабатывает.
При смене значения лог. поля из формы "Run-time error 7777: неправильное использование свойства ListIndex".
Ворос. Что может приводить к невозможности использования св-ва? Всю форму не привожу-там много контролов и кода к ним. Сделал тестовую простую форму с DropDown - всё работает. Поотключал всё лишнее на моей форме - Err. | |
|
| |
|
|
|
| простите, а эт чё такое?
me.dd_date.ListIndex = 0
============
встать на первую строку?
Может там строк нет? | |
|
| |
|
|
|
| Да, на 1-ю. Строки там точно есть.
Проверка MsgBox me.dd_date.ListCount перед .ListIndex даёт результат без всяких Requery. Но при открытии формы код выполняется до появления формы на экране, а во во втором случае - из самой формы. Что может привести поле в не доступность свойству ListIndex?
Чаво в ём не хватает? (Dropdown тоже идёт!) (В тест-форме это фокус проходит!) | |
|
| |
|
|
|
| а не так?
me.dd_date.ListIndex(0) | |
|
| |
|
|
|
| Не. Так сразу выплёвывает. | |
|
| |
|
|
|
| попробуйте после
me.dd_date.RowSource = "query1" '(либо "query2")
поставить
doEvents | |
|
| |
|
|
|
| Не помогло.
Начал упрощать рабочую форму до пробной. Нашёл отличие.
На тестовой было 2 кнопки:
but1_Click(): me.dd_date.RowSource = "query1"
but2_Click(): me.dd_date.RowSource = "query2"
На рабочей управление было логическим полем:
If flag_arch=true then
me.dd_date.RowSource = "query1"
Else
me.dd_date.RowSource = "query2"
End if
где flag_arch тот самый гад из под котрого почему-то это происходит.
Не помогло и
If flag_arch=true then
Call but1_Click
Что бы это значило? | |
|
| |
|
|
|
| Значение по умолчанию задайте
через DFirst | |
|
| |
|
|
|
|
| Это фактически 2й запрос значения из архива.Первый раз при набивке выпадающего поля. Долго. Оставлю перезагрузку на кнопке.
Возникла ещё проблема. Запрос обращается к полю со списком. Нужно обратиться НЕ к присоединённому столбцу:
Условие отбора: =Form_formame.dd_date.Column(2)
В запросах эта конструкция не воспринимается (Column(N) - мешает).
Можно ли объехать это ограничение (Кроме использования функций обращения к столбцу)?? | |
|
| |
|
|
|
|
Эта конструкция работает присловии, что me.dd_date РЕАЛЬНО имеет фокус.
Проще и надежнее делать так:
me.dd_date = me.dd_date.ItemData(0)
В запросах эта конструкция не воспринимается (Column(N) - мешает)
|
Создайте скрытое поле с выражением =[dd_date].Column(2), на него ссылайтесь в запросе | |
|
| |
|
|
|
| O'k. С ItemData всё срабатывает. По второму вопросу то же спасибо за подсказку. Пара скрытых полей мне больше нравиться, чем 2 Public функции.
Не очень ясно с реальным фокусом. Хотя Open происxодит до Load, а Visible возможен после Current, что ещё позднее, ListIndex внутри обработки лог. поля при загрузке формы срабатывает, а на загруженной форме - нет! Что-то по описанной в Help последовательности событий не вяжется. В первом варианте не должен действовать SetFocus, а во втором фокус куда-то девается или ещё не устанавливается.
P.S. Ещё один полезный результат от возни с многоколонным полем.
При использовании конструкции типа .dd_date = .dd_date.ItemData(.dd_date.ListCount - 1) -чтоб поставить, напрмер, на последнне поле, необходимо чтоб присоединённый стобец имел уникальные значения, даже если они не используются | |
|
| |
|
|
|
|
Пара скрытых полей мне больше нравиться, чем 2 Public функции.
|
эх... | |
|
| |