Foxtable(狐表)用户栏目专家坐堂 → 请教DataColChanged:事件


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

主题:请教DataColChanged:事件

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


加好友 发短信
等级:二尾狐 帖子:565 积分:5114 威望:0 精华:0 注册:2012/2/11 13:27:00
请教DataColChanged:事件  发帖心情 Post By:2018/7/28 16:55:00 [显示全部帖子]

 

一、窗体:校车管理窗体

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编辑过]

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


加好友 发短信
等级:二尾狐 帖子:565 积分:5114 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2018/7/28 23:52:00 [显示全部帖子]

老师,这样改了一下,能顺利执行了


If Tables("网络校车基本信息表").Rows.count > 0 Then '求行数
    Dim frm As WinForm.Form  '定义一个窗体'
    frm = Forms.ActiveForm   '活动窗口的名字表示方法就是:frm.Name
    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("驾驶员_身份证号")

                        '如果不改为以下遍历语句,则清空驾驶员身份证号的就只会是第一条符合条件的记录,而不是所有记录
                        For Each dr5 As DataRow In DataTables("网络校车基本信息表").Select(" 统计项目 <>  '驾驶人员' and 驾驶员_身份证号 = '"& 身份证号 &"' ","")
                             dr5("驾驶员_身份证号") = ""
                        Next
                    End If
                End If
                Dim 设置下拉菜单 As WinForm.Button = Forms("校车管理窗体").Controls("设置下拉菜单")   '执行按钮【....】的代码
                设置下拉菜单.PerformClick()
            End If
        End If
    End If
End If


 回到顶部