Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Помогите составить поисковый запрос
Пользователь: Katerina (IP-адрес скрыт)
Дата: 02, April, 2015 10:46

not (val(V52^*)<=20150101 and v52^c:'аб')

Хочу исключить из результатов поиска записи в которых значение поля 52(дата перерегистрации) меньше, чем 20150101 и одновременно в том же повторении значение подполя ^c -'аб'.
Моя конструкция не работает.
Помогите пожалуйста, если не трудно.

Re: Помогите составить поисковый запрос
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 02, April, 2015 11:28

Katerina написал(а):
-------------------------------------------------------
> not (val(V52^*)<=20150101 and v52^c:'аб')
>
> Хочу исключить из результатов поиска записи в
> которых значение поля 52(дата перерегистрации)
> меньше, чем 20150101 и одновременно в том же
> повторении значение подполя ^c -'аб'.
> Моя конструкция не работает.
> Помогите пожалуйста, если не трудно.


rsum((if p(v52)then if v52.1<>'^'and v52.8>'20150101' and v52^c:'аб'then '1;'else'0;'fi fi ))>0

Re: Помогите составить поисковый запрос
Пользователь: pea (IP-адрес скрыт)
Дата: 29, January, 2016 11:42

В некоторых формах по книговыдаче используется не только база читателей RDR, но и КНИГИ.
Например, сводки по характеру изданий, по разделам знаний.
этот формат из одной из форм:
(if p(v40) then if (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) then &uf('D',v40^g,|,!I=|v40^a|!,if p(v900^c) then v900^c.1 else '*' fi,/|), fi fi),

На сегодняшний день, есть шифры в RDR (в поле v40^а), которых уже нет в БД Книги (поле 903 изменилось после утери-списания или после корректировки шифров каталогизаторами) .
Как найти все шифры из RDR, которых нет в БД КНИГИ?



Редактировано 1 раз. Последний раз 29.01.2016 11:43 пользователем pea.

Re: Помогите составить поисковый запрос
Пользователь: СВК (IP-адрес скрыт)
Дата: 11, December, 2019 12:25

Здравствуйте! Нужно отобрать записи книг по году издания за 10 лет, и чтобы количество экземпляров было не менее 5. В АРМ Комплектаторе. Как выполнить такой поиск, помогите пожалуйста!



Редактировано 1 раз. Последний раз 11.12.2019 12:27 пользователем СВК.

Re: Помогите составить поисковый запрос
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 11, December, 2019 15:36

СВК написал(а):
-------------------------------------------------------
> Здравствуйте! Нужно отобрать записи книг по году
> издания за 10 лет, и чтобы количество экземпляров
> было не менее 5. В АРМ Комплектаторе. Как
> выполнить такой поиск, помогите пожалуйста!

Наверное, подразумевается поиск не в АРМ Комплектатор, а поиск в БД CMPL?
В АРМ Каталогизатор установите БД CMPL, Последовательный поиск. Устанавливаете параметры поиска: поле выходные данные, подполе Год издания и т.д. как на рис.1 в DOC.dox, выполняете поиск. Затем повторяете последовательный поиск еще раз, установив предыдущий поиск в окно Уточняемый запрос и прописав в строке Свободный поиск выражение c
рис.2 в DOC.dox. Обратите внимание на закрытые/открытые границы. Граница диапазона, не участвующая в сравнении, называется открытой.

Вложения: Doc.docx (594.2KB)  
Re: Помогите составить поисковый запрос
Пользователь: СВК (IP-адрес скрыт)
Дата: 17, December, 2019 10:54

Сорокина Лариса написал(а):
-------------------------------------------------------
>
> Наверное, подразумевается поиск не в АРМ
> Комплектатор, а поиск в БД CMPL?
> В АРМ Каталогизатор установите БД CMPL,
> Последовательный поиск. Устанавливаете параметры
> поиска: поле выходные данные, подполе Год издания
> и т.д. как на рис.1 в DOC.dox, выполняете поиск.
> Затем повторяете последовательный поиск еще раз,
> установив предыдущий поиск в окно Уточняемый
> запрос и прописав в строке Свободный поиск
> выражение c
> рис.2 в DOC.dox. Обратите внимание на
> закрытые/открытые границы. Граница диапазона, не
> участвующая в сравнении, называется открытой.


Спасибо огромное за подробный ответ! Все получилось!

Re: Помогите составить поисковый запрос
Пользователь: Grievous (IP-адрес скрыт)
Дата: 14, January, 2020 09:13

Есть задача вывести списки читателей по отделам перерегистрировавшихся в 2019 году.

Сначала последовательным поиском отбираю все перерегистрации за 2019 год
val(V52^*)>=20190101 and val(V52^*)<=20191231

Потом хочу оставить только записи с конкретным отделом в 56 поле
(V56='ОЛИЯ') and (val(V52^*)>=20190101 and val(V52^*)<=20191231)

Найдено документов: 0
http://irbis.elnit.org/file.php?10,file=19715

Почему так?

Находится только отдел ОРС, который у нас всегда в первом повторении 56 поля. Если название в других повторениях. то уточняющий поиск не срабатывает.

Выхожу из положения поиском по условию «Содержит»
(V56 : 'ОЛИЯ') and (val(V52^*)>=20190101 and val(V52^*)<=20191231)
Но там проблема в том, что попадаются отделы, название которых есть внутри названий других отделов и «найдёт» лишнее.

--
Сергей Кузнецов



Редактировано 2 раз. Последний раз 14.01.2020 09:20 пользователем Grievous.

Вложения: notfound.png (23.6KB)  
Re: Помогите составить поисковый запрос
Пользователь: Gena (IP-адрес скрыт)
Дата: 14, January, 2020 09:20

Эта конструкция нормально сработает в том случае, если у вас по одному повторению поля 56 и 52. Если у вас в записи могут встречаться более одного повторения поля (например, два разрешенных места выдачи, или человек уже дважды перерегистрировался, то работать это не будет)

Уточняющий вопрос, у вас при перерегистрация читателей просиходит по штатной технологии?
1. В АРМе Книговыдача в настройках выставлен код места выдачи
2. Читатель приходит в отдел, а за кафедрой выдачи в АРМе Книговыдача кликают по кнопке перерегистрации?

Если так, то в 52 поле кроме даты будет еще указано место, где была выполнена перерегистрация, и тогда все данные о месте и дате нужно снимать по одному полю - 52


По формулировке вашего запроса создается ощущение, что вы выполняете перерегистрацию и получение статистики не по штатной технологии

Re: Помогите составить поисковый запрос
Пользователь: Grievous (IP-адрес скрыт)
Дата: 14, January, 2020 09:27

Я не знаю как перерегистрировать правильно. Где описана эта технология?

Наши библиотекари делают это в одном месте - на стойке регистрации читателей. В 52 поле записывают только дату, без уточнения отдела.
В 56 поле через повторения отмечают разрешенные отделы.

--
Сергей Кузнецов

Re: Помогите составить поисковый запрос
Пользователь: Grievous (IP-адрес скрыт)
Дата: 14, January, 2020 09:35

Gena написал(а):
-------------------------------------------------------
> Эта конструкция нормально сработает в том случае,
> если у вас по одному повторению поля 56 и 52.

Вот тут не понятно. Почему именно конструкция не работает? Или это недокументированная багофича?

Почему наличие повторений не мешает поиску по условию «Содержит»?
Сбоит же только вкладка «Больше/Меньше»

--
Сергей Кузнецов

Re: Помогите составить поисковый запрос
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 14, January, 2020 10:49

Grievous написал(а):
-------------------------------------------------------
> Есть задача вывести списки читателей по отделам
> перерегистрировавшихся в 2019 году.
>
> Сначала последовательным поиском отбираю все
> перерегистрации за 2019 год
> val(V52^*)>=20190101 and val(V52^*)<=20191231
>
> Потом хочу оставить только записи с конкретным
> отделом в 56 поле
> (V56='ОЛИЯ') and (val(V52^*)>=20190101 and
> val(V52^*)<=20191231)
>
> Найдено документов: 0
> [irbis.elnit.org]
>
> Почему так?
>
> Находится только отдел ОРС, который у нас всегда в
> первом повторении 56 поля. Если название в других
> повторениях. то уточняющий поиск не срабатывает.
>
> Выхожу из положения поиском по условию «Содержит»
> (V56 : 'ОЛИЯ') and (val(V52^*)>=20190101 and
> val(V52^*)<=20191231)
> Но там проблема в том, что попадаются отделы,
> название которых есть внутри названий других
> отделов и «найдёт» лишнее.

Если Вы хотите отобрать документы по своим условиям, то напишите запрос:
rsum((if p(v56)then if V56 = 'ОЛИЯ'then'1;'else'0;'fi fi))>0 and rsum((if p(v52)then if val(V52^*)>=20190101 and val(V52^*)<=20191231 then'1;' else '0;'fi fi))>0
в окне свободного поиска. А с составлением запроса через указанный интерфейс, извините, помочь не могу.



Редактировано 1 раз. Последний раз 14.01.2020 11:18 пользователем Сорокина Лариса.

Re: Помогите составить поисковый запрос
Пользователь: Gena (IP-адрес скрыт)
Дата: 14, January, 2020 11:01

Если у вас ОДНО повторение поля 52, то вот этот запрос:

(V56 : 'ОЛИЯ') and (val(V52^*)>=20190101 and val(V52^*)<=20191231)

эквивалентен следующему:

(V56 : 'ОЛИЯ') and (val(ГГГГМММДД)>=20190101 and val(ГГГГМММДД)<=20191231)

А вот если полей 52 несколько, то вот этот запрос будет эквивалентен следующему:

(V56 : 'ОЛИЯ') and (val(ГГГГМММДДГГГГМММДДГГГГМММДД)>=20190101 and val(ГГГГМММДДГГГГМММДДГГГГМММДД)<=20191231)

Простой пример, который можно проверить в редакторе форматов. В записи 5 повторений поля 1 с данными от 1 до 5 (1, 2, 3, 4, 5) и два запроса

(val(V1)>=1 and val(V1)<=5) - ничего не вернет

(val(V1)>=1 and val(V1)<=12345) - запись будет найдена

Если вам нужно обрабатывать несколько разных повторений и сравнивать их с чем-то, то можно использовать конструкцию со скобками и перебором значений.
Например, вот такой вариант даст результат, если ЛЮБОЕ из полей 65 содержит "ОЛИЯ", и хотя бы одно из повторений поля 52 соответствует нужному интервалу дат:

(V56 : 'ОЛИЯ') and rsum((if p(v52) then if val(V52^*)>=20190101 and val(V52^*)<=20191231 then '1;' fi fi))>0



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