4 / 1 / 0
Регистрация: 01.03.2016
Сообщений: 17
|
|
1 | |
Изменение расположения подчиненных форм13.04.2016, 21:29. Показов 1391. Ответов 4
Метки нет (Все метки)
Всех приветствую и прошу помощи. Есть форма с полем для поиска и кнопочка "искать". Чуть ниже 8 табличных форм, друг под другом в один столбец. Инфа разная, но некоторые поля совпадают, по ним и ищем, высота каждой табличной формы одинаковая. Поиск организован через запросы, то есть 8 отдельных запросов висит на кнопочке. Всё работает. В vba не силён, первый опыт. Если ничего не находит, меняю SourceObject на формочку с надписью "Нет данных"
Вопрос: Хочу скрывать подчиненые формы, если в результате запроса они оказываются пустыми. А формы с результатами сдвигать вверх, чтобы не было пустоты. Если бы форм было 2, то можно написать пару If-Else и Move-ом двигать. А как быть когда их 8? Как определить что, к примеру, 2я, 5я и 6я сейчас пустые и надо сдвинуть 3-8 вверх на одну форму и ещё 7-8 вверх на 2.... Высоту можно вычислить. Скрывать/показывать формы тоже научился, проверять пустой запрос или нет тоже. А вот с решением основной задачи никак... Чтоб написать код, сначала надо прикинуть как это работать будет, а я что-то не представляю. Если сделать это, не перебрав вречную все возможные комбинации невозможно, то оставим эту затею. Формочка с надписью "Нет данных" тоже красиво смотрится.
0
|
13.04.2016, 21:29 | |
Ответы с готовыми решениями:
4
Серия подчиненных форм Несколько подчиненных форм Списки подчиненных форм Не работает выбор подчиненных форм |
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
13.04.2016, 23:43 | 2 | |||||
Сообщение было отмечено franky_goa как решение
Решение
Если очень хочется можно подвинуть значимые формы, а пустые скрыть.
Предположим, что в "пустой" форме рекордсет EOF и будем проверять на пустоту этим способом. Понадобятся 3 константы: топ самой верхней формы, расстояние между формами и высота надписи формы. Третья константа нужна если надписи к подформам сверху подформ. Также нужны 2 массива: массив имен подформ и массив имен их подписей. Теперь можем написать процедуру скрывающую пустые подформы и сдвигающую непустые
1
|
4 / 1 / 0
Регистрация: 01.03.2016
Сообщений: 17
|
|
14.04.2016, 10:22 [ТС] | 3 |
Спасибо! Да, подписи есть. Код работает, если результат поиска выводит только одну подформу.
Если более одной, то между подформами образеутся расстояние = delta. Если непустые подформы идут подряд, то вытелает с ошибкой, что не может разместить элемент в указанном месте, видимо из-за того, что между подформами двойное растояние - нижняя соседняя подформа "наслаивается" на верхнюю Добавил Код
... If Me(mSubFrm(i)).Form.Recordset.EOF Then 'Проверка на наличие записей в подформе Me(mSubFrm(i)).Visible = False 'Скрываем пустые Me(mLblSub(i)).Visible = False Else Me(mSubFrm(i)).Visible = True 'Двигаем не пустые Me(mLblSub(i)).Visible = True ... Добавлено через 11 минут Странно, добился результата уменьшением delta Было delta = 2943, top1 = 878, hLbl = 285. Поствил delta = 380 и всё отлично! mobile, благодарю! Добавлено через 12 минут Выходит что надо разделить на кол/во подформ. Вряд-ли это совпадение
1
|
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
14.04.2016, 10:52 | 4 |
Замечательно, что Вы сами довели до "ума". Но на всякий случай даю пример с 4-мя подформами. Флажками можно "опустошить"/"наполнить" данными подформы. По кнопке они сдвигаются. Топ самой верхней подформы находится в процедуре загрузки главной формы
1
|
4 / 1 / 0
Регистрация: 01.03.2016
Сообщений: 17
|
|
14.04.2016, 12:09 [ТС] | 5 |
Спасибо за пример! Ну, "до ума" - это громко сказано, возиться с готовым кодом намного проще, чем с нуля писать.
В этой же форме сделал нажатие кнопки "искать" по Enter, когда фокус в поле ввода. Код
Public Sub fld_srch_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then Me.Кнопка3.SetFocus SendKeys "{Enter}" End If End Sub
0
|
14.04.2016, 12:09 | |
14.04.2016, 12:09 | |
Помогаю со студенческими работами здесь
5
Динамическое создание подчиненных форм Проверка на заполнение подчинённых форм Обновление и связь подчиненных форм Сумма полей подчиненных форм Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |