Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Общие вопросы Ирбис64 :  ИРБИС Irbis
 
&unifor('D
Пользователь: Денисова Лариса (IP-адрес скрыт)
Дата: 03, February, 2016 14:09

Возникла необходимость сравнения записей двух баз. Хотели использовать констукцию:

if &unifor('DINFRA,','/NN='&unifor('G1#',v951^I)'/','&unifor('G1#',v951^I)')<>'' then.....

Не сработала, в отличие от следующей:

if &unifor('DINFRA,','/NN='&unifor('G1#',v951^I)'/','v951^I*29')<>'' then.....

В чем может быть ошибка в первом случае или такая конструкция не допустима?

Re: &unifor('D
Пользователь: Куделя (IP-адрес скрыт)
Дата: 03, February, 2016 14:52

из чистого любопытства: а почему 29 символов? А если 33 поставить, что будет?

Иркутская ОГУНБ
ИРБИС64.21Турбо
WebИРБИС-PHP

Re: &unifor('D
Пользователь: Денисова Лариса (IP-адрес скрыт)
Дата: 03, February, 2016 15:05

29 символов конкретно для этой базы. Смысл в том, что использование в этой конструкции поля в любом виде работает, а не работает использование юнифора.

Re: &unifor('D
Пользователь: ochagova (IP-адрес скрыт)
Дата: 03, February, 2016 15:05

Во втором случае строка
'DINFRA,','/NN='&unifor('G1#',v951^I)'/','v951^I*29'
при форматировании дает
DINFRA,/NN=/v951^I*29
из этой строки правильно извлекается формат отображения

В первом случае ваша строка
'DINFRA,','/NN='&unifor('G1#',v951^I)'/','&unifor('G1#',v951^I)'
при форматировании дает
DINFRA,/NN=/&unifor(
,v951^I)

формат для отображения извлекается непонятно какой

Т.е. в литеральной конструкции 'NNNNNNN' (у вас это '&unifor('G1#',v951^I)' ) не должно быть апострофов

Re: &unifor('D
Пользователь: Денисова Лариса (IP-адрес скрыт)
Дата: 04, February, 2016 08:57

Спасибо за участие. Понятно было, что путаница с литералами. Разобрались. Работает правильно конструкция:

if &unifor('DINFRA,','/NN='&unifor('G1#',v951^I)'/',' &unifor("G1#",v951^I)')<>'' then...

Re: &unifor('D
Пользователь: ochagova (IP-адрес скрыт)
Дата: 04, February, 2016 09:33

Не поняла. В записи
..."G1#",v951^I....
вы сделали условную константу ("G1#"), но не привязали ее к полю, тем, что отделили ее от поля запятой. Условная константа работает, если она непосредственно примыкает к полю.

Re: &unifor('D
Пользователь: Денисова Лариса (IP-адрес скрыт)
Дата: 04, February, 2016 11:29

Людмила Николаевна, еще раз все проверили. Конструкция работает как при наличии запятой, так и при ее отсутствии. Результат глобальной корректировки, где используется данная строчка в обоих случаях один и тот же.
ИРБИС64-2013.

Re: &unifor('D
Пользователь: ochagova (IP-адрес скрыт)
Дата: 04, February, 2016 13:00

Может потому, что в поле 951^I нет символа # и просто берется поле v951^I



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