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

📄 unit_analyzeintegral.pas

📁 中国移动大客户管理系统
💻 PAS
字号:
unit Unit_AnalyzeIntegral;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Unit_AnalyzeTemplet, Db, DBTables, XLGrids, Buttons, StdCtrls,
  TFlatComboBoxUnit, TFlatButtonUnit, ExtCtrls, TFlatEditUnit,
  TFlatSpinEditUnit, TFlatCheckBoxUnit, ThreadP;

type
  TFrm_AnalyzeIntegral = class(TFrm_AnalyzeTemplet)
    Label10: TLabel;
    FlatSpinEditInteger_Year: TFlatSpinEditInteger;
    FlatComboBox_Month: TFlatComboBox;
    Label7: TLabel;
    FEMinIntegral: TFlatSpinEditInteger;
    Label8: TLabel;
    FEMaxIntegral: TFlatSpinEditInteger;
    FlatCheckBox1: TFlatCheckBox;
    XLSheet1: TXLSheet;
    Label9: TLabel;
    Query1: TQuery;
    procedure FormShow(Sender: TObject);
    Procedure ThreadDone(Sender: TObject);
    procedure FlatButton1Click(Sender: TObject);
    procedure FlatButton4Click(Sender: TObject);
    procedure SBGradeClick(Sender: TObject);
    procedure FlatButton2Click(Sender: TObject);

  private
    { Private declarations }
    Draw: Threadp.TDrawThread;

    Function SQL(pStyle:Integer=0):String;
    Function GroupSQL(pStyle:Integer=0):String;
    Function WhereSQL:String;
    Function RelaWhereSQL:String;

  public
    { Public declarations }
  end;

var
  Frm_AnalyzeIntegral: TFrm_AnalyzeIntegral;

implementation
Uses
   Unit_Public;
   Function Fun_ExportData(pFileName:String;pReportTitle:String;pObjectSource:TObject):Boolean;stdcall;external'winfun.dll';

{$R *.DFM}
Procedure TFrm_AnalyzeIntegral.ThreadDone(Sender: TObject);
Begin //进程结束
  Try
    draw := Nil;
  Finally
  End;
End;

Function TFrm_AnalyzeIntegral.WhereSQL:String;
Var
   WhereString:String;
   ValueString:String;
Begin
   //初始化WhereString变量
   WhereString:='(1=1)';
   //读取地市代码
   ValueString:=Fun_GetCity(FlatCombobox_City,'',1);
   If ValueString<>'' Then
      WhereString:=WhereString+' And CityNo='''+ValueString+'''';
   //读取局向代码
   ValueString:=Fun_GetCounty(FlatCombobox_County,'','',1);
   If ValueString<>'' Then
      WhereString:=WhereString+' And OFF_NO_HOME='+ValueString;
   //读取工号代码
   If FlatComboBox_ManagerNo.ItemIndex>0 Then
      WhereString:=WhereString+' And WK_NO='''+Copy(FlatComboBox_ManagerNo.Text,1,Pos(':',FlatComboBox_ManagerNo.Text)-1)+'''';
   //读取等级代码
   ValueString:=Fun_GetCodeName(FlatCombobox_Grade);
   If ValueString<>'' Then
      WhereString:=WhereString+' And GradeNo='''+ValueString+'''';
   //读取品牌代码
   ValueString:=Fun_GetCodeName(FlatCombobox_Brand);
   If ValueString<>'' Then
      WhereString:=WhereString+' And ProductNo='''+ValueString+'''';
   //读取客户属性代码
   ValueString:=Fun_GetCodeName(FlatCombobox_Att);
   If ValueString<>'' Then
      WhereString:=WhereString+' And CustAtt='+ValueString;
   //读取时间
   WhereString:=WhereString+' And CalcMonth='''+IntToStr(FlatSpinEditInteger_Year.Value)+FlatCombobox_Month.Text+'''';
   //读取最小积分点
   If FEMinIntegral.Value<>0 Then
      WhereString:=WhereString+' And Integral>='+IntToStr(FEMinIntegral.Value);
   //读取最大积分点
   If FEMinIntegral.Value<>0 Then
      WhereString:=WhereString+' And Integral<='+IntToStr(FEMaxIntegral.Value);
   //判断是否统计积分用户或非积分用户
   If FlatCheckBox1.Checked Then
      WhereString:=WhereString+' And AppIntegr=1'       //统计已积分客户
   Else
      WhereString:=WhereString+' And AppIntegr=0';       //统计非积分客户

   WhereSQL:=WhereString;
End;

Function TFrm_AnalyzeIntegral.GroupSQL(pStyle:Integer=0):String;
Var
   GroupString:String;
Begin
   //判断是否选择地市
   If SBCity.Down Then
      GroupString:='CityNo,';
   //判断是否选择局向
   If SBCounty.Down Then
      GroupString:=GroupString+'OFF_NO_HOME,';
   //判断是否选择品牌
   If SBBrand.Down Then
      GroupString:=GroupString+'ProductNO,';
   //判断是否选择客户属性
   If SBAtt.Down Then
      GroupString:=GroupString+'CustAtt,';

   If pStyle=1 Then
      //判断是否选择客户属性
      If SBGrade.Down Then
         GroupString:=GroupString+'GradeNo,';

   GroupSQL:=GroupString;
End;

Function TFrm_AnalyzeIntegral.RelaWhereSQL:String;
Var
   WhereString:String;
Begin
   WhereString:='(1=1)';
   //判断是否选择地市
   If SBCity.Down Then
      WhereString:=WhereString+' And CityNo=:CityNo';
   //判断是否选择局向
   If SBCounty.Down Then
      WhereString:=WhereString+' And Off_no_home=:Off_no_home';
   //判断是否选择品牌
   If SBBrand.Down Then
      WhereString:=WhereString+' And ProductNO=:ProductNo';
   //判断是否选择客户属性
   If SBAtt.Down Then
      WhereString:=WhereString+' And CustAtt=:CustAtt';

   RelaWhereSQL:=WhereString;
End;

Function TFrm_AnalyzeIntegral.SQL(pStyle:Integer=0):String;
Var
   v_GroupSQL:String;
Begin
   If pStyle=0 Then
      SQL:='Select '+GroupSQL+'Sum(AMOUNT) SL From (Select * From T_A_Integral Where '+WhereSQL+') Integral Group By '+Copy(GroupSQL,1,Length(GroupSQL)-1)
   Else
      Begin
         v_GroupSQL:=GroupSQL(1);
         SQL:='Select * From (Select '+v_GroupSQL+'Sum(Amount) SL From (Select * From T_A_Integral Where '+WhereSQL+') Integral Group By '+Copy(v_GroupSQL,1,Length(v_GroupSQL)-1)+') Sub_Integral Where '+RelaWhereSQL;
      End;
End;

procedure TFrm_AnalyzeIntegral.FormShow(Sender: TObject);
Var
   V_Date:String;
begin
  inherited;
   v_Date:=Fun_GetDate(-1);
   FlatSpinEditInteger_Year.Value:=StrToInt(Copy(v_Date,1,4));
   FlatCombobox_Month.ItemIndex:=FlatCombobox_Month.Items.IndexOf(Copy(v_Date,6,2));
   SBGrade.Down :=true;
end;

procedure TFrm_AnalyzeIntegral.FlatButton1Click(Sender: TObject);
Var
   StrSQL:String;
   CityNo:String;
   lstr :string;
   querytjcount,querytj3Count :integer;
begin
   inherited;

   If Not (SBCity.Down Or SBCounty.Down Or SBBrand.Down Or SBAtt.Down ) and SBGrade.Down Then
      Begin
         Application.MessageBox('请选择列条件!', '系统提示', MB_OK + MB_ICONINFORMATION);
         Exit;
      End;
   If (FlatCombobox_City.ItemIndex=0) And SBCounty.Down And Not SBCity.Down Then
      SBCity.Down:=True;


   screen.Cursor :=crSQLWait;
   FlatButton1.Enabled:=False;

   Try
      StrSQL:=SQL;
      QueryDetail.DataSource := Nil;
      QueryTotal.Close;
      QueryTotal.SQL.Text := StrSQL;
      QueryTotal.Open;
      //querytjcount :=QueryTotal.RecordCount;
      //*********得到总的记录个数****************
      query1.close;
      lStr :='select count(*) from (';
      lStr :=lstr+StrSQL+')';
      query1.sql.text :=lstr;
      query1.open;
      querytjCount :=query1.fields[0].asinteger;
      //*****************************************

      QueryDetail.Close;
      If SBGrade.Down Then
         Begin
            StrSQL:=SQL(1);
            QueryDetail.DataSource := DataSourceTotal;
            QueryDetail.SQL.Text := StrSQL;
            QueryDetail.Open;
        End;

      QueryRow.Close;
      StrSQL :='Select * From t_d_Grade where GRADENO is not null ';
      lstr :=Fun_GetCodeName(FlatCombobox_Grade);
      If lstr<>'' Then
      StrSQL:=StrSQL+' And GRADENO='''+lstr+'''';      
      QueryRow.sql.text :=StrSQL;
      QueryRow.Open;
      //***************得到总的记录个数*********************
      query1.close;
      lstr :='select count(*) ';
      lstr :=lstr+copy(StrSQL,pos('From',StrSQL),length(StrSQL)-pos('From',StrSQL)+1);
      //读取等级代码
      query1.sql.text := lstr;
      query1.open;
      querytj3Count :=query1.fields[0].asinteger;
      //*****************************************************

     //开始显示数据
      CityNo:=Copy(Fun_GetCity(FlatCombobox_City,'',1),3,1);
      If CityNo='' Then
         CityNo:='0';
      //要异常保护
      //if RunThead(xlsheet1, queryTotal, queryDetail,
      //  queryRow,querytjCount,querytj3Count,QueryDetail.DatabaseName,
      //  StrToInt(CityNo)) = false then
      begin
        screen.Cursor :=crDefault;
        FlatButton1.Enabled:=True;
        exit;
      end;


 //   SqlText.RowSql := '';
 //   SqlText.SumSql := '';
    //重画图形
//    ReDrawMap();

  Except
    Application.MessageBox('系统在执行过程中发生错误,请检查输入项!', '提示', MB_OK + MB_ICONINFORMATION);
    FlatButton1.Enabled:=True;
    screen.Cursor :=crDefault;
    Exit;
  End;
  screen.Cursor :=crDefault;
  FlatButton1.Enabled:=True;
end;




procedure TFrm_AnalyzeIntegral.FlatButton4Click(Sender: TObject);
begin
   If Draw <> Nil Then
      Begin //退出进程
         Draw.Terminate;
         Sleep(500); //等待0.5秒,进程清理数据
      End;

   inherited;
   
end;

procedure TFrm_AnalyzeIntegral.SBGradeClick(Sender: TObject);
begin
  inherited;
  SBGrade.Down :=true;
end;

procedure TFrm_AnalyzeIntegral.FlatButton2Click(Sender: TObject);
begin
  inherited;
  Fun_ExportData('大客户积分推广统计','大客户积分推广统计',XLSheet1);
end;

end.

⌨️ 快捷键说明

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