Foxtable(狐表)用户栏目专家坐堂 → [求助][求助]请教如何分班,内详


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

主题:[求助][求助]请教如何分班,内详

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


加好友 发短信
等级:一尾狐 帖子:456 积分:7267 威望:0 精华:0 注册:2012/2/6 12:27:00
[求助][求助]请教如何分班,内详  发帖心情 Post By:2014/11/11 14:10:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20141111140911.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分班_201411111408.zip



请教如何写这段代码,
[此贴子已经被作者于2014-11-11 14:11:23编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/11/11 14:13:00 [只看该作者]

描述不够具体,不知道你具体想怎么样.

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


加好友 发短信
等级:一尾狐 帖子:456 积分:7267 威望:0 精华:0 注册:2012/2/6 12:27:00
[求助]  发帖心情 Post By:2014/11/11 14:17:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20141111141743.png
图片点击可在新窗口打开查看

如上图

单击按钮后分班每个班每次的活动数量,上图B班是错误的,因为每个班最多活动数量不能超过50,
先一个班一个班的分配,A班分配完了,才分配B班,类推
[此贴子已经被作者于2014-11-11 14:19:35编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/11/11 14:20:00 [只看该作者]

你是要自动分配输入, 还是要限制输入数量

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


加好友 发短信
等级:一尾狐 帖子:456 积分:7267 威望:0 精华:0 注册:2012/2/6 12:27:00
  发帖心情 Post By:2014/11/11 14:23:00 [只看该作者]

自动分配的,BIN版,麻烦了,不少于10个班,这个例子我只列了三个班

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


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

 重复代码,细节自己调整

 

[此贴子已经被作者于2014-11-11 14:46:49编辑过]

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


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

Dim dt As DataTable = DataTables("表A")
Dim cs() As String = {"A班","B班","C班"}

Dim rsums As new Dictionary(Of String, Double)
For Each c As String In cs
    Dim sum As Double = 0
    Dim temp As Double = 0
    Dim mcount As Double = 0
    For Each dr As DataRow In dt.DataRows
        If dr("活动") = "找工具" Then
            mcount = 10
        Else If dr("活动") = "找玩具" Then
            mcount = 20
        Else If dr("活动") = "找课本" Then
            mcount = 30
        End If
        If rsums.ContainsKey(dr("活动")) = False Then rsums.Add(dr("活动"),0)
        If mcount + rsums(dr("活动")) <= dr("数量") Then
            temp = mcount
        Else
            temp = dr("数量") - rsums(dr("活动"))
        End If
        If temp + sum >= 50 Then
            temp = 50 - sum
        End If
        If temp >= 0 Then
            sum += temp
            dr(c) = temp
            rsums(dr("活动")) += dr(c)
        End If
       
    Next
Next


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


加好友 发短信
等级:一尾狐 帖子:456 积分:7267 威望:0 精华:0 注册:2012/2/6 12:27:00
  发帖心情 Post By:2014/11/11 14:54:00 [只看该作者]

谢谢甜版,但如果有N个班,那手工加上去不是很麻烦呀?

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


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

 那你就做个班级表,自动获取所有的班级。

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/11/11 14:56:00 [只看该作者]

你是横向的列,手动添加比较稳妥.   其实你这样表设计不怎么合理,应该竖向才对.每个班一个列,不科学的.

如果你固定第三列开始就是班  你可以遍历实现

for each i as integer = 2 to tables("X").cols.count-1
          tables("X").cols(i).name
next

 回到顶部
总数 11 1 2 下一页