Foxtable(狐表)用户栏目专家坐堂 → 老大,有问题指教,请指明思路!


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

主题:老大,有问题指教,请指明思路!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/9 15:12:00 [显示全部帖子]

填充数据,并非必须要用Filler,Fiiler是机械的,只能处理简单的、排除重复的填充。

 

Dim Names1() As String = {"010212","010221","020222","010223","014301","014302","014303","014304","014306"}
Dim Names2() As String = {"A","B","C","D","E","F","G","H","I"}
Dim Arys As List(Of String())
arys = DataTables("排产数据").GetUniqueValues("", "排产日期", "优先级")
For Each ary As String() In Arys
    Dim dr1 As DataRow = DataTables("排产优化").AddNew()
    dr1("排产日期") = ary(0)
    dr1("优先级") = ary(1)
    For n As Integer = 0 To Names1.Length - 1
        Dim dr2 As DataRow = DataTables("排产数据").Find("排产日期 = #" & ary(0) & "# And 优先级 = '" & ary(1) & "' And 加工单元 = '" & Names1(n) & "'")
        If dr2 IsNot Nothing
            dr1("加工单元" & Names2(n)) = dr2("计划号")
        End If
    Next
Next


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/9 15:16:00 [显示全部帖子]

呵呵,我马后炮了,原来C版解决了。

C版动态生成表,我的在原来的表填充,楼主自己选择。

[此贴子已经被作者于2010-9-9 15:15:58编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/10 8:57:00 [显示全部帖子]

方法很多,你还可以写得更好。
 
我的代码再优化一下:
 
Dim Arys As List(Of String())
arys = DataTables("排产数据").GetUniqueValues("", "排产日期", "优先级")
For Each ary As String() In Arys
    Dim dr1 As DataRow = DataTables("排产优化").AddNew()
    dr1("排产日期") = ary(0)
    dr1("优先级") = ary(1)
    For Each dc AS DataCol In DataTables("排产优化").DataCols
        Dim dr2 As DataRow = DataTables("排产数据").Find("排产日期 = #" & ary(0) & "# And 优先级 = '" & ary(1) & "' And 加工单元 = '" & dc.Caption & "'")
        If dr2 IsNot Nothing
            dr1(dc.name) = dr2("计划号")
        End If
    Next
Next
[此贴子已经被作者于2010-9-10 9:00:45编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/17 9:12:00 [显示全部帖子]

1、应该这样:

Arys =dt.GetUniqueValues("","inputdate", "remark")

 

2、其实你的SQL语句已经排除重复值了,所以dt中并没有重复值了,那么直接使用dt即可,不需要再GetUniqueValues了。

 

For Each dr As DataRow In dt.DataRows
    Dim dr1 As DataRow = DataTables("排产优化").AddNew()
    dr1("排产日期") = dr("排产日期")
    dr1("优先级") = dr("优先级")
    For Each dc AS DataCol In DataTables("排产优化").DataCols
        Dim dr2 As DataRow = DataTables("排产数据").Find("排产日期 = #" & dr("排产日期") & "# And 优先级 = '" & dr("优先级") & "' And 加工单元 = '" & dc.Caption & "'")
        If dr2 IsNot Nothing
            dr1(dc.name) = dr2("计划号")
        End If
    Next
Next


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/17 10:33:00 [显示全部帖子]

提示:

 

1、下面两行可以删除:

 

Dim Arys As List(Of String())
Arys =dt.GetUniqueValues("","inputdate", "remark")

 

2、如果没有增加行,说明dt是空的,也就是cmd的条件有问题,如果有增加行,但相关列的内容没有填入,可能就是下面的条件不符:

 

dt.Find("inputdate = #" & dr("inputdate") & "# And remark = '" & dr("remark") & "' And workcentercode = '" & dc.Caption & "'")

[此贴子已经被作者于2010-9-17 10:33:33编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/17 10:37:00 [显示全部帖子]

找不到workcentercode 是应该的,后台有workcentercode 列,但你不是在后台找,你是在dt表中找,而你的dt表没有此列,因为下面的语句没有包括此列:

 

cmd.CommandText = "select distinct inputdate,remark From a1"

 

你必须在Select语句中将此列包括进去,提醒一下,包括此列之后,你必须采用之前的代码来获得不重复的值:

 

Dim Arys As List(Of String())
Arys =dt.GetUniqueValues("","inputdate", "remark")

 

相关的代码也应该改一下。

 

你要先理解代码,再去修改代码。

[此贴子已经被作者于2010-9-17 10:38:33编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/17 11:10:00 [显示全部帖子]

用Select语句去找即可,具体看看SQLCommand

但是执行次数很多,从后台找慢。


 回到顶部