1

如何在 UniQuery 中将当前日期从一个 PA 传递到另一个 PA?一位同事教我将日期由 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()第二段吗?

4

2 回答 2

1

您还可以创建一个虚拟词典项目,他今天的日期

ED DICT 人今天日期

I @DATE D2/ TODAY'S DATE 10L S

然后您的选择语句变为:

选择 PER.CHANGE.DATE EQ TODAYSDATE 的人

诚然,这将比查看存储的日期运行得更慢,因为它是根据查询的每条记录计算的,而不是存储的。如果 PERSONS 是一个大文件,这可能不是一个好主意。

于 2018-06-11T13:41:44.547 回答
1

您可能会得到“不要在段落中这样做”的答案,并且在某种程度上这是正确的 - 除了简单的命令列表之外的任何内容都可能变得复杂。

也就是说,以下内容对我有用:

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 选项。如果未指定 n,In 选项会提示输入文本,Sn 选项将 n 的值传递给被调用的段落。”

另请阅读上面的“始终使用内联提示进行提示”部分,以解释为什么需要 CLEARPROMPTS。没有它,如果您不传递参数,它会很乐意使用提供的最后一个参数。

[编辑:提供 BASIC 选项] 段落非常适合非常简单的事情,并且可能有一种方法可以解决问题。但这是一个让某些东西工作的单行基本程序:

EXECUTE "MY.PROCESS ":OCONV(DATE(),"D4/")

MY.PROCESS.TODAY 是一个段落是否有硬性要求?如果您将此单行程序编译并编目为 BP MY.PROCESS.TODAY,那么它将完全按照需要工作。

于 2018-04-04T00:07:39.287 回答