Foxtable(狐表)用户栏目专家坐堂 → 再请教


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

主题:再请教

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
再请教  发帖心情 Post By:2015/1/11 12:04:00 [只看该作者]

大师:填充器填充时,来源列与接收列的数据类型不一致如何解决,是否可以判断?

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


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

 不匹配也是可以填充的啊,但是如果你数据有问题,肯定填充不进去的。比如 字符abc不能赋值给数字列。

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2015/1/11 13:12:00 [只看该作者]

谢谢!也就是说,如果接受列设置为数值类型,那么接收时不管来源列的类型,只要是数字就行,如果混有字符就不行了,是吗?那能否判断检查?也就是检查一下单元格是否是数字,如何判断是否为数字?帮助中没有找到。只找到判断是否为数值列。

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


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

 不要直接填充,用select一行一行判断和填充。

 

 比如

 

Dim dt As DataTable
Dim sCols() As String = {"列名1", "列名2", "列名3"}
Dim dCols() As String = {"列名A", "列名B", "列名C"}
dt = DataTables("表A")
For Each dr As DataRow In dt.Select("")
    Dim nr As DataRow = DataTables("表B").AddNew()
    For i As Integer =0 To sCols.Length -1
        nr(dCols(i)) = dr(sCols(i))
    Next
Next


 


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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2015/1/11 16:43:00 [只看该作者]

原来就是这样做的,由于这样5000行数据太慢了,才想用填充器,于是就问以上问题的?

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


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

以下是引用hbhb在2015-1-11 16:43:00的发言:
原来就是这样做的,由于这样5000行数据太慢了,才想用填充器,于是就问以上问题的?

 

用select填充也一样很快啊。

 

加上停止绘制即可啊 http://www.foxtable.com/help/topics/0401.htm

 


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


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

 先得出列,再填充,不要在填充的过程中判断列。

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2015/1/11 16:50:00 [只看该作者]

也试过了,就是您说的填充器最快!,如果以增加行的方法,表有50列的5000行数据,慢的很!

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


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

以下是引用hbhb在2015-1-11 16:50:00的发言:
也试过了,就是您说的填充器最快!,如果以增加行的方法,表有50列的5000行数据,慢的很!

 

新增行,填充行,也不会很慢。

 

Dim t As Table = Tables("上报资料")
Dim dt As DataTable = DataTables("物料信息")
Dim scs As new List(Of String)
Dim dcs As new List(Of String)

For Each c As Col In t.Cols
    Dim cname As String = t.Rows(1)(c.Name)
    If dt.DataCols.Contains(cname) Then
        dcs.Add(cname)
        scs.add(c.name)
    End If
Next
dt.StopRedraw
For Each dr As DataRow In t.DataTable.Select("_Identify >= " & t.Rows(2)("_Identify"))
    Dim ndr As DataRow = dt.AddNew
    For i As Integer = 0 To scs.Count - 1
        ndr(dcs(i)) = dr(scs(i))
    Next
Next
dt.ResumeRedraw


 回到顶部