Сортировка через контекстное меню
Администратор
Поиск по критериям - лишь половина задачи. Результаты поиска надо отсортировать! Можно повесить сортировку на кнопку, но если полей много, а места мало?1. Не знаю как вы, а я выдаю результаты поиска, подменяя источник записей ListBox. Данный элемент мне нравится гораздо больше подчиненной формы. Почему? Считайте это прихотью программиста.))
2. Добавим в модуль (не формы, а просто модуль).
Public sqlOldList As String
Public Function SortBy(fld As String, Lst As ListBox) Dim sql As String
sqlOldList = Trim(sqlOldList)
If Right(sqlOldList, 1) = ";" Then sql = Left(sqlOldList, Len(sqlOldList) - 1) & " ORDER BY " & fld Else sql = sqlOldList & " ORDER BY " & fld End If Lst.RowSource = sql 'MsgBox sql End Function
Переменная нам нужна для хранения источника данных.
3. На кнопке "Найти" у нас поиск. В конце, как передали в элемент измененный источник, в sqlOldList передаем его же, но без сортировки!!!
4. На загрузку формы вешаем передачу текущего источника в sqlOldList.
ГЛАВНОЕ, чтобы в исходном источнике (на момент загрузки) не было сортировки вообще! Т.е. в первый момент в списке видны неотсортированные данные.
5. Добавляем контекстное меню, которое впоследствии повесим на список. В элементах этого меню в качестве функции пишем что-то вроде: =SortBy("Table.[Field] DESC", Forms!MyForm!MyListBox)
6. Наслаждаемся результатом.
Поиск по критериям - лишь половина задачи. Результаты поиска надо отсортировать! Можно повесить сортировку на кнопку, но если полей много, а места мало?1. Не знаю как вы, а я выдаю результаты поиска, подменяя источник записей ListBox. Данный элемент мне нравится гораздо больше подчиненной формы. Почему? Считайте это прихотью программиста.))
2. Добавим в модуль (не формы, а просто модуль).
Public sqlOldList As String
Public Function SortBy(fld As String, Lst As ListBox) Dim sql As String
sqlOldList = Trim(sqlOldList)
If Right(sqlOldList, 1) = ";" Then sql = Left(sqlOldList, Len(sqlOldList) - 1) & " ORDER BY " & fld Else sql = sqlOldList & " ORDER BY " & fld End If Lst.RowSource = sql 'MsgBox sql End Function
Переменная нам нужна для хранения источника данных.
3. На кнопке "Найти" у нас поиск. В конце, как передали в элемент измененный источник, в sqlOldList передаем его же, но без сортировки!!!
4. На загрузку формы вешаем передачу текущего источника в sqlOldList.
ГЛАВНОЕ, чтобы в исходном источнике (на момент загрузки) не было сортировки вообще! Т.е. в первый момент в списке видны неотсортированные данные.
5. Добавляем контекстное меню, которое впоследствии повесим на список. В элементах этого меню в качестве функции пишем что-то вроде: =SortBy("Table.[Field] DESC", Forms!MyForm!MyListBox)
6. Наслаждаемся результатом.
|