以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 求助老师 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105996)
|
-- 作者:sgkyzfh
-- 发布时间:2017/8/30 21:14:00
-- 求助老师
老师:我有一个项目,其中有两个表,即:《检测历史记录表》和《隐患登记表》,我想实现这样一个功能,就是从《检测历史记录表》里录入数据,当“自动生成隐患”列为真时,就在《隐患登记表》里增加一个相同的记录。这个功能我已经实现了。
但我又设计了一个程序放在了《隐患登记表》的DataColchanged数据事件里,其目的就是想对来自《检测历史记录表》的数据进行判断,当《隐患登记表》的数据里有相同的数据时,就禁止形成新的数据记录,同时还要删除《检测历史记录》的对应数据。目前这个功能实现不了。请老师指正。登录密码:111 |
|
-- 作者:sgkyzfh
-- 发布时间:2017/8/30 21:25:00
-- 测试附件
测试附件
|
-- 作者:有点甜
-- 发布时间:2017/8/30 21:26:00
--
先判断,再决定是否新增
If e.DataCol.Name = "逻辑列名" AndAlso e.DataRow("逻辑列名") = True Then Dim dr As DataRow = DataTables("表B").Find("某列 = \'" & e.DataRow("某列") & "\'") If dr Is Nothing Then dr = DataTables("表B").AddNew For Each dc As DataCol In DataTables("表B").DataCols dr(dc.Name) = e.DataRow(dc.Name) Next End If
|
-- 作者:有点甜
-- 发布时间:2017/8/30 21:37:00
--
比如,检测历史记录表DataColChanged事件,写代码
If e.DataCol.Name = "自动生成" AndAlso e.DataRow("自动生成") = True Then Dim dr As DataRow = DataTables("隐患登记表").Find("车号 = \'" & e.DataRow("车号") & "\' and 日期 = #" & e.DataRow("检查日期") & "#") If dr Is Nothing Then dr = DataTables("隐患登记表").AddNew Dim nma() As String = {"车号","受控名称","检查日期"} \'A表数据来源列 Dim nmb() As String = {"车号","隐患部位","日期"} \'B表数据接收列 For i As Integer = 0 To nma.Length - 1 dr(nmb(i)) = e.DataRow(nma(i)) Next End If
|
-- 作者:sgkyzfh
-- 发布时间:2017/8/30 21:57:00
--
老师我发的测试附件错误了,很抱 歉,我重新发一次,你在费心给看看一看
|
-- 作者:有点甜
-- 发布时间:2017/8/30 22:10:00
--
Select Case e.DataCol.name Case "车号","点位","描述","点检组归档" Dim dr As DataRow = e.DataRow \'将上述车号/点位/描述/点检组归档的值赋给dr变量. If e.DataRow("点检组归档")=Nothing Then \'如果点检组归档为空时 If dr.IsNull("车号") = False AndAlso dr.IsNull("点位") = False AndAlso dr.IsNull("描述") = False AndAlso dr.IsNull("点检组归档")= False Then \'如果左侧列都不为空. If e.DataTable.Compute("Count([_Identify])","车号 = \'" & dr("车号") & "\'And 点位 = \'" & dr("点位") & "\' And 描述 = \'" & dr("描述") & "\' And 点检组归档= \'" & dr("点检组归档") & "\'") > 1 Then MessageBox.Show("相同记录已经存在!不准重复录入","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
DataTables("检测历史记录").deletefor("车号 = \'" & dr("车号") & "\'And 点位 = \'" & dr("点位") & "\' And 描述 = \'" & dr("描述") & "\' And 点检组归档= \'" & dr("点检组归档") & "\'") e.DataRow.Delete \'删除当前准备录入的行 End If End If End If End Select
|
-- 作者:sgkyzfh
-- 发布时间:2017/8/31 20:07:00
--
谢谢老师点拨,很好用。
|