以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教DataColChanged:事件 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122588) |
-- 作者:zhangchi96 -- 发布时间:2018/7/28 16:55:00 -- 请教DataColChanged:事件 一、窗体:校车管理窗体 1、 绑定表:网络校车基本信息表 作为副本:true 筛选:Tables("校车管理窗体_校车基本信息之驾驶员").Filter = " 统计项目 = \'驾驶人员\' " 单位名称 统计项目 驾驶员_姓名 驾驶员_身份证号 驾驶员_状态 单位01 驾驶人员 驾驶员1 321671197610108191 在岗 单位02 驾驶人员 驾驶员2 321671197610108192 在岗 单位03 驾驶人员 驾驶员3 321671197610108193 离岗 2、 插入表:校车基本信息之线路 绑定表:网络校车基本信息表 作为副本:true 筛选:Tables("校车管理窗体_校车基本信息之线路").Filter = " 统计项目 = \'线路配置\' " 单位名称 线路 统计项目 驾驶员_姓名 驾驶员_身份证号 车牌号 乘管员 单位01 1 线路配置 驾驶员1 321671197610108191 单位02 2 线路配置 驾驶员2 321671197610108192 单位03 3 线路配置 驾驶员3 321671197610108193 3、 【设置下拉菜单】按钮代码: \'--设置下拉菜单\' Dim dmp1 As New TableDataMap dmp1.DataTable = "网络校车基本信息表" \'指定数据来源表 dmp1.ValueCol = "驾驶员_身份证号" \'指定取值列 dmp1.DisplayCol = "驾驶员_身份证号" \'指定显示列 dmp1.ListCols = "驾驶员_姓名,驾驶员_身份证号" \'指定下拉列表时显示哪些列的数据 dmp1.Sort = "驾驶员_姓名" \'指定排序方式 Tables("校车管理窗体_校车基本信息之线路").Cols("驾驶员_身份证号").DataMap = dmp1.CreateDataMap()
二、表事件 【网络校车基本信息表】的表事件DataColChanged:
If Tables("网络校车基本信息表").Rows.count > 0 Then \'求行数 Dim frm As WinForm.Form frm = Forms.ActiveForm If frm IsNot Nothing Then If frm.Name = "校车管理窗体" Then If CurrentTable.DataTable.Name = "网络校车基本信息表" Then If e.DataCol.Name = "驾驶员_身份证号" And e.DataRow("统计项目") = "驾驶人员" Then For Each dr5 As DataRow In DataTables("网络校车基本信息表").Select(" 统计项目 <> \'驾驶人员\' ","") If dr5("驾驶员_身份证号") = e.oldvalue Then dr5("驾驶员_身份证号") = e.newvalue End If Next End If
\'-- 在驾驶员从【在岗】改为【离岗】后,【统计项目】符合线路配置各行中,该驾驶员的身份证号全部清空 If e.DataCol.Name = "车辆_状态" And e.DataRow("统计项目") = "驾驶人员" Then If e.NewValue <> "运行" Then Dim 身份证号 As String = e.DataRow("驾驶员_身份证号") Dim dr5 As DataRow = DataTables("网络校车基本信息表").Find(" 统计项目 <> \'驾驶人员\' and 驾驶员_身份证号 = \'"& 身份证号 &"\'") dr5("驾驶员_身份证号") = "" End If End If
Dim 设置下拉菜单 As WinForm.Button = Forms("校车管理窗体").Controls("设置下拉菜单") 设置下拉菜单.PerformClick() End If End If End If End If
黄色的部分代码在执行时,没有起作用,请老师指点一二 [此贴子已经被作者于2018/7/28 16:56:22编辑过]
|
-- 作者:有点蓝 -- 发布时间:2018/7/28 18:38:00 -- If Tables("网络校车基本信息表").Rows.count > 0 Then \'求行数 Dim frm As WinForm.Form frm = Forms.ActiveForm If frm IsNot Nothing Then If frm.Name = "校车管理窗体" Then If CurrentTable.DataTable.Name = "网络校车基本信息表" Then If e.DataCol.Name = "驾驶员_身份证号" And e.DataRow("统计项目") = "驾驶人员" Then For Each dr5 As DataRow In DataTables("网络校车基本信息表").Select(" 统计项目 <> \'驾驶人员\' ","") If dr5("驾驶员_身份证号") = e.oldvalue Then dr5("驾驶员_身份证号") = e.newvalue End If Next End If msgbox(e.DataRow("统计项目")) \'能不能弹出来 \'-- 在驾驶员从【在岗】改为【离岗】后,【统计项目】符合线路配置各行中,该驾驶员的身份证号全部清空 If e.DataCol.Name = "车辆_状态" And e.DataRow("统计项目") = "驾驶人员" Then msgbox(e.NewValue)\'弹出什么值 If e.NewValue <> "运行" Then Dim 身份证号 As String = e.DataRow("驾驶员_身份证号") Dim dr5 As DataRow = DataTables("网络校车基本信息表").Find(" 统计项目 <> \'驾驶人员\' and 驾驶员_身份证号 = \'" & 身份证号 & "\'") dr5("驾驶员_身份证号") = "" End If End If Dim 设置下拉菜单 As WinForm.Button = Forms("校车管理窗体").Controls("设置下拉菜单") 设置下拉菜单.PerformClick() End If End If End If End If
|
-- 作者:zhangchi96 -- 发布时间:2018/7/28 23:52:00 -- 老师,这样改了一下,能顺利执行了
\'如果不改为以下遍历语句,则清空驾驶员身份证号的就只会是第一条符合条件的记录,而不是所有记录 |