全部分了,大侠帮帮我!(100分)

  • 主题发起人 主题发起人 itman
  • 开始时间 开始时间
I

itman

Unregistered / Unconfirmed
GUEST, unregistred user!
做一个简单的物流管理,包括商品的入库,出库,库存量。整个流程想这样做,新到一商品进
行入库,入库字段有:商品编码、名称、数量、进贷价、序列号等,因考虑到以后按序列号查询
出库贷品的所有商品,所以设KEY字段为序列号,(例:入库联想同禧520W 3台显然这里商品代号和
名称相同,但序列号不同,输入记录时要输入分别输入3条记录 每条记录的数据为1 而不用联想
同禧520W 数量为3)每件商品入库前需在贷品基本库中输入商品的基本资料如:商品代码、名称、
拼间码、种类、单位等,其中还包括总库存量,入库商品时所有商品代码和名称从基本资料库中取
值1、在这里不知用什么办法组织总库存量较好,是用总入库存量减出库量还是用其它什么好的方法
请教各位高手帮助?2、输入入库单时我想一次性输入多条记录后形成一张入库单确认数据无误后
再把数据更新至主表,可不知怎么更新较好,要保证一次性全部无误的提交,如有错误一条记录也不
提交,重新修改后再提交,想用数据库事务可好像本地PARADOX数据表不支持数据库事务,不知你有什
么好的办法3、库存总量不知在输入入库单后就马上汇总汇总后写入基本数据表中行不行4、不知得
到库存总量的SQL语句怎么写,
肯求您的帮助,或给我讲一个更好的思路例如需要哪些表,各表之间的关系谢谢!
 
>>1、在这里不知用什么办法组织总库存量较好,是用总入库存量减出库量还是用其它什么好的方法
请教各位高手帮助?
可以用倒推法计算库存,这是比较常用的,但是要考虑损耗、盘赢、盘亏等等其他非正常
出库的情况。关键点应该是什么时候做库存结算,是每进出一批单子的同时更新库存呢?
还是每天日末做日结,或者周结、月结等等,这要看你的系统对库存跟踪的实时性要求
>>2、输入入库单时我想一次性输入多条记录后形成一张入库单确认数据无误后
再把数据更新至主表,可不知怎么更新较好,要保证一次性全部无误的提交,如有错误一条记录也不
提交,重新修改后再提交,想用数据库事务可好像本地PARADOX数据表不支持数据库事务,不知你有什
么好的办法
当然可以,控件本身就有批量更新的方法,比如ADOQUERY,LOCKTYPE=ltBatchOptimistic
CURSORTYPE=CTKEYSET,然后用UPDATECACHE,和CANCELCACHE等来批量更新和取消,任何
书里都有这个的,自己看看吧。
>>3、库存总量不知在输入入库单后就马上汇总汇总后写入基本数据表中行不行
这个问题和1一样,关键在于你的系统要求,实现是很简单的,不过要实时跟踪,系统
的负担肯定要比日结大。
>>4、不知得到库存总量的SQL语句怎么写,
老大,你连表结构都没有确定,叫别人怎么写呀,而且这种SQL语句应该是很基础的,
应该没有什么难度的呀。
>>肯求您的帮助,或给我讲一个更好的思路例如需要哪些表,各表之间的关系谢谢!
你大概是第一次做项目吧,数据库分析应该是最了解系统的人写,别人都不知道你的系统
要素是那些,凭空想出来的数据库结构,你也敢用?
 
头都大了
 
j_shen2000:
谢谢你j_shen2000,看来你非常了解我要做什么和我现在的水平,对于我以上提出的问题我
作以下解释,希望得到您的帮助。
>>1、 可以用倒推法计算库存,这是比较常用的,但是要考虑损耗、盘赢、盘亏等等其他非正常
出库的情况。关键点应该是什么时候做库存结算,是每进出一批单子的同时更新库存呢?
还是每天日末做日结,或者周结、月结等等,这要看你的系统对库存跟踪的实时性要求
》是的用倒推法,我想至于你所说的损耗、盘赢、盘亏,我想用一项人工输入这些数据输完后
用总库存加减损耗等数据来更新总库存量,不知这样行不行?
>>2、输入入库单时我想一次性输入多条记录后形成一张入库单确认数据无误后
再把数据更新至主表,可不知怎么更新较好,要保证一次性全部无误的提交,如有错误一条记录也不
提交,重新修改后再提交,想用数据库事务可好像本地PARADOX数据表不支持数据库事务,不知你有什
么好的办法
》我是这样想的,当用临时表更新主表时,我用的QUERY的FIELDBYNAME()对整个表做的遍历
对主表新增记录新增完后删除临时表的所有记录,以便下次再次输入入库单。我以前考虑的问题
是如果更新时的第N条记录更时出现错误,那么就要把更新前的数据回滚不然会出现重复入库的现象
用了数据库事务,可好像PARDOX本地表不支特数据库事务,不知用缓冲更新行否?
>>4、不知得到库存总量的SQL语句怎么写,
我是这样想的当向入库的主表提交记录时,(只能一条一条的提交,因为我的入库单是以序列号
进行入库,例如入库3台联想天禧电脑要这样入,虽然商品序号和商品名称相同,但为了以后查询和出库
保修查询的方便,以序列号一条条入库,例如这里要入库3次而非一次入库完成提交一条更新一下主库表(
不是入库主表的库存记录,想用UPDATE jxc set total={这里应写上主库程表中相应的记录的总库存加
入库的入库量〈《〈不知怎么获的主库存表中相应记录的总库存量》》》 where .........


 
1、可以,不过在权限设置上,必须设置盘点权限,并且必须要有痕迹记录,以确保
只有有足够权限的人员进行盘点,并且盘点过程有记录可查。盘点对于库存管理是十分
重要的,也是很容易出管理漏洞的地方,盘点记录必须详细,且不容许修改。
2、临时表没有必要,缓存更新基本功能和数据库事务是差不多的,试一试就明白了。
而且你的主表数据量估计有多大,如果十分惊人的话,不建议对主表做遍历,否则你
会气死的,对于所有实际项目,历史库是必须的,否则主库迟早要爆的。
3、你的表述还是太模糊了,我揣摩你的意思是不是,
主库表结构如下:
商品序号,TOTAL。。。
入库单表结构如下:
序列号,商品序号,入库数量。。。
如果这样的话,写入库单的同时不就可以同时更新两个表吗?
你还是把简单的表结构列一下吧。
 
TO:
j_shen2000
非常感谢你的再次帮助,我想您一定是骨灰级的人务了,真有学问。^_^
<<2、临时表没有必要,缓存更新基本功能和数据库事务是差不多的,试一试就明白了。
而且你的主表数据量估计有多大,如果十分惊人的话,不建议对主表做遍历,否则你
会气死的,对于所有实际项目,历史库是必须的,否则主库迟早要爆的。
: 我的临时表是用于输入单据的,缓存更新也需要一个表啊,主库表到是增加速度不是很快
只有新增加商品类型时才需要,到是入库主表入一件商品要增加一条记录。不明白你所说的
“历史库是必须的”是什么意思,关于做做遍历我想也可能不行,太多记录了,以前是没办法了
才那样做。
3、我的原意思如下:1、首先有一个商品总库包括所有入,出库的商品,所有商品的入,出
库的贷品名称和贷品编号的字段都必须从这里取数据,不然在入,出库时无法输入商品名称表结构如下:
hpkc :
贷品编码 贷品名称 拼音码 单位 库存上限 库存下限 出库价 加权价 总库存
2、然后入库:入库是这样做的,新建一FORM 在上放4个EDIT 和TABLE 分别用于输入入库日期、
单据号、业务员、备注等(入库日期和单号自动生成)然后放一DBGRID用来输入入库存的产品,DBGRID
连接的表为临时表TEMP (包括:贷品编码、拼音码、贷品名称、单位、供应商、数量、总额、入库日期、单据号、
业务员、备注)设DBGRID中只显示:贷品名称、单位、数量、供应商、总额等其中贷品名称为查找字段和
商品总库相连,贷品编码、拼音码。。。等查找字段一起写入此记录,当数据输入完以后点击OK BUTTON
后用UPDATE TEMP SET RQRQ='''+EDIT.TEXT+''' DJH.....(RQRQ,DJH是指入库日期单据号等(就是在EDIT中
输入的内容,因为所有记录的这些字段应都一样(这样做主要是为了以后方便查找此张单据)更新完TEMP的所有记录后然后写入主入库存表
(主入库表和TEMP结构完全一样只是把数据追加到此表而已,)想在此时同时更新主库存表的“总库存”,我这
样做的 temp.first total.last(主入库表的名字) while not temp.eof do begin total.append;
total.fieldbyname('贷品编码').value:=temp.fieldbyname('贷品编码').value.....
........
.....
UPDATE MAINKC(主库存表) SET ZKCL(总库存量表)={。。。。。。。不知这样该怎么写意思是把总库存表中商品编号相同的记录的总库存量变为
原总库存量+现入库数),不知这里怎么表达,


这就是我总个入库的思路,请您提出保贵见意和此时如何写上SQL语句(本地PARAODX表),不知这种结构行不行,谢谢!





 
1、在实际项目中用临时表也很普遍,不过不是因为更新的问题,通常是为了加快录单速度
,因为主入库单表数据量通常十分巨大,数据定位是很慢的(特别是有索引的情况下),
用一个临时表可以防止录入时界面僵死,而将较慢的插入工作放在最后,对客户来说是比较
友好的。你非要用临时表,那就用吧。
所谓历史库,就是数据备份,比如你入库单一个月的数据已经有几十万条,不出半年,
你的程序对这个入库单表的操作都将象老牛拉破车一样,让人无法忍受,因此你必须对那些
数据量庞大的表进行备份、清理,同时必须要保证能够查询这些历史记录。
2、update test2
set value2=value2+(select sum(value1) from test1 where test1.key1='1')
where test2.key2='1'
 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
850
SUNSTONE的Delphi笔记
S
S
回复
0
查看
782
SUNSTONE的Delphi笔记
S
后退
顶部