以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  添加行判断  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=110096)

--  作者:yangwenghd
--  发布时间:2017/11/26 13:29:00
--  添加行判断
可以这样添加行吗?在表B添加行,根据以下几个条件判断
1、表A的档案编号和表B的项目编号相同,表B的事件时间编号列(时间生成的整数)最后的行和状态列为已完成,在表B添加行,并复制表A的档案编号到表B的项目编号,如果状态列为学习中,则不添加行,选中学习中的行,
2、如果表A的档案编号没有找到与项目编号列相同的添加行
感谢 感谢 
比如点击按,先判断表B的项目编号有没与表A的档案编号相同的,如果没有就添加行,如果有再判断相同的行里面 时间编号列的最后一行的表B的状态列是已完成还是学习中,如果是已完成也添加行并复制表A的档案编号到表B的项目编号,如果是学习中就不添加行,只是选中状态列为学习中的行,感谢 感谢!!!!
[此贴子已经被作者于2017/11/26 13:32:14编辑过]

--  作者:有点甜
--  发布时间:2017/11/26 16:47:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/2490.htm

 

http://www.foxtable.com/webhelp/scr/0396.htm

 


--  作者:yangwenghd
--  发布时间:2017/11/27 11:30:00
--  
能在帮忙看看吗?看了很久也没看懂具体的意思,感谢,感谢 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:行判断添加.table


If e.DataCol.Name = "项目编号" Then
    Dim dr As DataRow
    dr = DataTables("表A").Find("档案编号= \'"  & e.DataRow("项目编号") & "\'" )
    Tables("表B").AddNew() \'新建行
    Tables("表B").position = Tables("表B").Rows.Count-1  \'跳到最后一行
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("项目编号")= dr("档案编号")
        Dim ndb As DataRow = DataTables("表B").AddNew
        ndb("时间编号") = Format(Date.Now, "yyyyMMddHHmmss") \'变动日期编号
    End If
End If  \'当表B的项目编号列未找到与表A的档案编号有相同时,新建行,选中新建行,将表A档案编号复制到项目编号,时间编号得到时间编号,

If e.DataCol.Name = "项目编号" Then
    Dim dr As DataRow
    dr = DataTables("表A").Find("档案编号= \'"  & e.DataRow("项目编号") & "\' and 状态=学习中" )
        Dim r As Row = e.Table.Current
        If r IsNot Nothing Then
            Tables("表B").Position = Tables("表A").FindRow("档案编号")
        End If  \'窗口表与表格同步
    End If
End If  \'当表B的项目编号列找到与表A的档案编号有相同时,同时表B的状态列有学习中,则选中改行,

If e.DataCol.Name = "项目编号" Then
    Dim dr As DataRow
    dr = DataTables("表A").Find("档案编号= \'"  & e.DataRow("项目编号") & "\' and 状态=已学习" )
    Tables("表B").AddNew() \'新建行
    Tables("表B").position = Tables("表B").Rows.Count-1  \'跳到最后一行
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("项目编号")= dr("档案编号")
        Dim nda As DataRow = DataTables("表B").AddNew
        nda("时间编号") = Format(Date.Now, "yyyyMMddHHmmss") \'变动日期编号
    End If
End If \'当表B的项目编号列找到与表A的档案编号有相同时,同时表B的状态列有都是已学习,新建行,选中新建行,将表A档案编号复制到项目编号,时间编号得到时间编号,



--  作者:有点甜
--  发布时间:2017/11/27 12:53:00
--  

参考代码

 

For Each dr As DataRow In DataTables("表A").Select("")
    Dim fdr = DataTables("表B").Find("项目编号 = \'" & dr("档案编号") & "\'", "时间编号 desc")
    If fdr Is Nothing Then
        fdr = DataTables("表B").AddNew
        fdr("项目编号") = dr("档案编号")
    Else
        If fdr("状态") = "已完成" Then
            fdr = DataTables("表B").AddNew
            fdr("项目编号") = dr("档案编号")
        Else
            Dim i = Tables("表B").FindRow(fdr)
            Tables("表B").Position = i
        End If
    End If
Next


--  作者:yangwenghd
--  发布时间:2017/11/30 21:01:00
--  
感谢 感谢 ,一下复制了很多行,能再帮忙看看吗?感谢 感谢 
--  作者:有点甜
--  发布时间:2017/11/30 21:52:00
--  
代码写到按钮里面去,如果有问题,请截图说明哪里有问题。
--  作者:yangwenghd
--  发布时间:2017/12/1 0:45:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:行判断添加.table

感谢了,谢谢 ,
其实就是判断表B要不要添加行,如果表B的项目编号没有与表A的档案编号相同的就添加行,复制表A的编号,如果有相同的就查看状态列是否有学习中,如果有就选中最前面的哪行,如果没有学习中,就同样新建行,把表A的编号复制到表B的项目编号里面,麻烦了,感谢 感谢 

图片点击可在新窗口打开查看此主题相关图片如下:360截图-27847406.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/12/1 0:45:40编辑过]

--  作者:有点甜
--  发布时间:2017/12/1 9:06:00
--  
Dim dr As Row = Tables("表A").current
Dim fdr = DataTables("表B").Find("项目编号 = \'" & dr("档案编号") & "\'", "时间编号 desc")
If fdr Is Nothing Then
    fdr = DataTables("表B").AddNew
    fdr("项目编号") = dr("档案编号")
Else
    If fdr("状态") = "已完成" Then
        fdr = DataTables("表B").AddNew
        fdr("项目编号") = dr("档案编号")
    Else
        Dim i = Tables("表B").FindRow(fdr)
        Tables("表B").Position = i
    End If
End If

--  作者:yangwenghd
--  发布时间:2017/12/1 13:50:00
--  
感谢 感谢 只是现在就是新建行后没有选中新建的行和当表B相同编号的列相同后,状态列如果有学习中,还是会新建行,可以选中这个学习中吗?感谢 感谢 
--  作者:有点甜
--  发布时间:2017/12/1 14:26:00
--  

如果没找到,就新增;如果最后一行是已完成,也会新增。

 

Dim dr As Row = Tables("表A").current
Dim fdr = DataTables("表B").Find("项目编号 = \'" & dr("档案编号") & "\'", "时间编号 desc")
If fdr Is Nothing Then
    fdr = Tables("表B").AddNew
    fdr("项目编号") = dr("档案编号")
Else
    If fdr("状态") = "已完成" Then
        fdr = Tables("表B").AddNew
        fdr("项目编号") = dr("档案编号")
    Else
        Dim i = Tables("表B").FindRow(fdr)
        Tables("表B").Position = i
    End If
End If