求救高手们!高手们请进!(50分)

  • 主题发起人 litterbug
  • 开始时间
L

litterbug

Unregistered / Unconfirmed
GUEST, unregistred user!
建这样一个库,含字段:

工程名称 单位 单价 数量 日期

记录1 土方 方 100 1000 2001-5-12
记录2 石方 方 50 2000 2001-5-12
。。。。。
这个库记录每个月需要输入一次,一年就有12条单价和数量的值,但是工程名称是固定的(300条),也就是说它不需要变动,每个月要变动的只是单价和数量,我现在要实现打印,把所有的记录值打印出来,我想的是做一个大表,把这些记录全部备份进去,但是因为它是一个工程,什么时候能完工是不能预料的,
如,这个工程2年1个月(共25个月)完成,我就需要把大表做成:

工程名称 单位 1月单价 1月数量 2月单价 2月数量。。。25月单价 25月数量
土方 方 100 1000 200 1200 50 1000

我想这个方法是不能实现了,哪位老兄能帮助我?

如果有可行的方法,请再次留言或者电邮(litterbug@263.net)
 
老大,你又没有学过 数据库?

工程名称 单位 月份 单价 数量
土方 方 1月 100 1000
。。。
。。。
。。。

唉,先看看基础的 数据库 知识吧
 
难道是我表述有问题?
还是你理解有问题?哎呀,求解?
 
如果照你所说

工程名称 单位 月份 单价 数量
土方 方 1月 100 1000
2
3
4
这只是代表工程名称里300多条记录的一条就需要这么多的记录保存,那么1年总共要12*300
条记录,2年要24*300条
 
我本来想,一条记录对应一个表,这个表结构是:

月份 单价 数量

但是因为库中有300条固定记录,所以要建300多个表,不现实!
怎么办?
 
你还是动态生成每个月的数据好,表还是原来的表,字段一样
((工程名称 单位 单价 数量

土方 方 100 1000
石方 方 50 2000))
每个月生成一张表,根据表名来分出是哪个月
就象财务上每个月要更新会计月一样,你每个月初可以新建一张表
一年只有12张表,至于每张表几条记录并没什么(才300条吗),
不过注意备份,数据库建时空间大一点。
如:gcjhtable_1999_01
gcjhtable_1999_02
gcjhtable_2000_12
SQL 中就有语句create table来动态建表吧
 
如果是动态建立表的话,当然非常好!但是每一个季度要打印和统计一次全部记录,我怎么
提取动态表?还有就是我按时间查询怎么实现?
 
我觉得还是lha的方法时正确的。
 
to litterbug:
建的表又不是临时表,不是那种只在程序运行十加在内存的表。
是CREATE TABLE不是CREATE #TABLE
这样建的表只是每个月建一张而以,在后台的SERVER上是存在的,
就象把每个月的数据放在一张表上,
和其他你在建库后建的表是一个意思的。
所以打印和统计和查询都一样做呀!
 
我看还是在日期这个字段上下下工夫。通过日期来进行判断
,以生成新的记录。
另外:LHA的建议不错。对你的这段话有些迷糊:

”这只是代表工程名称里300多条记录的一条就需要这么多的记录保存,那么1年总共要12*300
条记录,2年要24*300条“
只是对数据库加个字段,怎么会多加记录呢!
可能我的理解有误!
 
如果你是在ACCESS中实现的话就很简单了,在最上面的表中输入数据后,你可以建两个交叉
表查询,分别是生成数量和单价,再把这两个交叉生成一个查询:
//生成数量的交叉表查询
TRANSFORM Sum(数量) AS 数量
SELECT 工程名称, 单位
FROM 表
GROUP BY 工程名称, 单位
PIVOT Format([日期],"mmm");
//生成单位的交叉表查询,只要把上面的查询中的“数量”改成“单价”就可以了
然后用这个查询生成一个查询,这就很简单了,不用我解释。
这样,你就不用去建什么几百个表,多少多少个记录了。
 
这样可能好些,好扩展;

工程名称表

名称编号<唯一> 工程名称 备注
001 土方 <Bolb>
002 石方 <Bolb>
003 ... <...>

工程造价表<名称可自己定>

造价编号 名称编号<工程表> 数量 单位 单价 日期 备注
1001 001 100 方 1000 2001-5-12
1002 001 50 方 2000 2001-5-12
1003 ...

这样也可以在把那个造价编号改成以年月形式在查询时就很好做了,2001-05 =200105

 
接受答案了.
 

Similar threads

顶部