以下是引用吹水佬在2020-9-13 22:19:25的发言:
可用EVALUATE()来解释运行动态运算表达式,能不用宏替换就不用。
USE b1 IN 0 ALIAS t1
USE b1 IN 0 ALIAS t2 AGAIN
SELECT t1
SET RELATION TO RECNO()+1 INTO "t2"
p1=ALLTRIM("t1.")+ALLTRIM('a')+ALLTRIM('1') && 按实际定义动态运算表达式
k1=ALLTRIM("t2.")+ALLTRIM('a')+ALLTRIM('1')
p2=ALLTRIM("t1.")+ALLTRIM('a')+ALLTRIM('2')
k2=ALLTRIM("t2.")+ALLTRIM('a')+ALLTRIM('2')
REPLACE ALL t2._1d WITH IIF(EVALUATE(k1+">"+p1), "_1D", "");
t2._1x WITH IIF(EVALUATE(k1+"<"+p1), "_1X", "");
t2._1t WITH IIF(EVALUATE(k1+"="+p1), "_1T", "");
t2._2d WITH IIF(EVALUATE(k2+">"+p2), "_2D", "");
t2._2x WITH IIF(EVALUATE(k2+"<"+p2), "_2X", "");
t2._2t WITH IIF(EVALUATE(k2+"="+p2), "_2T", "")
SET RELATION TO
SELECT * FROM t1
可用EVALUATE()来解释运行动态运算表达式,能不用宏替换就不用。
USE b1 IN 0 ALIAS t1
USE b1 IN 0 ALIAS t2 AGAIN
SELECT t1
SET RELATION TO RECNO()+1 INTO "t2"
p1=ALLTRIM("t1.")+ALLTRIM('a')+ALLTRIM('1') && 按实际定义动态运算表达式
k1=ALLTRIM("t2.")+ALLTRIM('a')+ALLTRIM('1')
p2=ALLTRIM("t1.")+ALLTRIM('a')+ALLTRIM('2')
k2=ALLTRIM("t2.")+ALLTRIM('a')+ALLTRIM('2')
REPLACE ALL t2._1d WITH IIF(EVALUATE(k1+">"+p1), "_1D", "");
t2._1x WITH IIF(EVALUATE(k1+"<"+p1), "_1X", "");
t2._1t WITH IIF(EVALUATE(k1+"="+p1), "_1T", "");
t2._2d WITH IIF(EVALUATE(k2+">"+p2), "_2D", "");
t2._2x WITH IIF(EVALUATE(k2+"<"+p2), "_2X", "");
t2._2t WITH IIF(EVALUATE(k2+"="+p2), "_2T", "")
SET RELATION TO
SELECT * FROM t1
漂亮,又学一招!