|
Q : |
一个储存过程如何在VB里返回记录集? |
HashCode: |
CSDNMxuqi92188CSDNM、leimin、CSDNMtj_dns1134346 |
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'io_InOutDtl'
AND type = 'P')
DROP PROCEDURE io_InOutDtl
GO
CREATE PROCEDURE io_InOutDtl
@dDate1 datetime='2002-7-15',
@dDate2 datetime=null,
@cInvCode varchar(20)=null
AS
declare @fFirstQuantity float
declare @fFirstMoney float
declare @dDate3 datetime
declare @dDate4 datetime
declare @sql nvarchar(4000)
declare @wsql nvarchar(4000)
declare @fQuantity float
declare @fMoney float
--//初始化变量
select @fQuantity=0
select @fMoney=0
select @fFirstQuantity=0
select @fFirstMoney=0
--//
--//先得到过滤条件
if @dDate1 is not null
select @wsql=' and dDate>= '''+convert(nvarchar(100),@dDate1,121)+''' '
if @dDate2 is not null
select @wsql=@wsql+' and dDate<= '''+convert(nvarchar(100),@dDate2,121)+''' '
if @cInvCode is not null
select @wsql=@wsql+' and cVouchType= '''+@cInvCode+''' '
--//
IF object_id('tempdb.dbo.#tintmp') IS NOT NULL
DROP TABLE [dbo].[#tintmp]
IF object_id('tempdb.dbo.#tin') IS NOT NULL
DROP TABLE [dbo].[#tin]
CREATE TABLE #tintmp (
--AutoID int IDENTITY (1,1),
cVouchID Varchar(14),
cVouchType Varchar(2),
dDate Datetime,
cCVCode Nvarchar(50) DEFAULT '',
cInvCode Varchar(20),
cBatch Varchar(20),
fPrice float DEFAULT 0,
fFirstQuantity float DEFAULT 0,
fFirstMoney float DEFAULT 0,
fInitQuantity float DEFAULT 0,
fInitMoney float DEFAULT 0,
fInQuantity float DEFAULT 0,
fInMoney float DEFAULT 0,
fOutQuantity float DEFAULT 0,
fOutMoney float DEFAULT 0,
fRemainQuantity float DEFAULT 0,
fRemainMoney float DEFAULT 0
)
CREATE TABLE #tin (
AutoID int IDENTITY (1,1),
cVouchID Varchar(14),
cVouchType Varchar(2),
dDate Datetime,
cCVCode Nvarchar(50) DEFAULT '',
cInvCode Varchar(20),
cBatch Varchar(20),
fPrice float DEFAULT 0,
fFirstQuantity float DEFAULT 0,
fFirstMoney float DEFAULT 0,
fInitQuantity float DEFAULT 0,
fInitMoney float DEFAULT 0,
fInQuantity float DEFAULT 0,
fInMoney float DEFAULT 0,
fOutQuantity float DEFAULT 0,
fOutMoney float DEFAULT 0,
fRemainQuantity float DEFAULT 0,
fRemainMoney float DEFAULT 0
)
--//合并单据
Insert into #tintmp(cVouchID,cVouchType,dDate,cInvCode,cBatch,fPrice,fInitQuantity,fInitMoney)
Select cVouchID,cVouchType,dCheckDate as dDate,cInvCode,cBatch,fPrice
,fQuantity as fInitQuantity,fTotalMoney as fInitMoney
from InitStockVouch iv,InitStockVouchDetail ivd
where iv.cVouchID=ivd.MainID
insert into #tintmp(cVouchID,cVouchType,dDate,cInvCode,cBatch,fPrice,fInQuantity,fInMoney)
Select cVouchID,cVouchType,dVouchDate as dDate,cInvCode,cBatch,fPrice,fQuantity,pvd.fNotaxMoney
from PurInitVouch pv,PurInitVouchDetail pvd
where pv.cVouchID=pvd.MainID
insert into #tintmp(cVouchID,cVouchType,dDate,cInvCode,cBatch,fPrice,fOutQuantity,fOutMoney)
Select cVouchID,cVouchType,dVouchDate as dDate,cInvCode,cBatch,fPrice,fQuantity,fTotalMoney
from SaleInitVouch sv,SaleInitVouchDetail svd
where sv.cVouchID=svd.MainID
--//
--//搞上期结余
if DAY(@dDate1)<(select iEnd from AccPeriod where iMonth=MONTH(@dDate1))
begin
select @dDate3='2002-'+(select cast(iMonth as varchar(10))+'-'+cast(iEnd as varchar(10)) from AccPeriod where iMonth=(MONTH(@dDate1)-1))
select @dDate4=@dDate1
end
else
begin
select @dDate3='2002-'+(select cast(iMonth as varchar(10))+'-'+cast(iEnd as varchar(10)) from AccPeriod where iMonth=MONTH(@dDate1))
select @dDate4=@dDate1
end
select @fQuantity=fRemain from ct_BatchMonth where iMonth=MONTH(@dDate3) and cInvCode=''+@cInvCode+''
if @fQuantity is not null
select @fFirstQuantity=@fFirstQuantity+@fQuantity
select @fMoney=@fQuantity*fCostPrice from ct_CostPriceMonth where iMonth=MONTH(@dDate3)
if @fMoney is not null
select @fFirstMoney=@fFirstMoney+@fMoney
select @fQuantity=@fFirstQuantity+sum(fInitQuantity)+sum(fInQuantity)-sum(fOutQuantity)
from #tintmp
where dDate>@dDate3 and dDate<@dDate4 and cInvCode=''+@
---------------------------------------------------------------
set rs=con.execute "Exec io_InOutDtl "
---------------------------------------------------------------
pls try:
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "data source name", "userid", "password"
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cn
cmd.CommandText = "io_InOutDtl "
cmd.CommandType = adCmdStoredProc
'往command 对象中加参数
'定义存储过程有直接返回值,并且是个整数,省缺值是4
CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
'定义一个字符型输入参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@dDate1 ", adDBTimeStamp, adParaminput, , dDate1)
'定义一个整型输入参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@dDate2 ", adDBTimeStamp, adParamInput, , dDate2)
'定义一个整型输出参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@cInvCode ", advarChar, adParamInput, 20,oInvCode)
'运行存储过程,并得到返回记录集
Set adoRS = CmdSP.Execute
---------------------------------------------------------------
可以,不过需要斑竹帮忙,删除你的帖子,你的可用分就回去了,但是你的信誉分就减少5分.
需要帮忙的话可以发短消息或者在这里回复.
|
|