以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于 filler 的自动填充条件.如何理解?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1547)

--  作者:wcs
--  发布时间:2009/1/4 12:34:00
--  关于 filler 的自动填充条件.如何理解?
我有这样一段代码:

dim dqpz As New Filler
dqpz.SourceTable = DataTables("会计凭证查询") \'指定数据来源
dqpz.SourceCols = "sszt,pzrqn,pzrqy,pzrqr,pzlx,pzdm,flxh,pzzy,kmdm,jdfx,flje,cjyh,fdzs" \'指定数据来源列
dqpz.DataTable = DataTables("会计凭证") \'指定数据接收表
dqpz.DataCols = "账套编号,年,月,日,pzlx,凭证编号,flxh,凭证摘要,科目代码,jdfx,flje,制证人,附件张数" \'指定数据接收列
dqpz.ExcludeExistValue = true
dqpz.ExcludeNullValue = true
dqpz.Distinct = true
dqpz.Append = False
dqpz.Fill() \'填充数据

意思是要将"会计凭证查询"表中的内容填充到"会计凭证"表中.

需要填充的字段是对应好了的.

现在的问题是,这几个条件设置好像没有效果:
dqpz.ExcludeExistValue = true
dqpz.ExcludeNullValue = true
dqpz.Distinct = true
dqpz.Append = False

参数设置的意思是:
排除来源表中重复的行,
也排除目标表中重复的表,
排除空值,
目标表中先在原有行中填充,不够用再新增行.

可是执行的结果是:  不任什么情况下,都直接追加行,不用任何条件判断,追加一次就增加100行,第二次就再加100行,实际上内容完全一样的.

[此贴子已经被作者于2009-1-4 12:34:13编辑过]

--  作者:wcs
--  发布时间:2009/1/4 12:39:00
--  
我不明白,怎样才算是完全一样的行?

如果将ID列也考虑进去,那必定是不一样的行了,ID自动生成,没有重复的,所以每一次都判断为不同的行.

如果只判断我要追加的列的内容,那就合理一些了.

急,我在线等!
[此贴子已经被作者于2009-1-4 12:39:13编辑过]

--  作者:wcs
--  发布时间:2009/1/4 13:03:00
--  
我的查询表是用SQL查询来的,

我在考虑是否与这个查询结果不各列的数据类型有关,虽然值是一样的,类型不同也可能造成不同的判断?
--  作者:狐狸爸爸
--  发布时间:2009/1/4 13:19:00
--  

我测试到正常,你每次排除一列,看看到底那列造成的。


--  作者:wcs
--  发布时间:2009/1/4 14:40:00
--  
老大,我每一个字段都试了一下

"账套编号,年,月,日,pzlx,凭证编号,flxh,凭证摘要,科目代码,jdfx,flje,制证人,附件张数"

这中间的每一个字段都不被认为是目标表中已经有的内容,无限制地追加进来.

我记得以前的版本没有这个问题的,以前我是测试过的.

注意,我的来源表是SQL查询表,目标表是外部数据源ACCESS.
--  作者:wcs
--  发布时间:2009/1/4 14:47:00
--  
我又试了一下,将true  改为  false  ,效果一样 

--  作者:wcs
--  发布时间:2009/1/4 14:48:00
--  
经测试,从内部表到内部表,没有问题的.
[此贴子已经被作者于2009-1-4 14:50:03编辑过]

--  作者:wcs
--  发布时间:2009/1/4 15:16:00
--  
经测试,主要是  .ExcludeExistValue = true

这个没有起作用,不任如何设置,都无效