Foxtable(狐表)用户栏目专家坐堂 → 怎么实现数据在新增前先进行有无记录判断,如果有 及更新 如果无就新增……


  共有4143人关注过本帖树形打印复制链接

主题:怎么实现数据在新增前先进行有无记录判断,如果有 及更新 如果无就新增……

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
怎么实现数据在新增前先进行有无记录判断,如果有 及更新 如果无就新增……  发帖心情 Post By:2023/1/4 12:20:00 [只看该作者]

怎么实现数据在新增前先进行有无记录判断,如果有 及更新   如果无就新增……

当前运行效果:红色部分代码如果取消注释   直接不新增数据,如果注释掉,会一直新增数据

想实现:当干部年度考核表中 不存在姓名时,直接新增,如果存在姓名时,直接更新对应的数据

 

当前代码如下:【烦请老师们指导下,在能够实现上述预期功能的前提下,并看看这个代码如何简化一些】

Dim cmd As New SQ L Command
cmd.Connect ion Name = "主数据源"
Dim dt,dt1,dt2,dt3 As DataTable
cmd.CommandText = "SEL ECT * From {干部台账}"
dt = cmd.ExecuteReader()
cmd.CommandText = "SEL ECT * From {干部年度考核}"
dt1 = cmd.ExecuteReader(True)
cmd.CommandText = "SEL ECT * From {干部平时考核登记表}"
dt2 = cmd.ExecuteReader()
cmd.CommandText = "SEL ECT * From {干部培训台账}"
dt3 = cmd.ExecuteReader()
Dim Products As List(Of String)
Products = dt.GetValues("考核类型","考核类型<>''")
For Each Product As String In Products
    Output.Show(Product)
    Dim Products1 As List(Of String())
    Products1 = dt.GetValues("姓名|职务|职级|性别|出生年月|入党时间|任现职时间|从事或分管工作","考核类型='"& Product &"' and 职级 like '%员%'")
    For Each Product1 As String() In Products1
        Output.Show(Product1(0)&Product1(1)&Product1(2))
        Dim dr  As  DataRow
        dr=dt.SQLFind("姓名='"& Product1(0)&"'")
        output.show(dr("姓名"))
        If  dr IsNot Nothing  Then
        'Else

            dr =dt1.AddNew
            dr("年度")="2022"
            dr("guid")=System.Guid.NewGuid().ToString()
            dr("姓名")=Product1(0)
            dr("单位及职务")=Product1(1)
            dr("职级")=Product1(2)
            dr("性别")=Product1(3)
            dr("出生年月")=Product1(4)
            If Product1(5)<> "" Then
                dr("政治面貌")="中共党员"
            End If
            dr("任现职时间")=Product1(6)
            dr("从事或分管工作")=Product1(7)
            Dim Products3 As List(Of String())
            Products3 = dt1.GetValues("姓名|年度","姓名='"& Product1(0) &"' and 年度<>'' ")
            For Each Product3 As String() In Products3
                'Output.Show(Product3(0) & Product3(1) )
                Dim Products2 As List(Of String())
                Products2 = dt2.GetValues("姓名|年份|季度|考核结果","姓名='"& Product3(0) &"' and 年份='"& Product3(1) &"' ")
                For Each Product2 As String() In Products2
                    dr("平时考核结果") &=Product2(1) & "年" & Product2(2) & "季度考核结果为" & Product2(3) & ";"
                    'Output.Show(dr("平时考核结果"))
                Next
                Dim Products4 As List(Of String())
                Products4 = dt3.GetValues("姓名|培训开始日期|培训结束日期|培训主办单位|培训内容","姓名='"& Product3(0) &"' and 年份='"& Product3(1) &"' ")
                For Each Product4 As String() In Products4
                    dr("参加脱产培训情况") &=Product4(1) & "至" & Product4(2) & "参加由" & Product4(3) & "举办的" & Product4(4) & ";"
                    'Output.Show(dr("参加脱产培训情况"))
                Next
            Next
            dr.save
        End If
    Next
Next


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/4 13:31:00 [只看该作者]

直接使用SQL取不存在姓名的数据,比如

SELECT a.* From {干部台账} as a where not exists(select 姓名 from  {干部年度考核} as b where a.考核类型=b.考核类型 and a.姓名=b.姓名 and 职级 like '%员%'
[此贴子已经被作者于2023/1/4 15:23:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)直接使用SQL取不存在姓名的数据,比如...  发帖心情 Post By:2023/1/4 14:50:00 [只看该作者]

这个操作不熟练呢 

对于楼上的代码  怎么先实现预定功能呢?


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/4 14:53:00 [只看该作者]

不熟练就学。不使用sql的话,代码没有什么优化的余地了

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)不熟练就学。不使用sql的话,代码没有...  发帖心情 Post By:2023/1/4 15:17:00 [只看该作者]

好的 谢谢老师   我学习一下   然后不明白的地方再请教老师

[此贴子已经被作者于2023/1/4 15:20:02编辑过]

 回到顶部