首页 / 浏览问题 / 组件GIS / 问题详情
LinkItem使用的问题
13EXP 2018年03月21日

如图所示:最后一行rset返回的记录数为0.

先说明一下:ly是一个面图层,其主键为SmID,我想查找出ly层中的要素,同时取出其关联表中的相应的关联记录。说明一下:主表1y中的记录数多于关联表中的要素,也就是说,主表中有些要素在关联表中找不到对应的记录。

foreignTableName对应的是一个属性表,该属性表主键也是SMID,但该表中有一个字段ZonalID和主记录集ly中的SmID 对应,所以我觉得附表的ZonalID应该是外键,根据官方文档:

所以我觉得是不是我的linkitem参数设置有问题,请大神指导

1个回答

您好,首先不知道您有没有仔细看我昨天给你的图说明,如果你的两个数据集在同一个数据源中,那么使用Joinitem,如果不在同一个数据源,使用Linkitem,但是Linkitem不支持UDB,PG,DB2数据源。

另外既然是外接表,要查询出结果,肯定需要设置返回的结果字段才行(QueryParameter.ResultFields)。下面附上我亲测有效代码(Joinitem):

                DatasetVector dataset1 = workspace.Datasources[0].Datasets["New_Point_1"] as DatasetVector;
                DatasetVector dataset2 = workspace.Datasources[0].Datasets["New_Point_2"] as DatasetVector;

                JoinItem joinitem = new JoinItem();
                String foreignTableName = dataset2.TableName;

                // 设置连接信息类的属性
                joinitem.ForeignTable = foreignTableName;
                joinitem.JoinFilter =dataset1.TableName+ ".id=" + foreignTableName + ".id";
                joinitem.JoinType = JoinType.LeftJoin;
                joinitem.Name = "Connect";

                // 设置连接信息集合类,将连接信息加入到连接信息集合中
                JoinItems joinitems = new JoinItems();
                joinitems.Add(joinitem);

                QueryParameter query = new QueryParameter();
                query.JoinItems = joinitems;
                string[] result=new string[2];
                string r1 = dataset1.Name + ".SmID";
                string r2 = dataset2.Name + ".KMP";
                result[0] = r1;
                result[1] = r2;
                query.AttributeFilter =dataset1.TableName+".SmID=2";
                query.ResultFields = result;
                Recordset re= dataset1.Query(query);

5,985EXP 2018年03月21日
谢谢,昨天电话技术支持说用于查询一般用linkitem,就没有细想也没仔细看不适用与udb数据
电话也是我接的,当时搞混了,因为以前有一个接口做关联标签专题图不起作用,然后我看了上传到社区的那个截图,才记起来怎么回事。
...