我想在數據庫編寫一個這樣功能的存儲過程:
在采購表單tPurchaseOrder中有幾個字段:Order_courset(客戶),Order_dec(規格),Order_pric(單價)
在入庫表單tPOInComing字段中有Coming_courset(客戶),Coming_dec(規格),Coming_pric(單價)
在財務表單tCoumony字段中有Coumony_courset(客戶),Coumony_dec(規格),Coumony_pric(單價),
在DELPHI中有一個窗口,用來輸入某客戶的規格指定產品單價,同時改變采購表單,入庫表單中為空的單價(因考慮單價有變動,已采購付款的單價不需修改)和總價。
請給出這個功能的存儲過程,以及在DELPHI中用語句調用這個存儲過程的參數代碼,在DELPHI中ADOStoredProc與數據庫的連接都已成功,只需編寫代碼。如果分數不夠還可再加。
在采購表單tPurchaseOrder中有幾個字段:Order_courset(客戶),Order_dec(規格),Order_pric(單價)
在入庫表單tPOInComing字段中有Coming_courset(客戶),Coming_dec(規格),Coming_pric(單價)
在財務表單tCoumony字段中有Coumony_courset(客戶),Coumony_dec(規格),Coumony_pric(單價),
在DELPHI中有一個窗口,用來輸入某客戶的規格指定產品單價,同時改變采購表單,入庫表單中為空的單價(因考慮單價有變動,已采購付款的單價不需修改)和總價。
請給出這個功能的存儲過程,以及在DELPHI中用語句調用這個存儲過程的參數代碼,在DELPHI中ADOStoredProc與數據庫的連接都已成功,只需編寫代碼。如果分數不夠還可再加。
解决方案 »
- d5 怎样吧form和unit分开
- 如何设置无标题form空白处可以拖动窗体?
- 请问我这个HOOK可以挂住ws2_32.dll的Recv函数,但怎么样才能保存下他的参数呢?我是菜鸟
- 我用delphi开发时总有一个怪现象,不知道是不是IDE出了问题
- 又一个webbrowser问题,愿意给能解决的大侠送400分,帮我UP也一定给分
- listview如果多选,如何取选中的项?
- 用什么方法返回指定目录下的所有目录和文件?
- delphi如何将其它程序界面中的GRID表格中的数据取得或者导出?
- 如何检测A驱动器是否准备好?
- 怎样实现用鼠标将一个任意文件拖入程序窗体再放开后,执行一定操作,比如获得该文件的路径及名称
- coolcontrols version3.04
- 如何得到由CreateProcess打开的外部应用程序的窗口句柄
@Order_courset varchar(50),@Order_dec varchar(50),@Order_pric varchar(50)
AS
update tPurchaseOrder set Order_pric=@Order_pric where Order_courset=@Order_courset and Order_dec=@Order_dec update tPOInComing set Coming_pric=@Order_pric where Coming_courset=@Order_courset and Coming_dec=@Order_dec and Coming is not null
GO
ALTER PROCEDURE SMSP_EditStockPrice
@Storage01 integer ,/*修改的入库清单编号*/
@CurPrice numeric(15,6) , /*修改后的入库商品的入库单价*/
@ReturnInfo varchar(100) OUTPUT /*返回信息*/
AS
DECLARE
@InStoreOdd01 varchar(20), /*对应的入库单编号*/
@SumInOdd01 varchar(20), /*汇总入库单编号*/
@Goods01 varchar(30), /*商品编号*/
@Goods02 varchar(30), /*商品名称*/
@StoreNum numeric(11,2), /*当前结存库存量*/
@CurAverPrice numeric(15,6), /*当前移动均价*/
@StorageNum numeric(11,2), /*入库清单的入库数量*/
@StoragePrice numeric(15,6), /*入库清单的暂估入库价格*/
@NewAverPrice numeric(15,6) /*新的移动均价*/
/*更新商品属性中的移动均价*/
/*新的商品移动均价=结存库存量×当前移动均价+调整入库商品的入库数量×(发票入库单价-暂估入库单价)/结存库存量*/
/*注意结存数为0不能修改入库单价*/ /*根据入库清单编号查找商品编号,根据商品编号查询该商品的当前结存数,如果为0 退出*/
SELECT @Goods01=Goods01,@StoragePrice=Storage05,@StorageNum=Storage04,@InStoreOdd01=InStoreOdd01 --入库商品编号、单价、数量
FROM Storage
WHERE Storage01=@Storage01 SELECT @Goods02=Goods02,@CurAverPrice=Goods22 --商品名称、移动单价
FROM Goods
WHERE Goods01=@Goods01 SELECT @StoreNum=SUM(Storage12)
FROM Storage
WHERE Goods01=@Goods01
AND Storage12>0 IF (@StoreNum IS NULL) OR (@StoreNum=0)
BEGIN
SET @ReturnInfo='商品:<'+@Goods02+'>,由于当前库存的结存数量为0,无法分摊因调整入库单价造成的差额,不能调价!'
RETURN
END
SET @NewAverPrice=(@StoreNum*ISNULL(@CurAverPrice,0)+@StorageNum*(@CurPrice-@StoragePrice))/@StoreNum /*修改商品的移动均价*/
UPDATE Goods SET Goods22=@NewAverPrice
WHERE Goods01=@Goods01 /*修改商品入库单价*/
UPDATE Storage SET Storage05= @CurPrice
WHERE Storage01=@Storage01
/*修改商品入库单入库金额*/
UPDATE InStoreOdd SET InStoreOdd05=InStoreOdd05+@StorageNum*(@CurPrice-@StoragePrice)
WHERE InStoreOdd01=@InStoreOdd01
/*如果入库单已经汇总到汇总入库单中,更新汇总入库单金额*/
SELECT @SumInOdd01=InStoreOdd17
FROM InStoreOdd
WHERE InStoreOdd01=@InStoreOdd01
IF ISNULL(@SumInOdd01,'')<>''
BEGIN
UPDATE SumInOdd SET SumInOdd04=SumInOdd04+@StorageNum*(@CurPrice-@StoragePrice)
WHERE SumInOdd01=@SumInOdd01
END
SET @ReturnInfo='成功调整入库单价!已修改入库单价、移动均价、入库单金额、汇总入库单金额。'/*--------------------------------*/
GO
with ADOStoreProc1 do
begin
Parameters.ParamByName('@Order_courset').value:=edtcousset.text;
Parameters.ParamByName('@Order_dec').value:=edtdec.text;
Prepared:true;
end;
[email protected]
SP_AutoSetSumInOdd.Parameters.ParamByName('@EndDate').Value := frmSetDateTime.C_Date;
SP_AutoSetSumInOdd.Parameters.ParamByName('@UserName').Value :=frmLogin.sUserName+'['+frmLogin.sUserID+']';
SP_AutoSetSumInOdd.ExecProc;
ShowMessage(SP_AutoSetSumInOdd.Parameters.ParamByName('@ReturnInfo').Value);
with ADOStoreProc1 do
begin
Parameters.ParamByName('@Order_courset').value:=edtcousset.text;
Parameters.ParamByName('@Order_dec').value:=edtdec.text;
Prepared:true;
end;
ADOStoreProc1是我在ADO的存储过程,具體要怎樣修改才能執行。謝謝你的支持!!