Опять о Runtime, контекстном меню, сортировке и фильтрах

Joss
Дата: 18.12.2015 17:32:07
Подкинули мне одну программку на доработку.
Разработчики во всю использовали стандартное контекстное меню для сортировки и фильтрации. А сейчас надо приспособить программу для работы в среде Access RunTime. А как известно в среде Runtime стандартные контекстные меню не работают. Надо писать своё. И ли садить на кнопки на форме.
Сортировку по столбцам я написал. Фильтрацию по выделенному значению или исключение выделенного значения - тоже. А вот по части строки не получается. Не знаю как сделать.

Для фильтрации использовал команды (это если на кнопки, а не на контекстное меню)
' фильтр по выделенному
    Screen.PreviousControl.SetFocus
    DoCmd.RunCommand acCmdFilterBySelection

' фильто - исключить выделенное
    Screen.PreviousControl.SetFocus
    DoCmd.RunCommand acCmdFilterExcludingSelection

' отключить фильтр по выделенному столбцу
    Screen.PreviousControl.SetFocus
    DoCmd.RunCommand acCmdRemoveFilterFromCurrentColumn

А что надо взять для фильтрации по части поля и по условию (ну там *раз*, >16, <=10)


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
Predeclared
Дата: 18.12.2015 18:58:49
Joss
... А что надо взять...

Можно "взять" правый клик по полю, и отобразить штатное меню целиком, типа:
Private Sub ИмяКонтрола_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then CommandBars("Form Datasheet Cell").ShowPopup
End Sub


зы: 2007 рантайм с mdb-шкой.
Заставить показать штатное меню как-то проще "с разбегу" не получилось.
Joss
Дата: 21.12.2015 22:32:49
Спасибо. То что надо. Переделал формы, всё работает. Конфигурация аналогичная.
megainarmy
Дата: 26.12.2015 13:33:34
Огромное спасибо Predeclared !!!
Настроил на элементы формы, те, что нужно сортировать/фильтровать и все гуд работает!!! А то уже башку сломал с этим рантаймом!


З.ы.:
Только я не особо в программировании разбираюсь, поэтому не сразу доперло что такое ИМЯКОНТРОЛА, для тех кто не знает - это имя того элемента формы, которое Вы хотите отфильтровать типа Поле1, Комбобокс2 и т.д.
AndrF
Дата: 17.02.2017 13:25:23
А есть ли решение позволяющее не переделывать все формы? Проект старый и форм дюже много...
Joss
Дата: 17.02.2017 13:54:07
AndrF
А есть ли решение позволяющее не переделывать все формы? Проект старый и форм дюже много...

Использовать полный Access. Можно программно или в параметрах базы закрыть доступ к полному меню и оставить доступ к контекстному.
Но это если Вам неважна лицензионная чистота или есть лицензия.
Но если использование Runtime связано с отсутствием лицензии, то тут только переделка форм. Лично я другого способа не знаю.
Predeclared
Дата: 17.02.2017 14:26:03
Если все формы имеют бэк модуль и имеется самописный диспетчер форм, тогда можно.

В противном случае, чуть-чуть в описание формы залезть таки придется.
Нужны:
1. наличие бэк модуля
2. процедуры обработки Open и Close интерфейса Form
или, как минимум,
изменить значения OnOpen и OnClose, если там ничего нет.