Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтр мышкой по области выделения в ленточной форме / 14 сообщений из 14, страница 1 из 1
31.03.2015, 11:29
    #38922113
LightN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
Добрый день!
Появилась вот такая задача (от бухгалтерии):
есть ленточная форма, в ней виден приход с датами. Нужно мышкой выделить по области выделения формы (тот треугольник, который смотрит направо) с 1-ой по 3-ю запись и автоматом поставить только на эти 3 записи фильтр. Если фокус ушел с области выделения или мышкой кликнули только на 1-у запись, то фильтр снимается. Это нужно для быстрой сверки дат и итоговых сумм: 1-я запись - сумма, 1+2 - сумма, 1+2+3 -сумма и т.д.
М.б. кто-то решал подобную задачу?
...
Рейтинг: 0 / 0
31.03.2015, 11:54
    #38922165
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
LightNДобрый день!
Появилась вот такая задача (от бухгалтерии):
есть ленточная форма, в ней виден приход с датами. Нужно мышкой выделить по области выделения формы (тот треугольник, который смотрит направо) с 1-ой по 3-ю запись и автоматом поставить только на эти 3 записи фильтр. Если фокус ушел с области выделения или мышкой кликнули только на 1-у запись, то фильтр снимается. Это нужно для быстрой сверки дат и итоговых сумм: 1-я запись - сумма, 1+2 - сумма, 1+2+3 -сумма и т.д.
М.б. кто-то решал подобную задачу?

Легко!
смотри событие формы перемещение мыши
...
Рейтинг: 0 / 0
31.03.2015, 11:59
    #38922175
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
LightN,

Может это на мысль натолкнет
Тынц
http://www.sql.ru/forum/333928/mnozhestvennoe-vydelenie-zapisey-na-forme?hl=????????????? ????????? ?????
...
Рейтинг: 0 / 0
31.03.2015, 12:00
    #38922177
Фильтр мышкой по области выделения в ленточной форме
LightNДобрый день!
Появилась вот такая задача (от бухгалтерии):
есть ленточная форма, в ней виден приход с датами. Нужно мышкой выделить по области выделения формы (тот треугольник, который смотрит направо) с 1-ой по 3-ю запись и автоматом поставить только на эти 3 записи фильтр. Если фокус ушел с области выделения или мышкой кликнули только на 1-у запись, то фильтр снимается. Это нужно для быстрой сверки дат и итоговых сумм: 1-я запись - сумма, 1+2 - сумма, 1+2+3 -сумма и т.д.
М.б. кто-то решал подобную задачу?например, можно на Form_MouseUp, собрать ID'ы выделенных записей (selTop, SelHeight) и поставить Filter.
...
Рейтинг: 0 / 0
31.03.2015, 12:10
    #38922199
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
непоймучкаLightNДобрый день!
Появилась вот такая задача (от бухгалтерии):
есть ленточная форма, в ней виден приход с датами. Нужно мышкой выделить по области выделения формы (тот треугольник, который смотрит направо) с 1-ой по 3-ю запись и автоматом поставить только на эти 3 записи фильтр. Если фокус ушел с области выделения или мышкой кликнули только на 1-у запись, то фильтр снимается. Это нужно для быстрой сверки дат и итоговых сумм: 1-я запись - сумма, 1+2 - сумма, 1+2+3 -сумма и т.д.
М.б. кто-то решал подобную задачу?например, можно на Form_MouseUp, собрать ID'ы выделенных записей (selTop, SelHeight) и поставить Filter.

TC к стати этот вариант проще но сердито
...
Рейтинг: 0 / 0
31.03.2015, 17:22
    #38922952
LightN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
непоймучканапример, можно на Form_MouseUp, собрать ID'ы выделенных записей (selTop, SelHeight) и поставить Filter.
Спасибо! Всё отлично работает.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
 If Me.SelHeight < 2 Then
  If Me.FilterOn <> 0 Then
   Dim J As Integer
   J = Me.Stockout_ID
   Me.FilterOn = 0
   Me.Recordset.Findfirst "Paym_ID=" & J
  End If
  Exit Sub
 End If

 Dim I As Integer
 Dim FC As String
 Me.RecordsetClone.Findfirst "Paym_ID=" & Me.Paym_ID
 For I = 1 To Me.SelHeight
  FC = FC + str(Me.RecordsetClone.Paym_ID) + ","
  Me.RecordsetClone.MoveNext
 Next
 FC = "Paym_ID in (" & MID(FC, 1, Len(FC) - 1) & ")"
 Me.Filter = FC
 Me.FilterOn = True
End Sub
...
Рейтинг: 0 / 0
01.04.2015, 07:30
    #38923289
Фильтр мышкой по области выделения в ленточной форме
LightNнепоймучканапример, можно на Form_MouseUp, собрать ID'ы выделенных записей (selTop, SelHeight) и поставить Filter.
Спасибо! Всё отлично работает.
Код: sql
1.
2.
 Me.RecordsetClone.Findfirst "Paym_ID=" & Me.Paym_ID
 For I = 1 To Me.SelHeight

на здоровье, только надо помнить такой нюанс при выделении записей мышкой:
текущей записью после выделения блока является запись, с которой НАЧАЛИ выделение

поэтому с вашим кодом оно "отлично работает" только, если выделять записи сверху вниз -
в этом случае текущая запись (Me.Paym_ID) - это первая/верхняя выделенная запись,
и проход For i = 1 To Me.SelHeight: MoveNext, начиная с нее, совпадет с выделенными записями.

но если выделять записи снизу вверх,
то текущей записью (Me.Paym_ID) - окажется последняя/нижняя в блоке выделенных,
и проход For i = 1 To Me.SelHeight: MoveNext, начиная с нее, пойдет мимо и соберет в критерий не те ключи.

и в итоге, в лучшем случае, ваш код может выдать ошибку (если MoveNext уведет за EOF),
а в худшем случае отфильтруются совсем не те записи, что выделяли, и если оператор
не обратит на это внимания, а просто зафиксирует какую-то итоговую сумму по этим записям,
то это может стать причиной дальнейших заблуждений.

если что, вот такой вариант корректно отработает в обоих случаях, попробуйте:
Код: vbnet
1.
2.
3.
4.
5.
'FindFirst не нужен
For i = 1 To Me.SelHeight
    Me.RecordsetClone.AbsolutePosition = Me.SelTop + i - 2
    FC = FC & Me.RecordsetClone.Paym_ID & ","
Next i
...
Рейтинг: 0 / 0
02.04.2015, 14:04
    #38925066
LightN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
непоймучка
Код: vbnet
1.
2.
3.
4.
5.
'FindFirst не нужен
For i = 1 To Me.SelHeight
    Me.RecordsetClone.AbsolutePosition = Me.SelTop + i - 2
    FC = FC & Me.RecordsetClone.Paym_ID & ","
Next i

Спасибо+1!
Точно! Так работает даже снизу ...
...
Рейтинг: 0 / 0
04.02.2016, 16:07
    #39163120
SerRock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
LightN,

я вот чет убился - не получается ... выделил блок записей, нажал на кнопку - обработать - в коде SelTop показывает правильно, =8, а SelHeigh всегда =0 ... чет не догоняю как быть ...
...
Рейтинг: 0 / 0
04.02.2016, 16:29
    #39163156
Фильтр мышкой по области выделения в ленточной форме
SerRockLightN,

я вот чет убился - не получается ... выделил блок записей, нажал на кнопку - обработать - в коде SelTop показывает правильно, =8, а SelHeigh всегда =0 ... чет не догоняю как быть ...А эта "кнопка" где - в форме? если да, то при нажатии на нее у вас же текущий выбор записей сбрасывается, потому и SelHeigh (который дает вам число "выделенных") = 0, ибо их не стало.

Обратите внимание, какое событие использовалось в данной ветке - Form_MouseUp - как раз потому, что при этом событии текущий SelHeight не сбрасывается.
Если вас это событие почему-то не устраивает, как вариант, можно делать это по нажатию кнопки вашего тулбара/меню
...
Рейтинг: 0 / 0
05.02.2016, 07:55
    #39163471
SerRock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
непоймучка,

а как быть, если пользователь выделит блок в удержанной кнопкой shift ...
...
Рейтинг: 0 / 0
05.02.2016, 08:55
    #39163498
Фильтр мышкой по области выделения в ленточной форме
SerRockнепоймучка,

а как быть, если пользователь выделит блок в удержанной кнопкой shift ...я выше уже подсказывал -
можно по нажатию кнопки вашего тулбара/меню, например.

суть в том, чтобы не трогать мышкой никакие элементы самой ЭТОЙ формы, ибо это сразу сбросит селекцию.
и в отличие от кнопки в самой этой форме, нажатие кнопки тулбара НЕ сбрасывает текущие выбранные записи.

если не хотите использовать тулбар, можно аналогично использовать кнопку в ДРУГОЙ форме -
например "завесить" маленькую popup-форму с кнопками - при переходе в нее, ваша выборка
в исходной форме не сбросится.

как вариант, можно еще "горячие кнопки" использовать
...
Рейтинг: 0 / 0
05.02.2016, 09:10
    #39163509
SerRock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр мышкой по области выделения в ленточной форме
непоймучка,

ок, спасибо ... я понял ... в этом видимо есть некая недоработка акса ... жаль, что мелкософты задвинули проект ...
...
Рейтинг: 0 / 0
05.02.2016, 09:32
    #39163533
Фильтр мышкой по области выделения в ленточной форме
SerRock,

Ну если прям сильно хочется использовать кнопку в той же форме,
можно наверно запариться, и на все возможные способы выделения записей
(в том же Form_MouseUp, в обработке нажатия клавиш стрелок при удержании shift'а, и т.п.)
запоминать сделанный выбор - SelTop,SelHeight - в стат.переменные модуля, например,
а по нажатию кнопки работать уже с текущими значениями этих переменных.

Хотя, все это будет делаться уже над "де-факто" сброшенной выборкой,
так что визуально для юзера это может быть чуток некомфортно
(хотя, это смотря что при этом будет делаться, конечно)

Ну плюс, надо будет не забывать в какие-то моменты чистить эти переменные,
вобщем будет морока - тут уже вам решать, стоит ли овчинка такой выделки.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтр мышкой по области выделения в ленточной форме / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]