Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Поиск в RDR
Пользователь: roit (IP-адрес скрыт)
Дата: 12, August, 2015 12:15

Помогите пожалуйста составить поиск в БД RDR по полю 90^F (семестр), чтобы вычленить именно 1 семестр (т.е. чтобы в поиск не попадали 11 и 13).



Редактировано 1 раз. Последний раз 12.08.2015 12:19 пользователем roit.

Re: Поиск в RDR
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 12, August, 2015 13:30

Последовательный поиск -
см. вложение
ИЛИ
в строке записать v90^f='1'



Редактировано 1 раз. Последний раз 12.08.2015 13:41 пользователем Дунаевская.

Вложения: rdr_90F.jpg (89.8KB)  
Re: Поиск в RDR
Пользователь: roit (IP-адрес скрыт)
Дата: 12, August, 2015 14:25

Спасибо! Как всегда, самого очевидного и легкого пути я и не заметила :)

Re: Поиск в RDR
Пользователь: KrVs (IP-адрес скрыт)
Дата: 13, August, 2015 13:44

Если можно, в эту тему вопрос задам.
Подскажите пожалуйста такой вопрос. Имеются идентификаторы читателей, например с 0000 по 24523. И некоторые идентификаторы в этом сортированном списке пропущены, например идет 2234, 2235, потом 2238, 2239 и т.д.
Так вот, можно ли каким либо способом вычислить эти номера? Которых нет в списке, но из этого диапазона от 0000 до последнего, который сейчас (24523). Или например алгоритм какой-либо написать, запустив который он вычислит эти номера.



Редактировано 1 раз. Последний раз 13.08.2015 13:46 пользователем KrVs.

Re: Поиск в RDR
Пользователь: ochagova (IP-адрес скрыт)
Дата: 13, August, 2015 15:05

У меня такой вариант - предположим интересую номера от 1 до 600:

&uf('S0'),,
(if s(&uf('+7W1#',,&uf('S1A') ),&uf('Ag1#1'))<>'' then ,,,if val(&uf('Ag1#1'))<600 then if val(&uf('J,RI=',,&uf('Ag1#1')) )=0 then &uf('Ag1#1') fi fi fi/)

Re: Поиск в RDR
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 13, August, 2015 15:40

с 0000 по 24523
Можно и так
&uf('+7W1#00001'),
(if val(&uf('Ag1#1'))<24523 then
if &uf('J,RI='&uf('Ag1#1'))<>'' then else &uf('Ag1#1') fi,
&uf('+7W1#'f(val(&uf('Ag1#1'))+1,6,0)),
&uf('+7W1#'&uf('+9I! !?0?'&uf('Ag1#1'))) else break fi/)



Редактировано 1 раз. Последний раз 14.08.2015 06:43 пользователем Дунаевская.

Re: Поиск в RDR
Пользователь: KrVs (IP-адрес скрыт)
Дата: 14, August, 2015 08:47

Огромное спасибо.

Прошу прощения, так как недопонимаю, но как лучше это реализовать? Вывод этих идентификаторов.
Пытался прописать этот код в ФЛК. Создал файл ФЛК "!svob.pft", туда прописал этот код, а потом в редакторе РЛ добавил добавил к полю 30:

30
30: Идентификатор читателя
0
0
2
,RI=,
@!svob

Но все старое осталось.

Или это неправильно и нужно другим способом?

Re: Поиск в RDR
Пользователь: ochagova (IP-адрес скрыт)
Дата: 14, August, 2015 10:02

Не поняла, при чем здесь ФЛК. Если надо вывести это списком, то во-первых, проверьте эти форматы в генераторе форматов. Убедитесь, что они дают нужные результаты. Потом имя формата добавьте в список PFTw.MNU, в Каталогизаторе - Сервис - Печать - Списки - Плоский текст - Формат.

Re: Поиск в RDR
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 15, August, 2015 13:51

Если вы хотите, чтобы при вводе в поле 30 заносился первый из заданного интервала свободный номер, попробуйте формат !svob сделать таким, как показано ниже.
При выборе любого номера в словаре ,RI=, в документ будет записываться первый из свободных

&uf('+7W1#00001'),
(if val(&uf('Ag1#1'))<=24523 then
if val(&uf('J,RI='&uf('Ag1#1')))<>0 then
&uf('+7W1#'&uf('+9I! !?0?'f(val(&uf('Ag1#1'))+1,5,0))),
else &uf('Ag1#1') break fi fi/),

Чтобы не вызывать словарь ,RI=, который фактически не используется, можно поступить иначе:
1. Введите в RDR.FST строку для создания вспомогательного словаря
1111 0 if mfn=1 then 'FS=для ввода шифра - ВВОД' fi
2. В РЛ вызывайте словарь FS= вместо RI=



Редактировано 3 раз. Последний раз 17.08.2015 08:38 пользователем Дунаевская.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.