02.12.2010, 20:18 | #1 |
Участник
|
Пишу простенькую пакетную обработку. Имеется список документов. Выделяем, нажимаем кнопку обработки и.. дальше в принципе неважно, потому как важен сам процесс выделения.
1. можно выделить мышкой несколько строк 2. можно отфильтровать по какому-нибудь полю и дальше ctrl+A. на кнопке обработке висит код: Код: CurrForm.SETSELECTIONFILTER(Rec); IF FIND('-') THEN IF MARK THEN REPEAT //обработка строк UNTIL NEXT=0; Исходя из хелпа по функции SETSELECTIONFILTER (Form) следует, что после выполнения строчки CurrForm.SETSELECTIONFILTER(Rec) в таблице должны остаться только помеченные записи. В комментариях к данной функции написано: Цитата:
Comments
If either all or no records are selected, marks will not be used. Тогда становится понятно, почему не обрабатывается второй способ, НО.. если при втором способе мы выделим все поля используя не Ctrl+A, а выделим все записи мышкой, то записи обрабатываются. Вообщем, я запуталась в 3-х соснах..Товарищи, хелп ми!!! |
|
02.12.2010, 20:56 | #2 |
Участник
|
Простите, а зачем эта конструкция?
... IF MARK THEN REPEAT //обработка строк UNTIL NEXT=0; И вообще зачем используюете переменную Rec, заведите новую переменную и напишите примерно так: CurrForm.SETSELECTIONFILTER(MyRec); IF MyRec.FINDSET THEN BEGIN REPEAT //обработка строк UNTIL MyRec.NEXT=0; END; |
|
02.12.2010, 21:38 | #3 |
Administrator
|
замечена такая фишка:
выделение всех записей через нажатие на квадратик (аналог Ctrl+a) не хватается setselectionfilter, а если выделить все записи мышкой (нажать на первой и спуститься), то хватается. проверь. тупизна, имхо, но с этим и живем |
|
02.12.2010, 22:04 | #4 |
Участник
|
Цитата:
если че версия клиента Build 30625 |
|
02.12.2010, 23:36 | #5 |
Administrator
|
вживую столкнулся на версии 3.70.B с клиентом 5.0 SP1
|
|
03.12.2010, 09:33 | #6 |
Участник
|
и у меня клиент 5.00 SP1, Build 30625
не думаю, что тут какую-то роль версия БД играет... |
|
03.12.2010, 15:26 | #7 |
Участник
|
вот у меня именно так и работает..
|
|