cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход

 
 
  ГлавнаяСправкаПоискВход  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Функция cat() (Прочитано 3 963 раз)
dol
Пользователь
**
Вне Форума


Я люблю этот Форум!

Сообщений: 39
Функция cat()
31.03.2010 :: 07:59:02
 
При работе с множественными полями или связанными базами в функциях тиа cat(), если связей несколько, то они соединяются без разделителля. Например: ИвановПетовСидоров. Может-быть, кто-нибудь знает как туда вставить разделители. Буду благодарна за ответ.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 055
Санкт-Петербург
Re: Функция cat()
Ответ #1 - 31.03.2010 :: 17:34:09
 
Можно использовать дополнительную функцию CONCAT, в которой первым значением будет поле связанной базы, а вторым разделитель. В приведённом ниже примере вопросительный знак!
Код:
CAT ( ЛЦ202_РТ, CONCAT(РТ01,"!" ))  

Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 055
Санкт-Петербург
Re: Функция cat()
Ответ #2 - 02.04.2010 :: 22:28:41
 
Приведённым выше вариантом все возможности использования функции cat() не исчерпываются. По сути это цикл по всем связанным базам, поэтому возможности, можно сказать, безграничны  Очень довольный.
Вот несколько примеров.
Предположим есть база Организация и связанная с ней база Лицо.
Формула, приведённая ниже, будет выводить Ф.И.О. (ЛЦ2,ЛЦ3,ЛЦ4) из связанных записей базы ЛЦ, каждую с новой строки.
Код:
@ret:=cat(РГ42_ЛЦ, ЛЦ2<<" "<<ЛЦ3<<" "<<ЛЦ4<<@endofline)
 


В функции можно использовать и вывод по условию. Например, выводить только лиц старше 1950 года рождения (ЛЦ5 - дата рождения).
Код:
@ret:=cat(РГ42_ЛЦ,
if (date(ЛЦ5)<date("00.00.1950"))
then (ЛЦ2<<" "<<ЛЦ3<<" "<<ЛЦ4<<@endofline)
)
 


Можно использовать и совсем замысловатые варианты.
Для варианта структуры банка РГ - Трудовая деятельность (ТД) - ЛЦ (Демо-банк Primer) нижеприведённая формула будет выводить для базы РГ Ф.И.О. (из ЛЦ), период работы (из ТД), при условии даты начала работы в 1997 году.
Код:
@ret:=CAT(РГ70_ТД,
IF(DATE(ТД1)>DATE("00.00.1997") & DATE(ТД1)<DATE("00.00.1998")) THEN
[
CAT(ТД10_ЛЦ,ЛЦ2<<" "<<ЛЦ3<<" "<<ЛЦ4<<" ")<<ТД1<<" - "<<ТД2<<@ENDOFLINE
]
)
 


Здесь мы видим возможность использования вложенных функций cat() одна-в-другую, при условии, что записи базы ТД связаны только с одной записью ЛЦ.
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать