|

楼主 |
发表于 2009-5-18 15:13:33
|
显示全部楼层
这是部分源码:
麻烦你看一下有没有问题:
lquery:=TQuery.Create(nil);
lHandle:=lquery.Connection.Transaction.Start(false);
//self.DataSetBroker1.DataSet.Connection.Transaction:=lquery.Connection.Transaction;
//self.DataSetSO.DataSet.Connection.Transaction:=lquery.Connection.Transaction;
try
lQuery.ConnectionString := 'DATABASEURL=Biz:\NTREND\U8.Database';
month := dateUtils.MonthOf(SysSrv.SysService.Time);
today := dateUtils.DateOf(SysSrv.SysService.Time);
lQuery.CommandText := 'select max(ino_id) as maxino_id from GL_accvouch where iperiod='+sysUtils.IntToStr(month);;
lQuery.Open;
ino_id := lQuery.FieldByName('maxino_id').AsInteger+1;
//借:应收 贷:收入
u8Inid :=1;
//mcsun
//对收付核销的生成凭证 借:应付 贷:应收
if DataSetBroker1.DataSet.FieldByName('billsource').AsString = '5' then //收付核销
begin
sum:=self.DataSetBroker1.DataSet.FieldByName('amount').AsFloat;
//digest := '[收付核销]'+DataSetBrokerYFMXCL.DataSet.FieldByName('apCode').AsString;
lQuery.CommandText := 'INSERT INTO GL_accvouch(iperiod, csign, isignseq, ino_id, inid, dbill_date, idoc, cbill, ibook, cdigest,ccode,ccode_equal, csup_id,cdept_id,cperson_id, md, mc, md_f, mc_f, nfrat, nd_s, nc_s) ' +
'VALUES('+sysUtils.IntToStr(month)+',''记'', 1, '+sysUtils.IntToStr(ino_id)+',1, '''+sysUtils.DateToStr(today)+''',-1,'''+lContextCurrent.Operator.DisplayName+''', 0,'''+str+''',''2202'',''1122'', '''+customercode+''',null,null,'+sysUtils.FloatToStr(sum)+',0,0, 0, 0, 0, 0 )';
//由于客户及部门代码还未统一,先用NULL值 'VALUES('+sysUtils.IntToStr(month)+',''记'', 1, '+sysUtils.IntToStr(ino_id)+',1, '''+sysUtils.DateToStr(today)+''',0,'''+lContextCurrent.Operator.DisplayName+''', 0,'''+str+''',''1131'', ''5101'', '''+DataSetBroker1.DataSet.FieldByName('custmer').asstring+''','''+DataSetBroker1.DataSet.FieldByName('dept').asstring+''','''+DataSetBroker1.DataSet.FieldByName('bizman').asstring+''','+sysUtils.FloatToStr(DataSetBroker1.DataSet.FieldByName('amount').AsFloat)+',0,0, 0, 0, 0, 0 )';
lQuery.Execute;
//digest := '[收付核销]'+DataSetBrokerYSMXCL.DataSet.FieldByName('arCode').AsString;
lQuery.CommandText := 'INSERT INTO GL_accvouch(iperiod, csign, isignseq, ino_id, inid, dbill_date, idoc, cbill, ibook, cdigest,ccode,ccode_equal, ccus_id,cdept_id,cname,cperson_id, md, mc, md_f, mc_f, nfrat, nd_s, nc_s) ' +
'VALUES('+sysUtils.IntToStr(month)+',''记'', 1, '+sysUtils.IntToStr(ino_id)+',2, '''+sysUtils.DateToStr(today)+''',-1,'''+lContextCurrent.Operator.DisplayName+''', 0,'''+str+''',''1122'',''2202'', '''+customercode+''','''+deptid+''','''+bizmanname+''',null,0,'+sysUtils.FloatToStr(sum)+',0, 0, 0, 0, 0 )';
lQuery.Execute;
//lQuery.Free;
//生成凭证结束
end;
//mcsun 不管哪种情况,最后执行下面东西
DataSetBroker1.DataSet.Edit;
DataSetBroker1.DataSet.FieldByName('voucherno').AsString :=sysUtils.IntToStr(ino_id);
DataSetBroker1.DataSet.FieldByName('vouchstatus').AsString := '1';
DataSetBroker1.DataSet.FieldByName('accpsn').AsString := lContextCurrent.Operator.ID;
DataSetBroker1.DataSet.FieldByName('accdate').AsDateTime := today;
lquery.Connection.Transaction.Commit(lHandle);
DataSetBroker1.DataSet.ApplyUpdates(false);
//新添加
jsDialogs.ShowMsg('凭证已生成!','提示');
except on e:Exception do
begin
jsdialogs.ShowMsg('生成凭证不成功。','提示');
lquery.Connection.Transaction.Rollback(lHandle);
DataSetBroker1.DataSet.CancelUpdates;
end; |
|