以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [讨论] 狐表的保存机制,如何理解,有实例! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1556) |
||||
-- 作者:wcs -- 发布时间:2009/1/5 17:41:00 -- [讨论] 狐表的保存机制,如何理解,有实例! 我用"abc.mdb"数据库作为外部数据源。 数据库里有B表,有23条记录,这个表会有多人同时操作!但是他们不能增加行,也不能减少行,只能在现有的记录里填写信息。 另有A表是SQL查询表,两者格式结构一样,现在有23条记录。 现在用filler填充数据,排除双方重复的内容,结果应为填充后与填充前一模一样!(因为FILLER中的填充字段的内容完全一样,其他字段内容可能不同),填充完了以后,我查阅了一下,TABLE中的记录还是23条!(我已取消了所有的筛选) 但是,一旦用 B表.load 就会出现再次将23条记录作为同不内容保存的情况。结果B表有46条记录,它们的主键值不同(自动编号的)! 为此,我们讨论一下load的保存机制,是不是有问题啦! LOAD是指保存并同步其他操作者的数据,但我的数据完全一样,应该填充不了任何东西的。 我的想法是这样的: A表用SQL查询从其他数据源中查询最新的记录,用FILLER来更新B表,排除重复的内容,以使B表能得到最新的内容。 现在不排除任何重复的内容了,直接追加了。 我记得狐表早期的版本没有这个问题的,以前我测试过,但升级以后就出现了这样的结果。 请各们讨论一下,有没有解决这个问题的方法? [此贴子已经被作者于2009-1-5 18:50:53编辑过]
|
||||
-- 作者:wcs -- 发布时间:2009/1/5 18:45:00 -- 光说没用,实例来了! dim dqpz As New Filler DataTables("会计凭证总表").load
这个项目文件里面有许多代码,算是我的学习成果吧,大家也可以看看。 [此贴子已经被作者于2009-1-5 18:51:46编辑过]
|
||||
-- 作者:wcs -- 发布时间:2009/1/5 19:36:00 -- 自己顶一下,没有人试过上传的附件吗? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/1/5 21:14:00 -- 我在命令窗口测试下面的代码: 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.Fill() \'填充数据 第一次填充了23条记录,第二次没有填充。 |
||||
-- 作者:czy -- 发布时间:2009/1/5 21:51:00 -- 测试正常。 问题应该出在sql语句中,Select All * From [会计凭证] Where 账套编号 = 11 and 年 = 2008 表中并没有2008年的数据,填充并重载后,会计凭证表中没有一条记录,而Filler是以加载的数据来区别来源表和接收表中的数据是否有重复,在这种情况下Filler后load数据库中出现重复数据就不奇怪了。 |
||||
-- 作者:wcs -- 发布时间:2009/1/5 22:30:00 -- 以下是引用czy在2009-1-5 21:51:00的发言:
测试正常。 问题应该出在sql语句中,Select All * From [会计凭证] Where 账套编号 = 11 and 年 = 2008 表中并没有2008年的数据,填充并重载后,会计凭证表中没有一条记录,而Filler是以加载的数据来区别来源表和接收表中的数据是否有重复,在这种情况下Filler后load数据库中出现重复数据就不奇怪了。
DataTables("会计凭证总表").load
[此贴子已经被作者于2009-1-5 22:34:28编辑过]
|
||||
-- 作者:wcs -- 发布时间:2009/1/5 22:36:00 -- 以下是引用狐狸爸爸在2009-1-5 21:14:00的发言:
我在命令窗口测试下面的代码: 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.Fill() \'填充数据 第一次填充了23条记录,第二次没有填充。
[此贴子已经被作者于2009-1-5 22:36:38编辑过]
|
||||
-- 作者:czy -- 发布时间:2009/1/5 22:41:00 -- 切换到会计凭证表,管理项目,外部数据表,设置外部数据表,过滤/排序,将 账套编号 = 11 and 年 = 2008 改成:账套编号 = 11 and 年 = 2009 再试试填充加载。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/1/5 22:53:00 -- 排除现有内容,是和表中已经加载的数据比较,不是和后台的数据比较。 |
||||
-- 作者:wcs -- 发布时间:2009/1/5 22:54:00 -- 以下是引用狐狸爸爸在2009-1-5 22:53:00的发言:
排除现有内容,是和表中已经加载的数据比较,不是和后台的数据比较。 是的啊! |