以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]filler的数据格式问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120784)

--  作者:chnfo
--  发布时间:2018/6/23 19:20:00
--  [求助]filler的数据格式问题

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
--  发布时间: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 合计数量?

--  作者:有点甜
--  发布时间:2018/6/24 23:04:00
--  

只能用 iif 函数处理。


--  作者:chnfo
--  发布时间:2018/6/24 23:09:00
--  
收到,折腾了好久,终于搞清楚原因,唉
--  作者:chnfo
--  发布时间:2018/6/25 9:13:00
--  
所以,不论用FT的combine或是用SQLCommand(用了lfet join等)的方式生成的表,用filler方法的时候,都可能出现问题。
因为combine里生成的数据列有可能是空值,而用SQL生成的也会有空值。

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

--  作者:有点甜
--  发布时间:2018/6/25 9:23:00
--  

那你这样做

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=69898&authorid=0&page=0&star=2

 

 


--  作者:chnfo
--  发布时间:2018/6/25 9:39:00
--  
你的也算是一个方法,不过效率可能不行。象链接所示的例子,如果外部表的dkl的数据量行在百八十行,可能还行,但是如果数据有上万行的话,可能就会非常慢了。

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

--  作者:有点甜
--  发布时间:2018/6/25 9:43:00
--  

效率慢,参考

 

http://www.foxtable.com/webhelp/scr/2225.htm

 


--  作者:chnfo
--  发布时间:2018/6/25 9:58:00
--  
先根据发票明细生成空表dt,然后再用外部表生成dt1
然后将dt1的数据逐行填充到dt中,多这一步操作,就能将dt1中的空值问题解决?
然后在filler的时候,用dt而不是直接用dt1,这是个什么机制?


--  作者:有点甜
--  发布时间:2018/6/25 10:10:00
--  

回复9楼,find查找把空值处理了啊。