来个最简单的Job作为本主题的引子 static void DataDic_SetTmp(Args _args) { CustGroup custGroup; ; custGroup.setTmp(); custGroup.custGroup = "10"; custGroup.name = "Test customer 10"; custGroup.insert(); while select custGroup { info(strFmt("%1, %2", custGroup.custGroup, custGroup.name)); } } /**** 上面例子中,有一个.setTmp()的方法,没有debug进去,测试后猜测是执行insert()后数据没有真正写入到数据库中。不知这么做有什么好处呢!请耐心看以下分析 注意:当前表变量转化为临时表,之后所有操作都与数据库无关。 不错的一个功能,写sql的时候经常使用“#表名” 来实现同样的功能,而同样的功能,在VS、Delphi里面似乎没有。 物料档 --> 路径 --> 表身档的 “运行时间”其数据源为 “ProdRoute”,但“运行时间”的值却显示的是“DocuRouteOpr”档的“运行时间”的值! --************************************************ 同理,我们做以下测试(表A: YAM_TEST_2 表B: YAM_TEST) 一般在Form中会用到,比如在Form中要显示两个数据源的相关信息!可是数据源却选择数据源A,而数据本身却是来自数据源B中的值,很奇怪吧!(*^__^*) 嘻嘻…… 此时两个数据源之间的表并没有建立表关系,若要在数据源A中显示数据源B中的某个字段,我们可以将数据源A进行表实例化,并设为临时表对象作为当前的过滤数据源 以下为数据源A下的init()方法初始化过滤条件 */ /**** 表“YAM_TEST_2” 其数据源名义为 A 表“YAM_TEST” 其数据源命名为 B */ public void init() { Query query = new query(); QueryBuildDatasource qbs; ; super(); A.setTmp(); A.checkRecord(false); qbs = query.addDataSource(tableNum(YAM_TEST_2)); qbs.name(A_DS.name()); this.query(query); } /*** 在Executequery()方法中将数据源B的相关信息插入到临时表对象A中,并将A作为数据源显示在Form的Grid中 */ public void executeQuery() { YAM_TEST B; ; delete_from A; while select B where 关联条件 { A.Name = B.Name; A.age = B.age; A.doInsert(); } super(); }