以文本方式查看主题 - 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 -- 能在帮忙看看吗?看了很久也没看懂具体的意思,感谢,感谢
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("") |
||||
-- 作者:yangwenghd -- 发布时间:2017/11/30 21:01:00 -- 感谢 感谢 ,一下复制了很多行,能再帮忙看看吗?感谢 感谢 |
||||
-- 作者:有点甜 -- 发布时间:2017/11/30 21:52:00 -- 代码写到按钮里面去,如果有问题,请截图说明哪里有问题。 |
||||
-- 作者:yangwenghd -- 发布时间:2017/12/1 0:45:00 --
感谢了,谢谢 , 其实就是判断表B要不要添加行,如果表B的项目编号没有与表A的档案编号相同的就添加行,复制表A的编号,如果有相同的就查看状态列是否有学习中,如果有就选中最前面的哪行,如果没有学习中,就同样新建行,把表A的编号复制到表B的项目编号里面,麻烦了,感谢 感谢
[此贴子已经被作者于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 |