数据库用Access2000,用Ado连接.
主表(inStore) 入库单
Inid,indate,storeid,Subtotal
从表(inStoreMx) 入库明细
inid,Goodsid,unit,uprice,Quantyty库存表(Storage)
storeid,goodsid,quantity本人刚学,编程不知怎么做.最好有源代码,分不够可++.
解决方案 »
- 请各个人士怎么样在delphi7中实现事件共享的操作?
- 请教一个简单问题,如何让数据库中的字符型的字母自动增加,具体请进来看.
- adoquery抓数据出来显示在dbgrid里不能改?为何?
- 用java做中间件,delphi做客户端,大数据量怎么传输比较好??
- 怎么能得到adoquery的查询结果呀?谢谢
- PERFORM()函数在这种状态下是不是就没用了?
- ★★★★★★★★多个EDIT共用一个EDIT的事件的问题?★★★★★★★★
- 报表
- 哪位高手把下面的C代码转换为delphi
- 请问索引是什么?怎样建立的?
- delphi的报表问题 (急急急,线上等待)
- 怎样才能使DBGRIDEH增加N条记录后,一次性更新到数据库?
1、首先建立关于主表的查询。
2、将主表的查询与dbgrid连接起来。(只列出了一种方式。你可与多种数据感知控件联系)
3、新增从表的查询,但要带上参数如inid=:主表的当前inid.
4、在datasource的ondatachange事件中,带参数打开从表查询。如
childquery.close;
childquery.parambyname('inid').value:=...;
childquery.prepare:=true;
childquery.open();
此时查出的记录就是与主表相关的记录。
5、删除从表的记录好办,你直接删除就可以了,删除主表的记录时,要注意将数据库的(以mssql2000为例)外键的级联删除设定为真,或你自己用delete * from childtable where inid=@inid也可以。删除完后refresh.
6、追加时将childquery的inid设为主表当前inid的值,并禁止用户修改。其余项用户自行录入。
之間用Inid關聯不就好了﹐我看不出來有什么難的。
from 入库单 a,入库明细 b}
APPEND ({select * from 库存表} AS cgqdxm
RELATE goodsid TO goodsid)
记着改你的连接为datashape
delphi带有具体的例子,我就不多写了
to fontain: shape是什么啊?Delphi6中是哪个例子.
以下是可行的方案,注意关键点:
1.注意不要用从表的Datasource进行主从表同步,而在主表也就是入库单的MasterQuery的AfterScroll中,进行从表刷新,具体的原因你做这个例子的时候就会明白。
procedure TFrm_Mtin.MasterQueryAfterScroll(DataSet: TDataSet);
begin
inherited;
//保持主从表同步
DetailQuery.Parameters.ParamByName('mti_no').Value :=
MasterQuery.fieldbyname('mti_no').Value; //假设mti_no为入库单编号
if DetailQuery.Active then
begin
DetailQuery.Close;
DetailQuery.Open;
end;
end;
2.从表的更新方式改为批量更新。
3.主表的NewRecord事件中,给入库单编号赋值(如果不是自动增长的话)
4.从表的NewRecord事件中把入库单的编号等于主表的入库单编号(要求从表的入库单编号不能是自动增长类型)
5.在保存按钮中MasterQuery.post,然后在主表的Post事件中对从表的数据有效性进行判断,如果在第3步中,主表的ID不是自动形成的话,你还要取最大值加一形成入库单编号,并遍历从表进行入库单编号的修改,如果符合要求在进行DetailQuery.updatebatch(),此时最后用事物进行处理。
里面还有一些细节问题,你应该可以搞定,有问题的话就留言吧。
那就在这个事务中进行库存增加操作吧。另:我以前也比较爱存储当前库存,这样的话就可以得到某一时间的库存是多少,因为什么而发生变化的。在实际的引用中发现,还是通过使用的时候查询汇总要方便些,这些都是个人的习惯供参考。
2.这里面其实有漏洞的,在BeforePost中启动的时候只是一个事务,在该事件中如果你没有abort,则系统会提交到数据库,但如果你违反乐数据库的规则,照样提交失败,而你在Beforepost事件中的事务却保存入了数据库。所以我让你在Beforepost一定要进行字段的有效性判断,如不能为空的字段是否为空。
3.我的全部是查询出来的(对库存变化的细节要求不严格的需求)。速度慢你可以队每月的数据进行汇总存到一个字段,以后就不用在进行整个月的汇总直接用这个数值就可以了。不过我觉得数据库查询速度不是问题,关键在于数据库的优化,如果索引等对速度的影响更直接。----------------------------------------------------------------
原贴内容:
hhytsoft(雨中独行) 你好!
若主从表是新增还比较好在事物中更新库存,若是修改我就不知如何下手了.这样判断
明细记录的入库数量是否变化,还是删除,还是材料发生了改变. *******
如果在从表的更新中出现错误,就会导致数据的处理错误,库存增加了,而入库材料没有增加。
*****
上面是你说的,我就来明白了,不是在同一个事物中吗,如果出错不会取消整个事物的更
新吗,怎么又不会呢?还有不做库存表,若果软件上红线一两年数据查询汇总要很长时间的.你是不是有做一个库存期初表,再利用什么月节帐反上月的进出数据汇总来得到月初库
存? 还是其它方法?