如何在UniQuery中将当前日期从一个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()
那样更可靠的东西作为第二段中的参数传递结果吗?
答案 0 :(得分: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,那么它将完全按照需要工作。
答案 1 :(得分:1)
您还可以创建一个他今天的日期
的Vitrual Dictionary项目ED DICT PERSON TODAYSDATE
I
@DATE
D2/
TODAY'S DATE
10L
S
然后你的select语句变为:
使用PER.CHANGE.DATE EQ TODAYSDATE选择PERSON
这肯定会比查看存储日期慢,因为它是根据查询的每个记录而不是存储来计算的。如果PERSONS是一个大文件,这可能不是一个好主意。