Foxtable(狐表)用户栏目专家坐堂 → 代码优化就帮助!


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

主题:代码优化就帮助!

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


加好友 发短信
等级:超级版主 帖子:106763 积分:543016 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/7 21:37:00 [显示全部帖子]

试试

Select Case e.DataCol.Name
    Case "鉴定等级","评审资格","评审性质","评审分组","材料类别","评审结果","重报性质","年份"
        If e.DataRow("年份") >= 15 Then
            If e.DataRow("鉴定等级") = "高级工" OrElse e.DataRow("鉴定等级") = "中级工" Then
                e.DataRow("实潜准考证号码") = e.DataRow("理论准考证号码")
                If e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("理论成绩") >=60 AndAlso e.DataRow("实操成绩") >=60 OrElse e.DataRow("申报性质") = "补考理论" AndAlso e.DataRow("理论成绩") >=60 OrElse e.DataRow("申报性质") = "补考实操" AndAlso e.DataRow("实操成绩") >=60 Then
                    e.DataRow("评审资格") = True
                    e.DataRow("评审性质") = "正常评审"
                    e.DataRow("重报性质") = ""
                    e.DataRow("评审结果") = "通过"
                Else
                    e.DataRow("评审资格") = False
                    e.DataRow("评审性质") = "没有资格"
                    e.DataRow("评审结果") = "否决"
                    If e.DataRow("申报性质") = "正常申报"
                        If .DataRow("理论成绩") >=60 Then
                            e.DataRow("重报性质") = "补考实操"
                        ElseIf .DataRow("实操成绩") >=60
                            e.DataRow("重报性质") = "补考理论"
                        Else
                            e.DataRow("重报性质") = "正常申报"
                        End If
                    ElseIf e.DataRow("申报性质") = "补考理论" AndAlso e.DataRow("理论成绩") <60 OrElse e.DataRow("申报性质") = "补考实操" AndAlso e.DataRow("实操成绩") <60
                        e.DataRow("重报性质") = "正常申报"
                    End If
                End If
                If e.DataRow("鉴定等级") = "高级工" Then
                    e.DataRow("材料类别") = "D"
                Else If e.DataRow("鉴定等级") = "中级工" Then
                    e.DataRow("材料类别") = "E"
                End If
            End If
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:106763 积分:543016 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/7 22:33:00 [显示全部帖子]

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

If 【e.DataRow("申报性质") = "正常申报" 同时 e.DataRow("理论成绩") >=60 同时 e.DataRow("实操成绩") >=60】 或者 【e.DataRow("申报性质") = "补考理论" 同时e.DataRow("理论成绩"】>=60) 或者 【e.DataRow("申报性质") = "补考实操" 同时 e.DataRow("实操成绩") >=60】 Then



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


加好友 发短信
等级:超级版主 帖子:106763 积分:543016 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/7 23:16:00 [显示全部帖子]

很简单的道理,查询按钮给表格做了筛选,表格AfterFilter事件又给所有打开的窗口重新赋值了。

如果只是想给当前操作的窗口赋值,可以使用全局变量,

查询按钮事件
vars("窗口") = e.form.name
……其他筛选代码

AfterFilter事件就不需要循环所有的窗口了,直接给窗口赋值即可
if vars("窗口") > "" then
Forms(vars("窗口")).Controls("总人数").Text = 总人数
……

 回到顶部