Foxtable(狐表)用户栏目专家坐堂 → [求助]代码优化


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

主题:[求助]代码优化

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


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
[求助]代码优化  发帖心情 Post By:2018/9/25 11:36:00 [只看该作者]

Select Case e.DataCol.Name

    Case "单位","岗位"

        If  e.DataRow.IsNull("日期") = False AndAlso e.DataRow("单位") = "安全科" AndAlso e.DataRow("岗位") = "安检科科长"  Then 

            If e.DataRow.GetChildRows("责任制明细").Count = 0 Then 

                Dim dr As DataRow = DataTables("责任制明细").AddNew()

                dr("日期")=e.DataRow("日期")

                dr("单位")=e.DataRow("单位")

                dr("岗位")="安检科科长"

                dr("姓名")=""

                dr("考核内容")="认真贯彻党和国家安全生产方针、政策、法律、法规,在安全矿长的领导下,负责矿井安全监督检查工作,是本科室安全第一责任者."

                dr("总分")="10"

          End If

        End If

End Select


1.老师我有一个表  有很多条上面这个代码  在代码编辑框里  下拉都不正常  拉不到底  太多了  几千行了   

2.还有一个问题是   每个月都会生成一次表    速度越来越慢  是不是和下面这个代码有关系  老师给帮忙优化一下

责任制明细_DataColChanging

 

Dim t As Table = Tables("责任制明细")

t.Sort = "日期,岗位,考核内容,单位"

If t.Rows.Count > 1 Then

    Dim r As Row = t.Rows(t.Rows.Count - 1)

    For i As Integer = t.Rows.Count - 2 To 0 Step -1

        Dim r1 As Row = t.Rows(i)

        If r("姓名") = r1("姓名") And r("岗位") = r1("岗位") And r("考核内容") = r1("考核内容") And r("日期") = r1("日期") And r("单位") = r1("单位")  Then

            r1.Delete

        Else

            r = r1

        End If

    Next

End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/25 12:04:00 [只看该作者]

1、试试 http://www.foxtable.com/webhelp/scr/1273.htm

 

2、代码不要写到 DataColChanging 事件,单独做一个按钮单独执行试试


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


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By:2018/9/25 15:57:00 [只看该作者]

1.我加   ''' 这个了  但是不是那个意思   是类似那个代码很多条   编辑框里下拉条  已经不能拉到底了   我现在都得复制出来  改完在复制进去  还有我那个方法是不是太笨了  还有什么好的办法吗
2.按钮代码不会弄啊   你给帮忙写个吧  意思你应该都明白吧   

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/25 16:07:00 [只看该作者]

1、你事件里面为什么要写那么多代码?写的是同样的重复的代码?具体做个实例发上来测试。

 

2、直接把代码拷贝出去即可。


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


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By:2018/9/25 16:38:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1_201809251635.zip


老师给帮忙看看   主要功能就那样   每个月200多的人员  每人都要生成一张考核表      我是直接在外面写好岗位姓名  直接复制进去 但是要等很久  才弄了2个月的都很慢了   以后肯定会更慢   
[此贴子已经被作者于2018/9/25 16:38:29编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/25 16:48:00 [只看该作者]

1、做一个考核制度表,需要添加数据的时候,从这个表,把数据添加过来

 

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

 

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

 

 

2、删除这段代码

 

Dim t As Table = Tables("责任制明细")
t.Sort = "日期,岗位,考核内容,单位"
If t.Rows.Count > 1 Then
    Dim r As Row = t.Rows(t.Rows.Count - 1)
    For i As Integer = t.Rows.Count - 2 To 0 Step -1
        Dim r1 As Row = t.Rows(i)
        If r("姓名") = r1("姓名") And r("岗位") = r1("岗位") And r("考核内容") = r1("考核内容") And r("日期") = r1("日期") And r("单位") = r1("单位")  Then
            r1.Delete
        Else
            r = r1
        End If
    Next
End If


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


加好友 发短信
等级:小狐 帖子:316 积分:2193 威望:0 精华:0 注册:2018/2/4 9:37:00
  发帖心情 Post By:2018/9/25 16:56:00 [只看该作者]

是不是就是相当于 复制一个  我现在的考核明细表    然后下个月的时候  改下日期   再增加到  考核明细表里? 如果是这个意思  那我那些代码就不用写了是吧
  如果按那个教程做  是不是得做一个按钮
[此贴子已经被作者于2018/9/25 16:57:38编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/25 17:58:00 [只看该作者]

以下是引用q2520在2018/9/25 16:56:00的发言:
是不是就是相当于 复制一个  我现在的考核明细表    然后下个月的时候  改下日期   再增加到  考核明细表里? 如果是这个意思  那我那些代码就不用写了是吧
  如果按那个教程做  是不是得做一个按钮
[此贴子已经被作者于2018/9/25 16:57:38编辑过]

 

1、是的。你不需要写那些代码了,直接拷贝6楼,就可以拷贝内容过去了。

 

2、不需要改日期吧,你只需要修改代码,把日期改成某一个值即可。

 

3、不需要做成按钮,依然在你datacolchanged事件写代码即可。不同的人员不同的类型,拷贝不同的数据过去。


 回到顶部