Foxtable(狐表)用户栏目专家坐堂 → 求助:下列FOXTABLE文件中“课时变化”表中的“正课统计”按纽公式如何设置?


  共有30354人关注过本帖平板打印复制链接

主题:求助:下列FOXTABLE文件中“课时变化”表中的“正课统计”按纽公式如何设置?

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


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2008/11/10 2:43:00 [只看该作者]

不知是否理解正确。可以调整一下思路.原来的表1取消,增加一个表“课时名单”作为过度表,为“另表”和“流水表”计算做准备。代码如下。速度很快的,我的电脑耗时4秒。

e.Form.Controls("Label1").text="稍等..."
dim timestart,timeend as date
timestart=date.now
dim s as string ="上午,下午,读报"
dim h as integer =0
DataTables("课时名单").DataRows.Clear()
For Each dr As DataRow In DataTables("课时变化").DataRows
    if dr("正课_星期") isnot nothing  then
        dim ksweek as string =dr("正课_星期")
        for Each dc as Datacol In DataTables("课时变化").Datacols
            if dc.name.IndexOf("_") >0 then
                dim ksspan as string =dc.name.split("_")(1)
                if s.IndexOf(ksspan)>=0 then
                    if dr(dc.name)=true then
                        For Each drkc As DataRow In DataTables("课程表").DataRows
                            for Each dckc as Datacol in DataTables("课程表").Datacols
                                if ksspan="读报" then
                                    ksspan="班主任"
                                end if
                                if dckc.name.IndexOf(ksweek)>=0 and dckc.name.IndexOf(ksspan)>=0 and  drkc(dckc) isnot nothing  then
                                    for j as integer =0 to (drkc(dckc) & "/") .split("/").Length - 1                                       
                                        if (drkc(dckc) & "/") .split("/")(j) <> "" then
                                            Dim drmd As DataRow
                                            h=h+1
                                            drmd = DataTables("课时名单").DataRows.AddNew()
                                            drmd("星期") = ksweek
                                            drmd("时段") = ksspan
                                            drmd("姓名") = (drkc(dckc) & "/") .split("/")(j).Replace("DU","")
                                            IF (drkc(dckc) & "/") .split("/").Length >2 OR (drkc(dckc) & "/").split("/")(j).IndexOf("DU")>=0
                                                drmd("计分") = 0.5
                                            ELSE
                                                 drmd("计分") = 1
                                            END IF
                                        end if   
                                    next                                   
                                end if
                            next
                        next
                    end if
                end if
            end if
        next
    end if
next
DataTables("另表").DataRows.Clear()
dim f As New Filler
f.SourceTable = DataTables("课时名单") '指定数据来源
f.SourceCols = "姓名"   '指定数据来源列
f.DataTable = DataTables("另表") '指定数据接收表
f.DataCols = "姓名" '指定数据接收列
f.Fill() '填充数据
DataTables("另表").datacols("出现次数").Recalc()

DataTables("流水表").DataRows.Clear()
f.DataTable = DataTables("流水表") '指定数据接收表
f.DataCols = "正课_姓名"  '指定数据接收列
f.Fill() '填充数据
DataTables("流水表").datacols("正课_课时").Recalc()
timeend=date.now
e.Form.Controls("Label1").text="耗时" & (timeend-timestart).TotalSeconds & "秒"
Messagebox.Show("处理完毕!")

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:1234.table


[本帖被加为精华]
 回到顶部
总数 27 1 2 3 下一页