1 .建父子表看右边页面,新建属性完成即可打开自动生成的子表,编译一下,这样,子表自动生成.这就是生成的子表,及存储结构特别注意{%%PARENT}("TPChild")这要说的是:IdLocation 和IndexLocation可以做修改IdLocation 修改为{%%PARENT}("TPChild")IndexLocation 修改为{%%PARENT}("TPChild")这样,插入数据可以看一下效果存储结构,跟上一次讲的一样IndexLocation,先按照这种方式建吧^DHCMed.Testi("Person","TPChild")IndexLocation{%%PARENT}("TPChild")这种方式有点问题所有持久类,编译后,下边都可以看到对应 table这是sql 查询效果TPSParref 记录父表ID注意子表数据插入看下边的列表TPSParref 指向父表,注意,如果父表没有ID 为1 的记录,子表的数据是插入不进入的.即,子表是父表的下一级数据对照 Global 看一下.1:^DHCMed.Test("Person")=3对应父表的IdLocation2:^DHCMed.Test("Person",1)=$lb("","10","小李")对应父表的主 Global对应 DataLocation 和 DataNotes$lb("","10","小李")这就是CacheStorage 的存储结果SQLStorage 存储结构为AA^BB^CC形式3:^DHCMed.Test("Person",1,"TPChild")=1对应子表的idlocation4:^DHCMed.Test("Person",1,"TPChild",1)=$lb("","AAAA","BBBB")对应子表的DataLocation 和DataNotes{%%PARENT}("TPChild")与^DHCMed.Test("Person",1,"TPChild",1)对照看下.{%%PARENT}即表示^DHCMed.Test("Person",*)这就是父子表的索引,也放在一起了.保持一个原则,父子表的Global 最好用同一个 Global13:^DHCMed.Testi("Person","TPChild","IndexTPSCode","AAAA",1,1)=""^DHCMed.Testi("Person","TPChild","IndexTPSCode","AAAA",父表ID,子表ChildSub)=""^DHCMed.Testi("Person","TPChild","IndexTPSCode","AAAA",TPSParref,childsub)=""对于子表来讲,childsub 是自动产生的,不是插入的数据.对于主表来讲,ID 是自动产生的,不是插入的数据.子表ID=TPSParref_"||"_childsub从这里也能看出来这种见表方式,就是为了跟原来Termianl 下建的表保持统一定义了个属性对应的SqL 中的顺序及字段名称BDActive 是定义了枚举类型(Y/N)定义属性是,还定义了属性的附加属性. 非空,长度等,SqlRowIdName=BD_RowId,SqlTableName=DHC_MRC_BaseDictionary]定义了RowID 在 SQL 中名称,SQL 中表名称.再说下Terminal 下建的表,基本上 dhc-app 下都有对应的类如Pa_admUser.PAAdm打开类看一下.可以注意一下 Storage 的 Type ...