|

楼主 |
发表于 2009-8-26 15:36:09
|
显示全部楼层
我初始化调试就定位在为过程赋值过程名提示错误
var
SP :TStoredProc;
i:Integer;
vQuery,vQuery_ZB:TQuery;
vOutStr:String;
vKSSJ,vJSSJ:String;//考核开始时间,结束时间
lTransHandle: TTransactionHandle;
vZBH:String;
vZDJSFS:Float;//自动计算分数
begin
vZBH:=DataSetKHQXB.FieldByName('ZBH').AsString;
vOutStr:=EmptyStr;
SP:=TStoredProc.Create(Self);
SP.ConnectionString:='DATABASEURL=Biz:\YWKJ\StoredConn.Database';
DataSetCJMX_JS.Connection.Transaction := DataSetCJZB.Connection.Transaction;
DataSetCJMX_JS.Connection.Transaction := DataSetKHQXB.Connection.Transaction;
DataSetKHQXB.Close;
DataSetKHQXB.SQL.Text:='Select * From KHQXB Where SFHZ=''1'' and KHWHYBH In ('+vKWHID+')';
DataSetKHQXB.Open;
DataSetKHQXB.Locate('ZBH',vZBH,[]);
DataSetCJZB.Open;
DataSetCJMX_JS.Open;
With DataSetCJMX_JS.Connection.Transaction do
begin
lTransHandle := Start(False); //启动事务
try //保存成绩主表数据
//计算自动计算考核项目成绩
vQuery:=TQuery.Create(Self);
vQuery.ConnectionString:='DATABASEURL=Biz:\YWKJ\YWK.Database';
vQuery.CommandText:='Select A.*,C.*,D.ZBSL From KHQX_CJMXB A,KHQX_CJB B,KHQX_KHXMB C, KHQX_DWXMZBB D'+
' Where A.GLBH=B.ZBH(+) And A.KHXMBH=C.XMBH And C.KHXMTBFS=''02'' And '+
' B.KHQBH='+Char(39)+DataSetKHQXB.FieldByName('ZBH').AsString+Char(39)+' And '+
' C.GLBH='+Char(39)+DataSetKHQXB.FieldByName('ZBH').AsString+Char(39)+' And '+
' D.GLBH='+Char(39)+DataSetKHQXB.FieldByName('ZBH').AsString+Char(39)+' And '+
' A.KHXMBH=D.XMBH And A.BKHDWBH=D.BKHDWBH';
vQuery.Open;
if not vQuery.IsEmpty then
begin
vQuery_ZB:=TQuery.Create(Self);
vQuery_ZB.ConnectionString:='DATABASEURL=Biz:\YWKJ\ZDK.Database';
vQuery_ZB.CommandText:='Select * From JXKHZB';
vQuery_ZB.Open;
For i:=0 to vQuery.RecordCount-1 do
begin
vQuery_ZB.Filter:='A1='+Char(39)+vQuery.FieldByName('KHXMZBLY').AsString+Char(39);
vQuery_ZB.Filtered:=True;
if vQuery_ZB.IsEmpty then
begin
jsDialogs.ShowMsg('没有找到对应的指标量计算程序!','提示');
exit;
end;
TFunComUnit.GetSelDepts(vQuery.FieldByName('BKHDWBH').AsString);
SP.StoredProcName:=Trim(vQuery_ZB.FieldByName('A5').AsString);
SP.Params.Clear;
SP.Params.CreateParam(TFieldType.ftString,'C_BTBSJ',TParamType.ptInput); //开始时间
SP.Params.CreateParam(TFieldType.ftString,'C_ETBSJ',TParamType.ptInput); //结束时间
SP.Params.CreateParam(TFieldType.ftString,'C_TOTAL',TParamType.ptOutput); //传出数量
SP.Params[0].AsString := Trim(DataSetKHQXB.FieldByName('KHKSSJ').AsString);
SP.Params[1].AsString := Trim(DataSetKHQXB.FieldByName('KHJSSJ').AsString);
SP.Execute;
SP.Params[2].AsString := vOutStr;
//修改自动取数据项目的值
DataSetCJMX_JS.Filter:='BKHDWBH='+Char(39)+Trim(vQuery.FieldByName('BKHDWBH').AsString)+Char(39)+' And '+
'KHXMBH='+Char(39)+Trim(vQuery.FieldByName('KHXMBH').AsString)+Char(39);
DataSetCJMX_JS.Filtered:=True;
if DataSetCJMX_JS.IsEmpty then
begin
jsDialogs.ShowMsg('没有找到相应的自动计算项目!','提示');
exit;
end;
if vOutStr=EmptyStr then
begin
vOutStr:='0';
end;
//根据最高分最低分计算成绩
if (StrToInt(vOutStr)/vQuery.FieldByName('ZBSL').AsInteger)*vQuery.FieldByName('JCF').AsInteger<
vQuery.FieldByName('ZDF').AsInteger then //小于最低分
begin
vZDJSFS:=vQuery.FieldByName('ZDF').AsInteger;
end
else if (StrToInt(vOutStr)/vQuery.FieldByName('ZBSL').AsInteger)*vQuery.FieldByName('JCF').AsInteger>
vQuery.FieldByName('ZGF').AsInteger then //大于最高分
begin
vZDJSFS:=vQuery.FieldByName('ZGF').AsInteger;
end
else
begin
vZDJSFS:=(StrToInt(vOutStr)/vQuery.FieldByName('ZBSL').AsInteger)*vQuery.FieldByName('JCF').AsInteger;
end;
DataSetCJMX_JS.Edit;
DataSetCJMX_JS.FieldByName('DF').Value:=vZDJSFS;
DataSetCJMX_JS.Post;
vQuery.Next;
end;
end;
//计算小类总分
vQuery.Close;
vQuery.CommandText:='Select Substr(A.KHXMBH,1,6) KHXMBH,A.BKHDWBH,0 DF From KHQX_CJMXB A,KHQX_CJB B '+
' Where A.GLBH=B.ZBH(+) And B.KHQBH='+Char(39)+Trim(DataSetKHQXB.FieldByName('ZBH').AsString)+Char(39)+
' Group By Substr(A.KHXMBH,1,6),A.BKHDWBH ';
vQuery.Open;
//插入小类成绩
if not vQuery.IsEmpty then
begin
DataSetCJMX_JS.Filtered:=False;
DataSetCJMX_JS.First;
For i:=0 to DataSetCJMX_JS.RecordCount-1 do
begin
vQuery.Filter:='BKHDWBH='+Char(39)+Trim(DataSetCJMX_JS.FieldByName('BKHDWBH').AsString)+Char(39)+' And '+
'KHXMBH='+Char(39)+Copy(Trim(DataSetCJMX_JS.FieldByName('KHXMBH').AsString),1,6)+Char(39);
vQuery.Filtered:=True;
if vQuery.IsEmpty then
begin
jsDialogs.ShowMsg('统计小类成绩时没有找到相应的小类!','提示');
exit;
end;
vQuery.Edit;
vQuery.FieldByName('DF').AsInteger:=vQuery.FieldByName('DF').AsInteger+DataSetCJMX_JS.FieldByName('DF').AsInteger;
vQuery.Post;
DataSetCJMX_JS.Next;
end;
vQuery.Filtered:=False;
For i:=0 to vQuery.RecordCount-1 do
begin
DataSetCJMX_JS.Append;
DataSetCJMX_JS.FieldByName('GLBH').AsString:=DataSetCJZB.FieldByName('ZBH').AsString;
DataSetCJMX_JS.FieldByName('BKHDWBH').AsString:=vQuery.FieldByName('BKHDWBH').AsString;
DataSetKHQX_BKHDW.Filter:='BKHDWBH='+Char(39)+vQuery.FieldByName('BKHDWBH').AsString+Char(39);
DataSetKHQX_BKHDW.Filtered:=True;
DataSetCJMX_JS.FieldByName('BKHDWMC').AsString:=DataSetKHQX_BKHDW.FieldByName('BKHDWMC').AsString;
DataSetCJMX_JS.FieldByName('KHXMBH').AsString:=vQuery.FieldByName('KHXMBH').AsString;
DataSetCJMX_JS.FieldByName('DF').AsInteger:=vQuery.FieldByName('DF').AsInteger;
DataSetCJMX_JS.Post;
vQuery.Next;
end;
end;
//统计大类成绩
vQuery.Close;
vQuery.CommandText:='Select Substr(A.KHXMBH,1,3) KHXMBH,A.BKHDWBH,0 DF From KHQX_CJMXB A,KHQX_CJB B '+
' Where A.GLBH=B.ZBH(+) And B.KHQBH='+Char(39)+Trim(DataSetKHQXB.FieldByName('ZBH').AsString)+Char(39)+
' Group By Substr(A.KHXMBH,1,3),A.BKHDWBH ';
vQuery.Open;
//插入大类成绩
if not vQuery.IsEmpty then
begin
DataSetCJMX_JS.Filtered:=False;
DataSetCJMX_JS.First;
For i:=0 to DataSetCJMX_JS.RecordCount-1 do
begin
if Length(Trim(DataSetCJMX_JS.FieldByName('KHXMBH').AsString))=6 then //只加小类的
begin
vQuery.Filter:='BKHDWBH='+Char(39)+Trim(DataSetCJMX_JS.FieldByName('BKHDWBH').AsString)+Char(39)+' And '+
'KHXMBH='+Char(39)+Copy(Trim(DataSetCJMX_JS.FieldByName('KHXMBH').AsString),1,3)+Char(39);
vQuery.Filtered:=True;
if vQuery.IsEmpty then
begin
jsDialogs.ShowMsg('统计大类成绩时没有找到相应的大类!','提示');
exit;
end;
vQuery.Edit;
vQuery.FieldByName('DF').AsInteger:=vQuery.FieldByName('DF').AsInteger+DataSetCJMX_JS.FieldByName('DF').AsInteger;
vQuery.Post;
end;
DataSetCJMX_JS.Next;
end;
vQuery.Filtered:=False;
For i:=0 to vQuery.RecordCount-1 do
begin
DataSetCJMX_JS.Append;
DataSetCJMX_JS.FieldByName('GLBH').AsString:=DataSetCJZB.FieldByName('ZBH').AsString;
DataSetCJMX_JS.FieldByName('BKHDWBH').AsString:=vQuery.FieldByName('BKHDWBH').AsString;
DataSetCJMX_JS.FieldByName('KHXMBH').AsString:=vQuery.FieldByName('KHXMBH').AsString;
DataSetKHQX_BKHDW.Filter:='BKHDWBH='+Char(39)+vQuery.FieldByName('BKHDWBH').AsString+Char(39);
DataSetKHQX_BKHDW.Filtered:=True;
DataSetCJMX_JS.FieldByName('BKHDWMC').AsString:=DataSetKHQX_BKHDW.FieldByName('BKHDWMC').AsString;
DataSetCJMX_JS.FieldByName('DF').AsInteger:=vQuery.FieldByName('DF').AsInteger;
DataSetCJMX_JS.Post;
vQuery.Next;
end;
end;
//统计额外加分
vKSSJ:=FormatDateTime('yyyy-mm-dd',DataSetKHQXB.FieldByName('KHKSSJ').AsDateTime);
vJSSJ:=FormatDateTime('yyyy-mm-dd',DataSetKHQXB.FieldByName('KHJSSJ').AsDateTime);
vQuery.Close;
vQuery.CommandText:='Select EWJFBMID,Sum(FS) FS From EWJFB '+
' Where EWJFBMID In (Select ZBM From TJBBLSB) And '+
' To_Char(FJSJ)>='+Char(39)+vKSSJ+Char(39)+' And '+
' To_Char(FJSJ)<='+Char(39)+vJSSJ+Char(39)+' And '+
' JKFBZ=''1'' Group By EWJFBMID ';
vQuery.Open;
if not vQuery.IsEmpty then
begin
For i:=0 to vQuery.RecordCount-1 do
begin
DataSetCJMX_JS.Append;
DataSetCJMX_JS.FieldByName('GLBH').AsString:=DataSetCJZB.FieldByName('ZBH').AsString;
DataSetCJMX_JS.FieldByName('BKHDWBH').AsString:=vQuery.FieldByName('EWJFBMID').AsString;
DataSetKHQX_BKHDW.Filter:='BKHDWBH='+Char(39)+vQuery.FieldByName('EWJFBMID').AsString+Char(39);
DataSetKHQX_BKHDW.Filtered:=True;
DataSetCJMX_JS.FieldByName('BKHDWMC').AsString:=DataSetKHQX_BKHDW.FieldByName('BKHDWMC').AsString;
DataSetCJMX_JS.FieldByName('KHXMBH').AsString:='JF';
DataSetCJMX_JS.FieldByName('KHXMMC').AsString:='额外加分';
DataSetCJMX_JS.FieldByName('DF').AsInteger:=vQuery.FieldByName('FS').AsInteger;
DataSetCJMX_JS.Post;
vQuery.Next;
end;
end;
//统计额外扣分
vQuery.Close;
vQuery.CommandText:='Select EWJFBMID,Sum(-FS) FS From EWJFB '+
' Where EWJFBMID In (Select ZBM From TJBBLSB) And '+
' To_Char(FJSJ)>='+Char(39)+vKSSJ+Char(39)+' And '+
' To_Char(FJSJ)<='+Char(39)+vJSSJ+Char(39)+' And '+
' JKFBZ=''2'' Group By EWJFBMID ';
vQuery.Open;
if not vQuery.IsEmpty then
begin
For i:=0 to vQuery.RecordCount-1 do
begin
DataSetCJMX_JS.Append;
DataSetCJMX_JS.FieldByName('GLBH').AsString:=DataSetCJZB.FieldByName('ZBH').AsString;
DataSetCJMX_JS.FieldByName('BKHDWBH').AsString:=vQuery.FieldByName('EWJFBMID').AsString;
DataSetKHQX_BKHDW.Filter:='BKHDWBH='+Char(39)+vQuery.FieldByName('EWJFBMID').AsString+Char(39);
DataSetKHQX_BKHDW.Filtered:=True;
DataSetCJMX_JS.FieldByName('BKHDWMC').AsString:=DataSetKHQX_BKHDW.FieldByName('BKHDWMC').AsString;
DataSetCJMX_JS.FieldByName('KHXMBH').AsString:='KF';
DataSetCJMX_JS.FieldByName('KHXMMC').AsString:='额外扣分';
DataSetCJMX_JS.FieldByName('DF').AsInteger:=vQuery.FieldByName('FS').AsInteger;
DataSetCJMX_JS.Post;
vQuery.Next;
end;
end;
//统计总分
vQuery.Close;
vQuery.CommandText:='Select Distinct BKHDWBH,0 ZF From KHQX_CJMXB Where GLBH='+Char(39)+DataSetCJZB.FieldByName('ZBH').AsString+Char(39);
vQuery.Open;
DataSetCJMX_JS.Filtered:=False;
DataSetCJMX_JS.First;
For i:=0 to DataSetCJMX_JS.RecordCount-1 do
begin
if Length(Trim(DataSetCJMX_JS.FieldByName('KHXMBH').AsString))<4 then
begin
vQuery.Filter:='BKHDWBH='+Char(39)+Trim(DataSetCJMX_JS.FieldByName('BKHDWBH').AsString)+Char(39);
vQuery.Filtered:=True;
if vQuery.IsEmpty then
begin
jsDialogs.ShowMsg('统计总成绩时没有找到相应的部门!','提示');
exit;
end;
vQuery.Edit;
vQuery.FieldByName('ZF').AsInteger:=vQuery.FieldByName('ZF').AsInteger+DataSetCJMX_JS.FieldByName('DF').AsInteger;
vQuery.Post;
end;
DataSetCJMX_JS.Next;
end;
vQuery.Filtered:=False;
For i:=0 to vQuery.RecordCount-1 do
begin
DataSetCJMX_JS.Append;
DataSetCJMX_JS.FieldByName('GLBH').AsString:=DataSetCJZB.FieldByName('ZBH').AsString;
DataSetCJMX_JS.FieldByName('BKHDWBH').AsString:=vQuery.FieldByName('BKHDWBH').AsString;
DataSetKHQX_BKHDW.Filter:='BKHDWBH='+Char(39)+vQuery.FieldByName('BKHDWBH').AsString+Char(39);
DataSetKHQX_BKHDW.Filtered:=True;
DataSetCJMX_JS.FieldByName('BKHDWMC').AsString:=DataSetKHQX_BKHDW.FieldByName('BKHDWMC').AsString;
DataSetCJMX_JS.FieldByName('KHXMBH').AsString:='ZF';
DataSetCJMX_JS.FieldByName('KHXMMC').AsString:='总分';
DataSetCJMX_JS.FieldByName('DF').AsInteger:=vQuery.FieldByName('ZF').AsInteger;
DataSetCJMX_JS.Post;
vQuery.Next;
end;
//修改考核期限表
DataSetKHQXB.Edit;
DataSetKHQXB.FieldByName('SFHZ').AsString:='2';
DataSetKHQXB.Post;
//修改成绩主表
DataSetCJZB.Edit;
DataSetCJZB.FieldByName('HZR').AsString:=TCommonUnit.GetOperatorID;
DataSetCJZB.FieldByName('HZRXM').AsString:=TCommonUnit.GetOperatorDispName;
DataSetCJZB.FieldByName('HZSJ').AsDateTime:=Business.Data.SysSrv.SysService.Time;
DataSetCJZB.FieldByName('SFSH').AsString:='1'; //已汇总
DataSetCJZB.Post;
//提交
DataSetKHQXB.ApplyUpdates(False);
DataSetCJZB.ApplyUpdates(False);
DataSetCJMX_JS.ApplyUpdates(False);
vQuery.Cancel;
DataSetKHQX_BKHDW.Filtered:=False;
Commit(lTransHandle);
vQuery.Free;
jsDialogs.ShowMsg('核算成功!','提示');
DataSetKHQXB.Refresh;
PageControl1.ActivePageIndex:=1;
DataSetKHQX_CJB.Cancel;
DataSetKHQX_CJB.Close;
DataSetKHQX_CJB_CX.Close;
DataSetKHQX_CJB_CX.SQL.Text:='Select * From KHQX_CJB Where SFSH<>''0'' And KWHBH In ('+vKWHID+')';
DataSetKHQX_CJB_CX.Open;
except
RollBack(lTransHandle);
DataSetKHQXB.CancelUpdates;
DataSetCJZB.CancelUpdates;
DataSetKHQX_CJB.CancelUpdates;
jsDialogs.ShowMsg('汇总失败!','失败');
end;
SP.Free;
end; |
|