Foxtable(狐表)用户栏目专家坐堂 → [求助]filler的数据格式问题


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

主题:[求助]filler的数据格式问题

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]filler的数据格式问题  发帖心情 Post By:2018/6/23 19:20:00 [显示全部帖子]

dim f As New Filler
f
.SourceTable = DataTables("X") '指定数据来源
f
.SourceCols = "ID,A" '指定数据来源列
f
.DataTable = DataTables("Y") '指定数据接收表
f
.DataCols = "MID,FA" '指定数据接收列
f
.Fill()
'填充数据


问题

如果X表中的A列为数字,而Y表中的FA列为文本,不能filler吗?

如果要导入进去,怎么处理呢?


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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/24 22:58:00 [显示全部帖子]

总算找到问题。是因为left join后,查出来的值是空值。
然后往表中filler的时候,0值和空值会有问题。

那么,有什么可以将left join得到的一些空值数据赋0呢?
查了一下,ACCESS中有一个NZ函数,NA(合计数量,0) as 合计数量。
但是,好象FT中不支持这个NZ函数。

只能用iif(合计数量 is null,0,合计数量) as 合计数量?

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/24 23:09:00 [显示全部帖子]

收到,折腾了好久,终于搞清楚原因,唉

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/25 9:13:00 [显示全部帖子]

所以,不论用FT的combine或是用SQLCommand(用了lfet join等)的方式生成的表,用filler方法的时候,都可能出现问题。
因为combine里生成的数据列有可能是空值,而用SQL生成的也会有空值。

当它们使用filler方法时,ExcludeExistValue参数对源表中的空值似乎是没有判断能力的。
[此贴子已经被作者于2018/6/25 9:26:10编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/25 9:39:00 [显示全部帖子]

你的也算是一个方法,不过效率可能不行。象链接所示的例子,如果外部表的dkl的数据量行在百八十行,可能还行,但是如果数据有上万行的话,可能就会非常慢了。

我注意到里面有两次遍历,而且遍历过程中还要用addnew,还要赋值,反正在FT中做这种操作,如果有上万行,肯定奇慢无比。在后台可能会快一些,不过应当也快不到哪去
[此贴子已经被作者于2018/6/25 9:44:08编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/25 9:58:00 [显示全部帖子]

先根据fa piao明细生成空表dt,然后再用外部表生成dt1
然后将dt1的数据逐行填充到dt中,多这一步操作,就能将dt1中的空值问题解决?
然后在filler的时候,用dt而不是直接用dt1,这是个什么机制?


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


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/6/25 10:45:00 [显示全部帖子]

我的意思可能有点表述不清。
比如8月份进了5种商品,但其中有2种商品是第一次进货,那么8月份数据(这是通过Dim dt1 As DataTable = cmd.ExecuteReader查出来的结果)
商品      本次进货      累计进货
商品1     10             50
商品2     20            
商品3     30             40
商品4     40       
商品5     50             80
现在如果用filler方法,填充到一个内部表中。
即使使用了ExcludeExistValue,每filler一次,都会把数据复制一遍进去。
我是要把这5条数据都filler进去,而不是说累计进货数量为空的就不filler
[此贴子已经被作者于2018/6/25 10:45:42编辑过]

 回到顶部