以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]List集合数据问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145456)

--  作者:bashanren
--  发布时间:2020/1/20 16:06:00
--  [求助]List集合数据问题
各位老师辛苦!
以下代码,是从“GMYX”表中“xjhzXM”(乡级河长姓名)列中集合不重复值写入表“C”中,现在问题来了,现在表“GMYX”中“XZMC”(乡镇名称)列中乡镇名称不一样,但“xjhzXM”(乡级河长姓名)可能一样,也就是有姓名重复(同一乡镇不会有重复姓名),如:A乡有“张三”,B乡也有“张三”,要求将不同乡镇的有重复的乡级河长姓名(两个张三)都要写入“表C”中,也就是要将“XZMC”(乡镇名称)列纳入集合参与比较,请大师帮忙修改下面的代码,谢谢!!

\'--------------集合规模以下乡级河长相关
Dim xms As New List(of String)
For Each dr1 As DataRow In DataTables("GMYX").DataRows
    If xms.Contains(dr1("xjhzXM")) = False Then
        xms .Add(dr1("xjhzXM"))
        Dim dr2 As DataRow = DataTables("C").AddNew()
        dr2("xzMC") = dr1("XZMC")
        dr2("xjhzXM") = dr1("XJHZXM")
        dr2("xjhzTEL") = dr1("XJHZDH")
        dr2("xjhzZW") = dr1("XJHZZW")
    End If
Next


--  作者:有点蓝
--  发布时间:2020/1/20 16:16:00
--  
http://www.foxtable.com/webhelp/topics/2747.htm,看实例六

Dim xms As New List(of String()) = DataTables("GMYX").GetValues("XZMC|xjhzXM")
For Each ns As String() In xms
    Dim dr1 As DataRow = DataTables("GMYX").find("XZMC=\'" & ns(0) & "\' and xjhzXM=\'" & ns(1) & "\'")
    Dim dr2 As DataRow = DataTables("C").AddNew()
    dr2("xzMC") = ns(0)
    dr2("xjhzXM") = ns(1)
    dr2("xjhzTEL") = dr1("XJHZDH")
    dr2("xjhzZW") = dr1("XJHZZW")
Next

--  作者:bashanren
--  发布时间:2020/1/20 22:11:00
--  
谢谢老师的指导,我将代码写入后,提示:编译错误,应为语句结束。于是我将 Dim xms As New List(of String()) = DataTables("GMYX").GetValues("XZMC|xjhzXM")
改为:如下代码。可运行时又提示:“未将对象引用设置到对象的实例。”,可我又找不出毛病,请老师再指导。

\'--------------集合规模以下乡级河长相关
Dim xms As New List(of String())
xms = DataTables("GMYX").GetValues("XZMC|xjhzXM")
For Each ns As String() In xms
    Dim dr1 As DataRow = DataTables("GMYX").find("XZMC=\'" & ns(0) & "\' and xjhzXM=\'" & ns(1) & "\'")
    Dim dr2 As DataRow = DataTables("XJHHZLSHZB").AddNew()
    dr2("xzMC") = ns(0)
    dr2("xjhzXM") = ns(1)
    dr2("xjhzTEL") = dr1("XJHZDH")
    dr2("xjhzZW") = dr1("XJHZZW")
Next



--  作者:有点蓝
--  发布时间:2020/1/20 22:33:00
--  
Dim xms As List(of String()) = DataTables("GMYX").GetValues("XZMC|xjhzXM")
--  作者:bashanren
--  发布时间:2020/1/20 22:53:00
--  
谢谢“蓝”老师,可以还是提示:未将对象引用设置到对象的实例。

是不是还是应该把那个判断加上啊?就是判断在"nms"集合中,没有找到相应的值才增加行,写入呀?
[此贴子已经被作者于2020/1/20 22:56:16编辑过]

--  作者:有点蓝
--  发布时间:2020/1/20 22:56:00
--  
写了这么久代码,一点判断能力都没有?

Dim xms As New List(of String()) = DataTables("GMYX").GetValues("XZMC|xjhzXM")
For Each ns As String() In xms
    Dim dr1 As DataRow = DataTables("GMYX").find("XZMC=\'" & ns(0) & "\' and xjhzXM=\'" & ns(1) & "\'")
if dr1 isnot nothing then
    Dim dr2 As DataRow = DataTables("C").AddNew()
    dr2("xzMC") = ns(0)
    dr2("xjhzXM") = ns(1)
    dr2("xjhzTEL") = dr1("XJHZDH")
    dr2("xjhzZW") = dr1("XJHZZW")
end if
Next

--  作者:bashanren
--  发布时间:2020/1/20 22:57:00
--  
谢谢老师指导!!