Необходима форма для распределения книговыдачи по категориям читателей. Для этих целей отлично подходит Form5 из стандартных форм. Имеющая следующий код.
Form5
&uf('&'),&uf('+7W40#',(v40/)),&uf('+7U40#',&uf('7RDR_ARH,!RI=',v30,'!,(v40/)')),(if p(g40) then if (g40^a<>'') and (g40^d>=&uf('Av1000^a#1')) and (g40^d<=&uf('Av1000^b#1')) then if g40^v<>'' then g40^v else '*' fi/ fi fi),
kv_STF.mnu
if p(v50) then &uf('Av50#1') else '*' fi
kat_STF.mnu
Форма работает, но у одного пользователя может быть несколько категорий одновременно. Для этого переделываем строку распределения книговыдачи по категориям на:
if p(v50) then (v50/) else '*' fi
Теперь форма разносит книговыдачу по нескольким категориям, но по одному экземпляру книговыдачи на одну категорию для одного человека (например пользователь имеет категорию служащие и пожилые, в таблице ставиться единица в графу служащие и пожилые), но по факту этому пользователю выдано не один экземпляр, а 2 (должно ставиться в категорию служащие 2 и категорию пожилые 2).
Делаем по другому:
if p(v50) then &uf('Av50#1') fi / if p(v50) then &uf('Av50#2') fi / if p(v50) then &uf('Av50#1') fi/
Или так
if p(v50) then &uf('Av50#1')/ &uf('Av50#2') / &uf('Av50#3') fi/
Получаем то же самое - на одного пользователя одна книговыдача, но зато для разных категорий.
Подскажите пожалуйста, в чем проблема, почему заносятся не все книговыдачи.
Но ведь поле 50 (категория) неповторяющееся. Как может быть 2 категории?
Если читателю выдана книга, она же не может 2 раза посчитаться в разных столбцах. Иначе суммарно не сойдётся.
Да вы абсолютно правы, но у нас один человек может занимать несколько категорий одновременно, например пенсионер и рабочий. Можно в эксель настроить суммарную книговыдачу как захочешь.
Например плюсовать только по возрастам, добавив возрастные категории if v21 <= '2004' and v21 >= '2001' then '*2' fi/ где '*2' - скрытая категория (переменная) от 15 до 18 лет.
А можно плюсовать по категориям которые не могут дублироваться (у нас это рабочие + служащие + школьники + студенты + прочие). У нас нужно обязательно выбрать одну из этих категорий.
Я настроил таким образом форму 12 для перерегистрации пользователь, но вот с книговыдачей не могу разобраться.
Редактировано 2 раз. Последний раз 09.12.2019 15:48 пользователем sovlib.
Chaser написал(а):
-------------------------------------------------------
> Для решения этой задачи Вам нужно размножать
> результат выполнения этой конструкции:
>
>
> if g40^v<>'' then g40^v else '*' fi
>
>
>
> на количество категорий пользователя.
Спасибо огромное! Ваш ответ мне очень помог (правда применил размножение результата на другой форме, выводил данные с 3-х разных баз данных). Думаю и эта форма будет работать!