当调拨,销售,购进发生时,库存表的数量要同时改变.当购进的编码,库存表中没有时,则插入编码,库存表中有时,则更新数量.在存储过程中怎样判断?sql语句怎么写?在进销存中还有其他的方法和思路?mssql7.0

dqj 2000-06-16 09:21:00
库存表:编码 门市 数量
购进表:日期 门市 编码 数量 单价
销售表:日期 门市 编码 数量 单价
调拨表:日期 调入门市 调出门市 编码 数量
当调拨,销售,购进发生时,库存表的数量要同
时改变.当购进的编码,库存表中没有时,则插
入编码,库存表中有时,则更新数量.在存储过
程中怎样判断?sql语句怎么写?在进销存中还
有其他的方法和思路?mssql7.0
...全文
526 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dqj 2000-06-21
  • 打赏
  • 举报
回复
十分感谢tuanghuan兄,不厌其烦的邦助,使我终于弄懂了触发器.以前看书时触发器一章总是一跳而过,以为触发器只是保持完整性之用,未料有如此强大的功能.在我这个例子中我决定还是用存储过程动态取得库存.其实这个存储过程也是从tuanghuan兄处学的.
select 编码, 门市,sum(数量) "数量"
from (select 编码, 门市,数量
from b购进
union all
select 编码, 调入方,数量
from b调拨
union all
select 编码, 调出方,-数量
from b调拨
union all
select 编码, 门市,-数量
from b销售) #temp
group by 编码, 门市
有朋友说这样联合三个表,在记录很多时,调用过程又主要是通过ras,可能对速度,性能有较大影响,所以才考虑用库存表,及时更新.但使用触发器出现添加记录时会出现写入冲突,提示复制到剪帖板,我只有关闭窗体,再打开,才能下一条记录输入.这样肯定无法使用.既然触发器与前端无关,这个问题应是access造成,而高手一般不用access,所以这类问题一般不好咨询,而且我是用access2000的adp,资料很少.希望有access的同好单独交流.因为我只是普通用户,也不想再学其它语言,毕竟我不是程序员.
dqj 2000-06-19
  • 打赏
  • 举报
回复
上面的问题在temp前加#
我试了触发器,非常好,能解决我的问题.
我的前端access,只是在添加记录时会出现写入冲突,提示复制到剪帖板,我只有关闭窗体,再打开,才能下一条记录输入.
而在更新时也有写入冲突,然后复复制到剪帖板.
如果添加库存表中没有的门市或编码,提示"缺少或不正确的键列信息,更新影响到过多的行"
如果删除记录,access会提示"其他用户或应用程序已经删除了该记录或更改了其主键的值".
我检查了库存表数量是正确的.后面三项提示可以不理会,第一坝添加记录时会出现写入冲突,提示复制到剪帖板,我只有关闭窗体,再打开,才能下一条记录输入.太影响录入效力
怎样解决呢?
tanghuan 2000-06-19
  • 打赏
  • 举报
回复
数据库触发器与前台无关,你还需要添加,删除触发器

我忘了你使用的是7.0,temp 和 updt 前加as 给子查询取别名
dqj 2000-06-19
  • 打赏
  • 举报
回复
我要怎么做才能免除上面的问题?为什么还要添加,删除触发器?该如何做?
还有,通过购进表输入,库存数量是加,通过销售表输入库存数量是减。我将销售表的触发器的数量*-1,这对不对?insert into b库存(编码, 门市, 数量)
select 编码 ,门市,0*-1
from inserted
where not exists(
select *
from b库存
where b库存.编码 =inserted.编码 and
b库存.门市 =inserted.门市)
update b库存 set 数量=b库存.数量+updt.数量*-1
from b库存 ,(
select 编码, 门市,sum(数量) "数量"
from (select 编码, 门市,数量
from inserted
union all
select 编码, 门市,-数量
from deleted )as #temp
group by 编码, 门市
) as updt
where b库存.编码 =updt.编码 and
b库存.门市 =updt.门市
但是,调拨表不一样:调拨表:日期 调入门市 调出门市 编码 数量
调入门市 ,库存数量加,调出门市,库存数量减,触发器该如何做?
我第一次接触触发器,太多不懂,望指教。


dqj 2000-06-18
  • 打赏
  • 举报
回复
老兄,保存触发器时 提示 ADO错误:incorrect syntax near the keyword "temp"
盼指教.
tanghuan 2000-06-17
  • 打赏
  • 举报
回复
我写了一个修改触发器,希望对你有帮助
tanghuan 2000-06-17
  • 打赏
  • 举报
回复
....
insert into 库存表(编码, 门市, 数量)
select 编码 ,门市 ,0
from inserted
where not exists(
select *
from 库存表
where 库存表.编码 =inserted.编码 and
库存表.门市 =inserted.门市)
update 库存表 set 数量=数量+updt.数量
from 库存表 ,(
select 编码, 门市,sum(数量) "数量"
from (select 编码, 门市,数量
from inserted
union all
select 编码, 门市,-数量
from deleted ) temp
group by 编码, 门市
) updt
where 库存表.编码 =updt.编码 and
库存表.门市 =updt.门市
....
1,项目功能:(1)基本资料维护:此模块包括员工资料维护,商品资料维护,客户资料维护。员工资料维护主要包括员工的信息添加以及员工的信息修改删除。商品资料维护包括商品信息的添加修改与删除。客户资料维护包括客户的信息添加修改与删除。供应商资料维护包括供应商信息的添加修改与删除。(2)采购管理:此模块包括采购订单与采购退货两部分。采购订单包括单据编号、供应商(弹窗选择)、业务员(弹窗选择、默认当前用户)、签单日期、优惠、优惠后金额、单据状态、备注、扩展属性、制单人、制单日期、数量合计、金额合计。采购退货单内容包括单据编号、供应商、业务员、退货日期(默认取当前日期)、备注、单据扩展属性、制单人、制单日期、确认人、确认日期、作废人、作废日期、数量合计、金额合计。(3)销售管理:此模块主要是销售订单、销售退货单两部分组成。销售订单主要包括单据编号、客户、业务员、签单日期、备注、优惠、制单人、制单日期、数量合计与金额合计。销售退货单,内容包括单据编号、客户、业务员、仓库、退货日期、来源销售出库单、备注、制单人、制单日期、确认人、确认日期、作废人、作废日期、数量合计、金额合计。(4)库存管理:此模块主要包括库存盘点与库存调拨。为防止库存数量与账面数量不符,所以要定期进行库存清查,了解店内盈亏情况。库存调拨内容包括单据编号、移出仓库、移入仓库、业务员、调拨间、状态、备注、制单人、制单日期、确认人、确认日期、作废人、作废日期、数量合计、金额合计。(5)系统维护:此模块主要包括管理用户权限、维护用户资料与修改密码三部分。管理员可以通过维护用户资料对用户进行添加修改与删除操作。(6)报管理:通过报管理来反映卖场的经营成果。本系统通过手机采购统计、手机销售统计、手机库存统计、手机销售排行四个部分。报设计可以支持按需要(包括统计间、商品分类、相关单据等)进行统计并支持打印。      适合做毕业设计参考项目。2,涉及技术:SSM框架,Tomcat3,开发环境:IDEA,MySQL数据库4,讲解方式:从环境安装,项目搭建,以及项目介绍等进行讲解5,包含资料:项目源码(含数据库文件),环境安装包,项目文档。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧