以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码优化  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125275)

--  作者:q2520
--  发布时间: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


--  作者:有点甜
--  发布时间:2018/9/25 12:04:00
--  

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

 

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


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

--  作者:有点甜
--  发布时间:2018/9/25 16:07:00
--  

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

 

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


--  作者:q2520
--  发布时间:2018/9/25 16:38:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1_201809251635.zip


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

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

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

 

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

 

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

 

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