今天碰到一个很奇怪的问题,我在一个AfterInsert时间中写入如下代码
procedure TDM.ADOQrBgAfterInsert(DataSet: TDataSet);
begin
DataSet.FieldByName('ht_bianhao').AsString:=GetNextNo('400001','Bargain','ht_bianhao');
end;
出现如下错误
---------------------------
Debugger Exception Notification
---------------------------
Project BargainManage.exe raised exception class EOleException with message '无法在此会话中启动更多的事务。'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
但在另外的ADOQUERY的AfterInsert事件中写同样的代码却没问题,如
procedure TDM.ADOTbCusAfterInsert(DataSet: TDataSet);
begin
DataSet.FieldByName('cus_bianhao').AsString:=GetNextNo('100001','customer','cus_bianhao');
end;
我的GetNextNo的函数代码如下
function TDM.GetNextNo(FirstNo, TableName,FieldName: string): string;
var
TempADO:TADOQuery;
begin
try
TempADO:=TADOQuery.Create(self);
with TempADO do
begin
Active:=false;
Connection:=ADOConn;
SQL.Clear;
SQL.Add('select Max('+FieldName+') as bianhao from '+TableName);
Prepared;
Active:=true;
end;
if TempADO.FieldByName('bianhao').AsString='' then
Result:=FirstNo
else
Result:=IntToStr(TempADO.FieldByName('bianhao').AsInteger+1);
finally
TempADO.Free;
TempADO:=nil;
end;end;
procedure TDM.ADOQrBgAfterInsert(DataSet: TDataSet);
begin
DataSet.FieldByName('ht_bianhao').AsString:=GetNextNo('400001','Bargain','ht_bianhao');
end;
出现如下错误
---------------------------
Debugger Exception Notification
---------------------------
Project BargainManage.exe raised exception class EOleException with message '无法在此会话中启动更多的事务。'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
但在另外的ADOQUERY的AfterInsert事件中写同样的代码却没问题,如
procedure TDM.ADOTbCusAfterInsert(DataSet: TDataSet);
begin
DataSet.FieldByName('cus_bianhao').AsString:=GetNextNo('100001','customer','cus_bianhao');
end;
我的GetNextNo的函数代码如下
function TDM.GetNextNo(FirstNo, TableName,FieldName: string): string;
var
TempADO:TADOQuery;
begin
try
TempADO:=TADOQuery.Create(self);
with TempADO do
begin
Active:=false;
Connection:=ADOConn;
SQL.Clear;
SQL.Add('select Max('+FieldName+') as bianhao from '+TableName);
Prepared;
Active:=true;
end;
if TempADO.FieldByName('bianhao').AsString='' then
Result:=FirstNo
else
Result:=IntToStr(TempADO.FieldByName('bianhao').AsInteger+1);
finally
TempADO.Free;
TempADO:=nil;
end;end;
解决方案 »
- 有谁写过局域网内所有电脑和服务器时间同步的程序,或者思路和主要模块都可以!?
- 求助数据插入问题!
- 求助!
- 在fastReport中有没有方法让明细栏的数据总在同一个地方显示?
- 实现数据备份
- 为什么在win2000下开发的程序,在98下窗口和控件会变形、字体会变大,该如何解决?
- 怎么可以给dbgrid1 加上鼠标滚轮的函数,form就有这个函数。
- 安装lmd60有了麻烦。多给分啊~~谢谢参与
- ORACLE的BFILE类型如何通过DELPHI直接读取
- 我用的是Access数据库,现在记录有3000条,当form显示的时候打开数据库ADOQuery.Open但是要很久才能显示该form请问有什么办法解决,谢谢!!!
- 为什么在adoQuery里设的commandTimeOut没有起作用
- COMBOBOX中添加条目的问题
---------------------------
Debugger Exception Notification
---------------------------
Project BargainManage.exe raised exception class EOleException with message '发生未知错误。'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------