在071130日,我发了一篇《关于一个对象集合的求解》的文章。可能由于我没有表述清楚,至今没有人给我回复。前一段时间,我用C#实现了这一功能,但仍有一些不足之处,给大家拿出来做个靶子。欢迎大家批评指正!

我的需求是,有主附表的结构,主表里面包含单据日期、单据编号等信息,附表里包含与此主表相关的行项目,包含物料编号、数量等信息。我想这应该建立继承的类来实现,但我还不会用。我利用泛型,暂时是解决了这个问题。

我写了两个接口:IDocumentsIDocuments_Lines。也写了与之对应的DocumentsDocuments_Lines两个类。这两个类分别继承了前两个接口。IDocumentsDocuments中包含DocNumberDocDateLines三个属性和Add()Remove() 两个方法。IDocuments_LinesDocuments_Lines中包含ItemCodeQuantity两个属性和Add()GetLists()方法。

Documents类中的Lines属性的类型是IDocuments_Lines。为了访问Documents_Lines的集合,我不得在Documents_Lines中建立了一个公用的方法GetLists()。该方法返回一个List<>集合,然后在Documents类中的Add()方法,遍历这个集合,再把子表数据连同主表一起添加进去。

而在SBOSDK中,首先是在Documents_Lines里面,没有暴露类似于GetLists()之类的方法和属性。而且在Documents_Lines里会包含一个Count属性来记录当前的总条数,并能通过SetCurrentLine()方法来指定当前行。而且,在调用时也有区别:在SDK中调用如下:

 1实现主附表结构的数据存储Documents myd=myCompany.GetObject(Documents);
 2实现主附表结构的数据存储
 3实现主附表结构的数据存储Myd.DocNumber=1”;
 4实现主附表结构的数据存储
 5实现主附表结构的数据存储Myd.DocDate=CDate(“2008-3-7”);
 6实现主附表结构的数据存储
 7实现主附表结构的数据存储 
 8实现主附表结构的数据存储
 9实现主附表结构的数据存储//添加行1
10实现主附表结构的数据存储
11实现主附表结构的数据存储Myd.Lines.ItemCode=”a”;
12实现主附表结构的数据存储
13实现主附表结构的数据存储Myd.Lines.Quantity=1;
14实现主附表结构的数据存储
15实现主附表结构的数据存储 
16实现主附表结构的数据存储
17实现主附表结构的数据存储//添加行2
18实现主附表结构的数据存储
19实现主附表结构的数据存储Myd.Lines.Add();
20实现主附表结构的数据存储
21实现主附表结构的数据存储Myd.Lines.ItemCode=”b”;
22实现主附表结构的数据存储
23实现主附表结构的数据存储Myd.Lines.Quantity=2;
24实现主附表结构的数据存储
25实现主附表结构的数据存储 
26实现主附表结构的数据存储
27实现主附表结构的数据存储//添加主表
28实现主附表结构的数据存储
29实现主附表结构的数据存储Myd.Add()
30实现主附表结构的数据存储
31实现主附表结构的数据存储 
32实现主附表结构的数据存储
33实现主附表结构的数据存储//完成。
34实现主附表结构的数据存储

 

而对于我所做的类,调用方法如下:

 1实现主附表结构的数据存储Documents myd=new Documents();
 2实现主附表结构的数据存储
 3实现主附表结构的数据存储Myd.DocNumber=1”;
 4实现主附表结构的数据存储
 5实现主附表结构的数据存储Myd.DocDate=CDate(“2008-3-7”);
 6实现主附表结构的数据存储
 7实现主附表结构的数据存储 
 8实现主附表结构的数据存储
 9实现主附表结构的数据存储//添加行1
10实现主附表结构的数据存储
11实现主附表结构的数据存储Myd.Lines.ItemCode=”a”;
12实现主附表结构的数据存储
13实现主附表结构的数据存储Myd.Lines.Quantity=1;
14实现主附表结构的数据存储
15实现主附表结构的数据存储Myd.Lines.Add();
16实现主附表结构的数据存储
17实现主附表结构的数据存储 
18实现主附表结构的数据存储
19实现主附表结构的数据存储//添加行2
20实现主附表结构的数据存储
21实现主附表结构的数据存储//添加行2
22实现主附表结构的数据存储
23实现主附表结构的数据存储Myd.Lines.Add();
24实现主附表结构的数据存储
25实现主附表结构的数据存储Myd.Lines.ItemCode=”b”;
26实现主附表结构的数据存储
27实现主附表结构的数据存储Myd.Lines.Quantity=2;
28实现主附表结构的数据存储
29实现主附表结构的数据存储 
30实现主附表结构的数据存储
31实现主附表结构的数据存储//添加主表
32实现主附表结构的数据存储
33实现主附表结构的数据存储Myd.Add()
34实现主附表结构的数据存储

 

//完成。

这两个调用的方法的区别在于,在添加行时,SDK中每添加一行之前,先执行一次Lines.Add()方法(第一行不用),且最后一行之后,不再需要执行Lines.Add()方法;而我所做的添加行时,在每添加一行之后,必须执行一次Lines.Add()方法,才能把数据添入行集合。不知道为什么会有这样的差别呢?请高手指点,谢谢!

相关文章: