⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repclass.pas

📁 一个电力企业的后台管理程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
   end;
end;

function TOpAmountRpt.createOpDealAmountInfo: Boolean;
var
 SCurrDate: String;
begin
 Result := False;
 SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
 if CheckRecord('STAT_OPAMOUNT_DEAL_INFO') then
  begin
   if Fb_OverlayCurrData then
    begin
     try
      DeleteRec('STAT_OPAMOUNT_DEAL_INFO') ;
      CreateDealInfo;
      Result := True;
     except
      Result := False;
     end;
    end
   else Exit;
  end
 else
  begin
   try
    CreateDealInfo;
    Result := True;
   except
    Result := False;
   end;
  end;
 try
  MakeInsert(SCurrDate);
 except
  Result := True;
 end;
end;

function TOpAmountRpt.CreateSubDealInfo(
  SubInfo: TOpAmountDealInfo;Qry_Insert: TQuery): Boolean;
var
 I: Integer;
 SCurrDate : String;
begin
 //Result := False;
 SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
 with Qry_Insert do
 try
  for I := 0 to High(SubInfo.SubOpamountDealInfo) do
   begin
    SubInfo.SubOpamountDealInfo[I].CalRation;
    Sql.Add(Format('INSERT INTO STAT_OPAMOUNT_DEAL_INFO '+
                  'VALUES (''%S'',''%S'',''%S'',:A,%D,%D,%D,%D,%D,%D,%D,%D,%D,%D,''%S'',''%S'',''%S'',''%S'');',
                  [SubInfo.SubOpamountDealInfo[I].M_SubOpID,SubInfo.SubOpamountDealInfo[I].M_SubOpType,SCurrDate,
                   SubInfo.SubOpamountDealInfo[I].M_iTotalCMNum,SubInfo.SubOpamountDealInfo[I].m_iTotalApNum,
                   SubInfo.SubOpamountDealInfo[I].M_iACMPCMNum,SubInfo.SubOpamountDealInfo[I].m_iACMPApNum,
                   SubInfo.SubOpamountDealInfo[I].M_iNoAcmpCMNum,SubInfo.SubOpamountDealInfo[I].m_iNoAcmpApNum,
                   SubInfo.SubOpamountDealInfo[I].M_iOtAcmpCMNum,SubInfo.SubOpamountDealInfo[I].m_iOtAcmpApNum,
                   SubInfo.SubOpamountDealInfo[I].M_iCmUserSatisfyNum,SubInfo.SubOpamountDealInfo[I].m_iApUserSatisfyNum,
                   SubInfo.SubOpamountDealInfo[I].M_MonORation,SubInfo.SubOpamountDealInfo[I].M_ToRation,
                   SubInfo.SubOpamountDealInfo[I].M_MonSRation,SubInfo.SubOpamountDealInfo[I].M_TSRation
                   ]));
    ParamByName('A').AsDate := FDt_Curr;
   end;
   Result := True;
 except
  Result := False;
 end;
end;

function TOpAmountRpt.DeleteRec(STableName: String): Boolean;
var
 SCurrDate: String;
 SAdDate : String;
begin
// Result := False;
 SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
 SAdDate := FormatDateTime('YYYY-MM',Dt_Addup);
 with TQuery.Create(nil) do
 try
  Close;
  DataBaseName := SysDM.DBMain.DatabaseName;
//  if SType = '1' then
   Sql.Text := Format('DELETE FROM %S WHERE STAT_MONTH = ''%S''',[STableName,ScurrDate]);
//  else
//   Sql.Text := Format('DELETE FROM %S WHERE STAT_MONTH >= ''%S'' AND STAT_MONTH <= ''%S''',[STableName,SAdDate,ScurrDate]);
  ExecSql;
  Result := True;
 finally
  Free;
 end;
end;



function TOpAmountRpt.MakeComSql: String;
var
 SCurrDate: String;
begin
 SCurrDate := FormatDateTime('YYYY-MM',FDt_Curr);
 Result := Format('SELECT B.CLASS_NAME CLASS_NAME,A.MONTH_ALL_NUM MONTH_ALL_NUM,'+
                  'A.ADDUP_ALL_NUM ADDUP_ALL_NUM,A.LASTMONTH_RISE_RATIO LASTMONTH_RISE_RATIO,'+
                  'A.LASTYEAR_SAMETERM_RISE_RATIO LASTYEAR_SAMETERM_RISE_RATIO,'+
                  'A.LASTYEAR_ADDUP_RISE_RATIO LASTYEAR_ADDUP_RISE_RATIO,'+
                  'A.PLACETOTAL_PERCENT ' +
                  'FROM STAT_OPAMOUNT_COMPARE_INFO A,CLASS_CODE B '+
                  'WHERE A.CLASS_ID = b.CLASS_ID AND A.CLASS_TYPE = B.CLASS_TYPE '+
                  'AND STAT_MONTH = ''%S''',[SCurrDate]);
end;

function TOpAmountRpt.MakeInsert(SCurrDate: String): Boolean;
var
 I,J: Integer;
begin
 Result := False;
 with TQuery.Create(nil) do
  try
   Close;
   DataBaseName := SysDM.DBMain.DatabaseName;
   Sql.Text := 'TRUNCATE TABLE STAT_OPAMOUNT_DEAL_TABLE';
   ExecSql;
   Close;
   Sql.Text := Format('SELECT CLASS_ID,CLASS_TYPE,STAT_MONTH FROM '+
                      'STAT_OPAMOUNT_DEAL_INFO WHERE CLASS_TYPE = ''%S'' '+
                      'AND STAT_MONTH = ''%S''',['A',SCurrDate]);
   Open;
   if RecordCount > 0 then
    begin
     SetLength(KeyStr,RecordCount,3);
     for I := 0 to RecordCount - 1 do
      begin
       for J := 0 to 2 do
        begin
         KeyStr[I,J] := Fields[J].AsString;
        end;
        Next;
      end;
    end;
   for I := Low(KeyStr) to High(KeyStr) do
    begin
     try
      WriteTable(KeyStr[I,1],KeyStr[I,0],KeyStr[I,2],False,0);
     except
      Break;
      Result := False;
     end;
     Close;
     if (KeyStr[I,0] = '1') or (KeyStr[I,0] = '2') then
      Sql.Text := Format('SELECT CLASS_TYPE,CLASS_ID FROM CLASS_CODE '+
                        'WHERE PARENT_CLASS_ID = ''%S'' AND PARENT_CLASS_TYPE = '+
                        '''%S''',[KeyStr[I,0],KeyStr[I,1]]);
     Open;
     if RecordCount > 0 then
      begin
       SetLength(SubKeyStr,RecordCount,3);
       for J := 0 to RecordCount - 1 do
        begin
         SubKeyStr[J,0] := FieldByName('CLASS_TYPE').AsString;
         SubKeyStr[J,1] := FieldByName('CLASS_ID').AsString;
         SubKeyStr[J,2] := SCurrDate;
         Next;
        end;
       for J := Low(SubKeyStr) to High(SubKeyStr) do
        try
         if (KeyStr[I,0] = '1') or (KeyStr[I,0] = '2') then
          WriteTable(SubKeyStr[J,0],SubKeyStr[J,1],SubKeyStr[J,2],True,J);
         Result := True;
        except
         Break;
         Result := False;
        end;
      end;
    end;
  finally
   Free;
  end;
end;

function TOpAmountRpt.printOpCompareAmountRpt(
  reporttype: integer): boolean;
begin
 Result := True;
 if reporttype = 0 then
  try
   PreviewReport('BusiCount',MakeComSql,'','','业务统计报表');
  except
   Result := False;
  end;
 if reporttype = 1 then
  try
   DesignReport('BusiCount',MakeComSql,'','','业务统计报表');
  except
   Result := False;
  end;
 if reporttype = 2 then
  try
   MakeWordReport(SysDm.WReport,MakeComSql,CompTitleStr,'业务统计报表');;
  except
   Result := False;
  end;


end;

function TOpAmountRpt.printOpDealAmountRpt(reporttype: integer): boolean;
var
 Syear,SMon:String;
begin
 Result := True;
 if reporttype = 0 then
  try
   PreviewReport('NewFx','SELECT * FROM STAT_OPAMOUNT_DEAL_TABLE','','','业务统计报表');
  except
   Result := False;
  end;
 if reporttype = 1 then
  try
   DesignReport('NewFx','SELECT * FROM STAT_OPAMOUNT_DEAL_TABLE','','','业务统计报表');
  except
   Result := False;
  end;
 if reporttype = 2 then
  try
   Syear := FormatDateTime('YYYY',FDt_Curr);
   SMon := FormatDateTime('MM',FDt_Curr);
   SysDM.Qry_Word.Close;
   SysDM.Qry_Word.Open;
   //MakeWordReport(SysDm.WReport,'SELECT * FROM STAT_OPAMOUNT_DEAL_TABLE',DealTitleStr,'业务统计报表');;
   SysDm.WorddotRpt.FirstTitle := Format('%s 年 %s 月业务处理情况统计分析表',[SYear,SMon]);
   SysDm.WorddotRpt.Execute; 
  except
   Result := False;
  end;

end;

function TOpAmountRpt.WriteTable(OpType, OpID, SCurrDate: String;IsSub: Boolean;SubNo: Integer): Boolean;
var
 Str: String;
 I: Integer;
begin
 Str := '';
 //Result := False;
 with TQuery.Create(nil) do
  try
   Close;
   DataBaseName := SysDM.DBMain.DatabaseName;
   Sql.Text := Format('SELECT B.CLASS_NAME CLASS_NAME,'+
                     'A.MONTH_ALL_NUM MONTH_ALL_NUM,A.ADDUP_ALL_NUM ADDUP_ALL_NUM,'+
                     'A.MONTH_ACMP_NUM MONTH_ACMP_NUM,A.ADDUP_ACMP_NUM ADDUP_ACMP_NUM,'+
                     'A.MONTH_NOACMP_NUM MONTH_NOACMP_NUM,A.ADDUP_NOACMP_NUM ADDUP_NOACMP_NUM,'+
                     'A.MONTH_OTACMP_NUM MONTH_OTACMP_NUM,A.ADDUP_OTACMP_NUM ADDUP_OTACMP_NUM,'+
                     'A.MONTH_USERSATISFY_NUM MONTH_USERSATISFY_NUM,A.ADDUP_USERSATISFY_NUM ADDUP_USERSATISFY_NUM,'+
                     'A.MONTH_OTACMP_RATIO MONTH_OTACMP_RATIO,A.ADDUP_OTACMP_RATIO ADDUP_OTACMP_RATIO,'+
                     'A.MONTH_USERSATISFY_RATIO MONTH_USERSATISFY_RATIO,A.ADDUP_USERSATISFY_RATIO ADDUP_USERSATISFY_RATIO'+
                     ' FROM STAT_OPAMOUNT_DEAL_INFO A,CLASS_CODE B '+
                     ' WHERE A.CLASS_ID = B.CLASS_ID AND A.CLASS_TYPE = B.CLASS_TYPE AND A.CLASS_ID = ''%S'''+
                     ' AND A.CLASS_TYPE = ''%S'' AND STAT_MONTH = ''%S''',[OpID,OpType,SCurrDate]);
  // Sql.SaveToFile('d.ttt');
   Open;
   if not IsSub then
    begin
      Str := Format('''%s''',[Fields[0].AsString]);
      for I := 1 to 10 do
       Str := Str + ','+ Fields[I].AsString ;
      for I := 11 to 14 do
       Str := Str + Format(',''%s''',[Fields[I].AsString]);
      Close;
      Sql.Text := Format('INSERT INTO STAT_OPAMOUNT_DEAL_TABLE VALUES (%S)',[Str]);
     // Sql.SaveToFile('C:\ttt.ttt');
      try
       ExecSql;
       Result := True;
      except
       Result := False;
      end;
    end
   else
    begin
      Str := Format('''(%S)%s''',[IntToStr(SuBNo + 1),Fields[0].AsString]);
      for I := 1 to 10 do
       Str := Str + ','+ Fields[I].AsString ;
      for I := 11 to 14 do
       Str := Str + Format(',''%s''',[Fields[I].AsString]);
      Close;
      Sql.Text := Format('INSERT INTO STAT_OPAMOUNT_DEAL_TABLE VALUES (%S)',[Str]);
      //Sql.SaveToFile('C:\ttt.ttt');
      try
       ExecSql;
       Result := True;
      except
       Result := False;
      end;
    end;
  finally
   Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -