寻数据存储的解决方案,高手请进来,在线等,如解决立即给分
我需要用下面三张表建立一个数据存储,在Powerbuilder中调用,调用时传递过来一个调拨出库单编号,实现这样的功能,根据调拨出库单的编号在调拨出库单明细表中检索出这张出库单上的所有药品项,然后在 药品库存 表上把对应库房内的这种药品都检索出来,按照批次从小到大的顺序去扣库存数量,直到把调拨单上的数量扣完。因为同一库房同一药品如果是不同批号我是分开记录的,为了实现按照批次的先进先出。批次小的先出库,这个批次实际录入时会强制为060528这样的字样,其实就是一个日期拉。(所有库房的库存都放在这张库存表里,所以有库房这个数据项)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[药品库存]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[药品库存]
GO
CREATE TABLE [dbo].[药品库存] (
[编号] [int] IDENTITY (1, 1) NOT NULL ,
[药品编号] [int] NULL ,
[名称] [varchar] (150) COLLATE Chinese_PRC_CI_AS NULL ,
[批号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[效期] [smalldatetime] NULL ,
[库存数量] [decimal](18, 2) NULL ,
[单位] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[库房] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[库存金额] [decimal](26, 2) NULL
) ON [PRIMARY]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[调拨出库单主单]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[调拨出库单主单]
GO
CREATE TABLE [dbo].[调拨出库单主单] (
[调拨单编号] [varchar] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[日期] [smalldatetime] NULL ,
[源库房] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[目标库房] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[制单人] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[审核状态] [bit] NULL ,
[金额] [decimal](18, 2) NULL
) ON [PRIMARY]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[调拨出库单明细]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[调拨出库单明细]
GO
CREATE TABLE [dbo].[调拨出库单明细] (
[编号] [int] IDENTITY (1, 1) NOT NULL ,
[调拨单编号] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
[药品编号] [int] NULL ,
[调拨数量] [decimal](12, 2) NULL ,
[单位] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[出库单价] [decimal](12, 2) NULL ,
[金额] [decimal](26, 2) NULL
) ON [PRIMARY]
GO