Как передать текущую дату из одного абзаца UniQuery в другой
Как я могу передать текущую дату от одного PA к другому в UniQuery? Коллега научил меня, как записать дату в файл cron и использовать встроенное приглашение для чтения <<F(HOLD,X.DATE.TODAY,1)>>
, но это добавляет дополнительные части, которые могут дать сбой, и я бы предпочел сделать это простым (иначе один раз файл не обновлялся, упс).
Мне в принципе нужно что-то подобное.
AE VOC MY.PROCESS.TODAY
001: PA
002: MY.PROCESS ?????
Для запуска моего второго PA с текущей датой.
AE VOC MY.PROCESS
001: PA
002: SELECT PERSON WITH PER.CHANGE.DATE EQ <<I2,Enter Date:>>
Это работает, MY.PROCESS <<F(HOLD,X.DATE.TODAY,1)>>
, но в любом случае я мог бы передать результаты, используя что-то более надежное, как DATE()
как аргумент во второй абзац?
2 ответа
Скорее всего, вы получите ответы "не делайте этого в абзаце", и в какой-то степени это правильно - все, кроме простого списка команд, может стать сложным.
Тем не менее, ниже работает для меня:
AE VOC MY.PROCESS
001: PA
002: CLEARPROMPTS
003: SELECT PERSON WITH PER.CHANGE.DATE EQ <<I2,Enter Date:>>
От: https://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew20/unidata/v8.2.1/unidata_userguide_v821.pdf
Я использую I
опция во время тестирования: "Опции I и S аналогичны опции C. Опция In запрашивает текст, если n не указано, а опция Sn передает значение n вызываемым абзацам".
Также прочитайте раздел чуть выше "Всегда запрашивать с помощью встроенного приглашения", чтобы объяснить, почему CLEARPROMPTS необходим. Без этого, если вы не передадите параметр, он с радостью будет использовать последний предоставленный параметр.
[Правка: для предоставления ОСНОВНОЙ опции] Абзацы отлично подходят для действительно простых вещей, и, вероятно, есть способ найти что-то еще. Но это базовая программа в одну строку, чтобы заставить что-то работать:
EXECUTE "MY.PROCESS ":OCONV(DATE(),"D4/")
Есть ли жесткое требование, чтобы MY.PROCESS.TODAY был абзацем? Если вы компилируете и каталогизируете эту однострочную программу как BP MY.PROCESS.TODAY, тогда она будет работать точно так, как вам нужно.
Вы также можете создать элемент словаря Vitrual, что его сегодняшняя дата
ED DICT ЧЕЛОВЕК СЕГОДНЯ
I
@DATE
D2/
TODAY'S DATE
10L
S
Тогда ваш выбор становится:
ВЫБЕРИТЕ ЧЕЛОВЕКА С PER.CHANGE.DATE EQ TODAYSDATE
По общему признанию, это будет выполняться медленнее, чем просмотр сохраненной даты, поскольку она рассчитывается по каждой запрашиваемой записи, а не сохраняется. Если PERSONS - большой файл, это может быть не очень хорошей идеей.