Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]请求一个关于例子:转仓的过程

whyg519  发表于:2010-06-16 20:55:10  
复制

请求一个关于例子:转仓的过程。转仓关系到出仓和入仓的过程,请问有什么好的方法实现,只要输入一次就可以同时在出库表和入库表增加记录?增加记录应该不是什么难题,最麻烦如何实现修改的功能?

还请教一种拆单的例子:如一张销售单的价格一般只有一个,在特殊的情况下,销售单有二个价格,那么就得把这张单拆开……如何实现较好呢?最好能达到方便操作?

 

Top
钱玉炜 发表于:2010-06-17 12:54:25

修改的话要用非绑定控件的方法来实现,通过主键字段从出仓和入仓表中取得对应数据,写入到修改窗体的控件上面,修改完以后更新对应的表中字段值为修改窗体上对应控件的值



黎红军 发表于:2010-06-17 21:13:04

可以用插入语句实现一对出入库。

调拨窗体只需要一行记录,字段设置为必需的物料号,调出库,调入库,调拨数量,等相关信息。然后依据这个记录相应生成一条出库记录,一条入库记录。

问题2,肯定是需要分拆记录的。如果你这个情况比较多的话,建议做一个标准分拆的功能。也就是复制新增一条选择的相应记录行,把数量进行分拆,然后填写不一致的单价等就可以了。



煮江品茶 发表于:2010-06-18 11:47:08

钱干部所论合理一些。黎干部所论似需另设一调拨表,此法虽也行的通,但有些冗余。不过钱干部所论中从出仓表和入仓表取得数据所述似有不妥,应为向两表写入出入仓数据。

 



西南风王 发表于:2010-06-19 11:03:26

产品出仓入仓可以通过调拨的方式来处理,需要一个调拨明细表,调拨单单头表和一个库存表,调拨明细表含有字段:货号,单号,单价,数量,由仓号,至仓号;库存表含有的字段:货号,单价,数量,仓号;调拨单单头表含有的字段:单号,从仓号,至仓号等,实现方法:先判断库存表里边有无调拨表里边对应单号的出入库数据,若有则更新对应库存,若无则需插入调拨表中对应单号的不存在于库存表中的数据,再更新对应仓号的库存.下面是我做系统时写的一段代码:TXNRACK是库存表,STKLEDGER是调拨明细表,STKMOVE是调拨单的单头表

DoCmd.RunSQL "insert into txnrack(plucode,warehouse,price) select plucode,torack,price from stkledger where not exists(select * from txnrack where txnrack.plucode=stkledger.plucode and txnrack.warehouse=stkledger.torack)  and number='" & Me.NUMBER & "'"
DoCmd.RunSQL "insert into txnrack(plucode,warehouse,price) select plucode,fromrack,price from stkledger where not exists(select * from txnrack where txnrack.plucode=stkledger.plucode and txnrack.warehouse=stkledger.fromrack)  and number='" & Me.NUMBER & "'"

DoCmd.RunSQL "update stkledger,stkmove set stkledger.txndate=stkmove.txndate where stkmove.number=stkledger.number"
DoCmd.RunSQL "UPDATE STKLEDGER,STKMOVE SET STKLEDGER.TORACK=STKMOVE.TW,STKLEDGER.FROMRACK=STKMOVE.FW WHERE STKMOVE.NUMBER=STKLEDGER.NUMBER"
DoCmd.RunSQL "update txnrack,stkledger set txnrack.qty=nz(txnrack.qty,0)+stkledger.qty where txnrack.plucode=stkledger.plucode and txnrack.warehouse=stkledger.torack and stkledger.number='" & Me.NUMBER & "'"
DoCmd.RunSQL "update txnrack,stkledger set txnrack.qty=nz(txnrack.qty,0)-stkledger.qty where txnrack.plucode=stkledger.plucode and txnrack.warehouse=stkledger.fromrack  and stkledger.number='" & Me.NUMBER & "'"
DoCmd.RunSQL "update stkledger set apv=1 where number='" & Me.NUMBER & "'"



放弃 发表于:2010-07-04 19:17:37

可以建一个临时“转仓主表”和“转仓明细表”,再建一个转仓窗体并包含子窗体,其记录源分别为“转仓主表”和“转仓明细表”,

然后在窗体中设一个“转仓”按钮,用ADO方法写上两个添加记录的代码,便能同时在出库表和入库表增加记录了。充分利用了带有循环语句的ADO代码,这样处理数据的思路比较清晰灵活性大。但要注意的是代码的最后必须写上删除两个临时表中记录的语句,以及对窗体的刷新语句。供参考吧。



总记录:5篇  页次:1/1 9 1 :