SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/***********************************************
得到单据的内部单号
日期:2002.06.10
***********************************************/
ALTER PROCEDURE pGetInNumber
@BillType nvarchar(50), --单据类型
@InNumber int output --返回的内部单号
AS
begindeclare @NowNO int
declare @ErrorMsg nvarchar(200)Set NoCount On
Begin Tran
--设定延时
SET LOCK_TIMEOUT 10000--取当前序号
Select @NowNO=fInNumber from tBillType with(xLock) where fBillName=@BillType
if @@Error<>0
begin
Set @ErrorMsg='数据被锁定,请求超时!'
Goto Failed
end
Set @NowNo=@NowNo+1
--更新当前序列号
update tBillType set fInNumber=@NowNO where fBillName=@BillType
if @@Error<>0
begin
Set @ErrorMsg='更新内部序列号失败!'
Goto Failed
endSet @InNumber=@NowNo
Goto SucceedFailed:
RaisError(@ErrorMsg,16,1)
Rollback Tran
Set NoCount Off
Return 1Succeed:
Commit Tran
Set NoCount Off
Return 0end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Delphi 用ado+sql 2000开发的两层。新增单据时。我有插入事件这样子写。
procedure TfrmWsBillBase.QMasterAfterInsert(DataSet: TDataSet);
begin
inherited;
//取内部单号ID
try
with spGetInNumber do
begin
parameters.ParamValues['@BillType'] := VoucherTableName;
Execproc;
end;
except
on E: Exception do
begin
MessageDlg('新增单据失败!' + #13#10 + E.Message, mterror, [mbOk], 0);
Abort;
end;
end;
end;
软件在使用的时候,时不是会跳出"新增单据失败!已超过了锁请求超时时段。"的提示信息。
GO
SET ANSI_NULLS ON
GO
/***********************************************
得到单据的内部单号
日期:2002.06.10
***********************************************/
ALTER PROCEDURE pGetInNumber
@BillType nvarchar(50), --单据类型
@InNumber int output --返回的内部单号
AS
begindeclare @NowNO int
declare @ErrorMsg nvarchar(200)Set NoCount On
Begin Tran
--设定延时
SET LOCK_TIMEOUT 10000--取当前序号
Select @NowNO=fInNumber from tBillType with(xLock) where fBillName=@BillType
if @@Error<>0
begin
Set @ErrorMsg='数据被锁定,请求超时!'
Goto Failed
end
Set @NowNo=@NowNo+1
--更新当前序列号
update tBillType set fInNumber=@NowNO where fBillName=@BillType
if @@Error<>0
begin
Set @ErrorMsg='更新内部序列号失败!'
Goto Failed
endSet @InNumber=@NowNo
Goto SucceedFailed:
RaisError(@ErrorMsg,16,1)
Rollback Tran
Set NoCount Off
Return 1Succeed:
Commit Tran
Set NoCount Off
Return 0end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Delphi 用ado+sql 2000开发的两层。新增单据时。我有插入事件这样子写。
procedure TfrmWsBillBase.QMasterAfterInsert(DataSet: TDataSet);
begin
inherited;
//取内部单号ID
try
with spGetInNumber do
begin
parameters.ParamValues['@BillType'] := VoucherTableName;
Execproc;
end;
except
on E: Exception do
begin
MessageDlg('新增单据失败!' + #13#10 + E.Message, mterror, [mbOk], 0);
Abort;
end;
end;
end;
软件在使用的时候,时不是会跳出"新增单据失败!已超过了锁请求超时时段。"的提示信息。
解决方案 »
- 如何表示任意文件夹呢,文件可以用*.*表示,那任意文件夹要怎么表示,或者可以告诉我怎样的到某一路径下的文件夹里的文件
- 求数据库Dbgrid某一列销售金额的和在edit里面显示
- 请问如何查询字段值为空的数据
- 用ActionMannager可不可以做二级,三级菜单,怎么做?
- 有做零售POS系统销售的吗?希望大家都来侃侃,关注一下这个市场,期盼各位说说您的成长故事!
- 如何在获得ADOQuery中的结果如何返回到memo?
- 如何使用getclass,和registerclass,有例子最好
- 请教一个记录值查询的问题,急!!
- 有关曲线的问题(高含量)
- 请问如何在调试时查看一个数组如 S1: ARRAY[0..100] OF BYTE的各元素的数值
- Dll如何调用主程序中的变量?
- 求一份SSE指令的说明文档.
http://topic.csdn.net/t/20030922/10/2285767.html