你加一个事务就可以了 BEGIN TRAN --生成WS中业务员汇总销售 SELECT CREATE_BY, SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE/(1+TAX_RATE)) AS SIAMOUNT, SUM(QTY*CAST(AVG_COST AS MONEY)) AS SICOST, (SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE/(1+TAX_RATE)) -SUM(QTY*CAST(AVG_COST AS MONEY))) AS SINP FROM SI AS H ,SI_DETAIL AS D WHERE H.SI_NO=D.SI_NO AND DATE_CREATE BETWEEN @BEGINDATE AND @ENDDATE GROUP BY CREATE_BY--生成WSCH中业务员汇总销售 SELECT CREATE_BY, SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE) AS SIAMOUNT, SUM(QTY*CAST(AVG_COST AS MONEY)) AS SICOST, (SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE) -SUM(QTY*CAST(AVG_COST AS MONEY))) AS SINP FROM WSCH.DBO.SI AS H ,WSCH.DBO.SI_DETAIL AS D WHERE H.SI_NO=D.SI_NO AND DATE_CREATE BETWEEN @BEGINDATE AND @ENDDATE GROUP BY CREATE_BY COMMIT TRANSACTION
别忘记了格式:
服务器..数据库什么的,大概就这样,我以前试过,可以。
BEGIN TRAN
--生成WS中业务员汇总销售
SELECT CREATE_BY,
SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE/(1+TAX_RATE)) AS SIAMOUNT,
SUM(QTY*CAST(AVG_COST AS MONEY)) AS SICOST,
(SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE/(1+TAX_RATE)) -SUM(QTY*CAST(AVG_COST AS MONEY))) AS SINP
FROM SI AS H ,SI_DETAIL AS D
WHERE H.SI_NO=D.SI_NO AND DATE_CREATE BETWEEN @BEGINDATE AND @ENDDATE
GROUP BY CREATE_BY--生成WSCH中业务员汇总销售
SELECT CREATE_BY,
SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE) AS SIAMOUNT,
SUM(QTY*CAST(AVG_COST AS MONEY)) AS SICOST,
(SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE) -SUM(QTY*CAST(AVG_COST AS MONEY))) AS SINP
FROM WSCH.DBO.SI AS H ,WSCH.DBO.SI_DETAIL AS D
WHERE H.SI_NO=D.SI_NO AND DATE_CREATE BETWEEN @BEGINDATE AND @ENDDATE
GROUP BY CREATE_BY
COMMIT TRANSACTION
……
COMMIT TRANSACTION
……rallback
connA.begintrans '开始事务A
connB.begintrans '开始事务B
connA.execute " ..."
connB.execute " ..."
connA.committrans '提交事务A
connB.committrans '提交事务B
这是第一种方法
2、如果是在同一个服务器上多个数据库情况:
ConnA.BeginTrans
ConnA.Execute ...
ConnA.Execute ...
'切换数据库进行操作
ConnA.DefaultDataBase=你要去的数据库
ConnA.Execute ...
ConnA.Execute ...
'切换回原来的数据库
ConnA.DefaultDataBase=原来的数据库
ConnA.CommitTrans
3、不同服务器上的数据库
A:用分布式事务
B:用Sp_AddLinkServer用添加入本服务器,把它看做同一个服务器上的数据库就OK