Blog信息 |
blog名称:注册会计师(注会)练习软件 日志总数:398 评论数量:116 留言数量:27 访问次数:3265583 建立时间:2005年6月6日 |

| |
[borland eco 技术]为了这段代码,费时2小时 软件技术
吕向阳 发表于 2006/5/21 22:50:02 |
[borland eco delphi c# iobjectlist oclservice oclpsservice ]
这是为了自己作一下备忘,毕竞花了两小时,总要有所体会。我的目的是为了测试一个goods类中的所有类对象是否在另一个类kcmx中出现,如没出现,则在kcmc类中增加一条记录,并将goods类还没加入的逐个加入。
oclresult := oclpsservice.execute('goods.allinstances'); list1 := iobjectlist(oclresult as Ielementcollection); CXRESULT:=FECOSPACE.OclService.Evaluate('kcmx.allInstances->SELECT(p|p.daterange.SJRANGE='''+'first'').GOODS'); //就是因为这个goods, 因为我们要查找的是goods类所有不能是全部的allinstances,先前之所以错误就是在这一点上。并且还是利用list2:=iobjectlist(ehkc.element)或list2:=ehkc.element.getascollection之类的语句。ehkc是一个expression对象,表达式为.allInstances->SELECT(p|p.daterange.SJRANGE='first'),它们的共同点都是返回整个对象列表,而不是对象中的goods类的列表. list2:= IOBJECTLIST(CXRESULT);
for i := 0 to List1.Count - 1 do begin cc :=GOODS(list1[i].AsObject); XX:=LIST2.IndexOf(CC.AsIObject); messagebox.Show(XX.ToString); //为了测试a if (XX < 0) then begin akcmx := kcmx.create(fecospace); akcmx.daterange := adaterange; akcmx.goods := GOODS(LIST1[I].AsObject); end; end; fecospace.UpdateDatabase; |
|
|