以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何适应基础数据变更带来的影响呢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11362)

--  作者:成都老王
--  发布时间:2011/7/19 17:34:00
--  如何适应基础数据变更带来的影响呢?

数据库应用中,如果遇到基础数据变更,是的依赖于该数据的其它历史记录统计不正确,如何处理这种情况呢?

 

1.比如说:数据库中有2个表《人员信息表》《入库表》。

《人员表》中,ID=1,Name=张三。

《入库表》中,存在3月份办理的某张入库单,其经办人ID=1(打印的经办人姓名=张三)。

4月份时,修改ID=1的name=张山。

结果3月份的入库单经办人也变成“张山”而非“张三”。

-----不允许出现此情况。

 

[此贴子已经被作者于2011-7-19 18:07:38编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/7/19 17:37:00
--  
没看懂你的问题
--  作者:成都老王
--  发布时间:2011/7/19 18:10:00
--  

2.《价格表》中,某种物料价格4元,产生了若干张销售记录。

调价后,价格为5元。

汇总销售记录时,4元的历史记录都变成的5元,就不正确了。


--  作者:狐狸爸爸
--  发布时间:2011/7/19 18:17:00
--  

这种情况不应该用表达式列,应该用数据列和代码。

处理方法,参考:

http://www.foxtable.net/help/topics/1451.htm


--  作者:blackzhu
--  发布时间:2011/7/20 8:13:00
--  
以下是引用成都老王在2011-7-19 18:10:00的发言:

2.《价格表》中,某种物料价格4元,产生了若干张销售记录。

调价后,价格为5元。

汇总销售记录时,4元的历史记录都变成的5元,就不正确了。



  如果用代码不去刷新就没有问题了,如果用表达式是即时更新的.所以我的赞成做法要么第一个,要么价格表里面的数据只要是新价格就新加入一个数据,调用这个新数据就万事大吉了.


--  作者:kgd815
--  发布时间:2011/7/20 9:32:00
--  
修改ID=1的name=张山

对于改变名称不改变编号的基础数据记录,在其它表使用中,就不能用动态引用的方法,要同时建立 ID   name 两个字段,看样子好像数据冗余,只有在新建的时候将基础数据的两个字段同时导入,这样就不会出现上面的问题,

价格也是一样,产品表上的价格只是作为新建时的数据引用,销售表上要同时有价格列,不能用公式列,

--  作者:xl
--  发布时间:2011/7/20 9:39:00
--  
是楼主把问题整得复杂化了,有月份,增加“自定编号”,就不会出现1楼情况。