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

📄 sz_ndfpjhtjfx.pas

📁 省级集邮品管理ERP
💻 PAS
字号:
{*******************************************************}
{                                                       }
{                 邮票年度分配计划分析                  }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
省级综合查询

*)
unit sz_NDFPJHTJFX;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  TeEngine, Series, ExtCtrls, TeeProcs, Chart, RXCtrls, StdCtrls, Spin,
  Buttons, CheckComboBox, Grids, DBGrids, Db, DBTables, ComboBoxDB;

type
  TFrmz_ndfpjhtjfx = class( TForm )
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    ND: TSpinEdit;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    RB_Zhu: TRadioButton;
    RB_Bing: TRadioButton;
    RB_2D: TRadioButton;
    RB_3D: TRadioButton;
    BBt_Send: TBitBtn;
    BBt_Quit: TBitBtn;
    RB_Biao: TRadioButton;
    ScrollBox1: TScrollBox;
    DBGrid1: TDBGrid;
    Panel_Tl: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel7: TPanel;
    Panel5: TPanel;
    Chart1: TChart;
    Query1: TQuery;
    DataSource1: TDataSource;
    RxLabel_Title: TRxLabel;
    CB_Ppmc: TComboBoxDB;
    procedure FormCreate( Sender: TObject );
    procedure BBt_SendClick( Sender: TObject );
    procedure FormDestroy(Sender: TObject);
    procedure NDChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure DoOnGetMarkText( Sender: TChartSeries; ValueIndex: Longint; var MarkText: string );
  public
    { Public declarations }
  end;

var
  Frmz_ndfpjhtjfx: TFrmz_ndfpjhtjfx;

implementation

uses
  pub,sz_Main, DataList;

{$R *.DFM}

type
  TFieldData = record
    Title: string;
    Color: TColor;
  end;

const
  FieldNum = 4;
  Spacing = 2;
  FieldInfo: array[0..FieldNum - 1] of TFieldData =
    ( ( Title: '预订套数'; Color: clRed ),
    ( Title: '零售套数'; Color: clBlue ),
    ( Title: '年册套数'; Color: clGreen ),
    ( Title: '开发邮品'; Color: clYellow )
    );

procedure TFrmz_ndfpjhtjfx.FormCreate( Sender: TObject );
begin
  ND.Value := VG_Year;
  GetAllColWidth(Self);
end;

procedure TFrmz_ndfpjhtjfx.FormDestroy(Sender: TObject);
begin
//  ClearDataList(CB_PPLB.Items);
end;

procedure TFrmz_ndfpjhtjfx.BBt_SendClick( Sender: TObject );

  function GetCondND: string;
  begin
    Result := Format( ' and A.ND=''%d''', [ND.Value] );
  end;

  function GetCondPPLB: string;
  var
    i: integer;
  begin
    Result := ' and A.JHH=''' + CB_Ppmc.Values[CB_Ppmc.ItemIndex] + ''' ';
{    for i := 0 to CB_PPmc.Items.Count - 1 do
      if CB_PPmc.Checked[i] then
         //第0个表示全部,所以不用处理这个条件
        if i > 0 then
          if Result = '' then
            Result := Result + Format( ' and (A.JHH=''%s''', [string( PItemData( CB_PPLB.Items.Objects[i] )^.Value )] )
          else
            Result := Result + Format( ' or A.JHH=''%s''', [string( PItemData( CB_PPLB.Items.Objects[i] )^.Value )] )
        else
          exit;
    if Result <> '' then
      Result := Result + ')';    }
  end;

const
  QuerySQL = 'select B.DWMC 单位名称,A.YDTS 预订套数,A.LSTS 零售套数,A.NCTS 年册套数,A.YPTS 开发邮品 from TY_JJNFPJH A,TGS_GXDWSJB B where A.DWDM=B.DWDM(+)';
  QuerySQLBing = 'select B.DWMC 单位名称,A.JHFPZTS 计划分配总套数 from TY_JJNFPJH A,TGS_GXDWSJB B where A.DWDM=B.DWDM(+)';
var
  FChartSeries: TChartSeries;
  CondND: string;
  CondPPLB: string;
  Cap: string;
  i, X: integer;
begin
  //建立统计图类
  FChartSeries := nil;
  if RB_Zhu.Checked then
  begin
    FChartSeries := TBarSeries.Create( Self );
    with TBarSeries( FChartSeries ) do
    begin
      BarWidthPercent := 100;
    end;
  end else if RB_Bing.Checked then
    FChartSeries := TPieSeries.Create( Self )
  else if RB_Biao.Checked then
  begin
    Chart1.Visible := false;
    DBGrid1.Visible := true;
  end;
  Panel_Tl.Visible := RB_Zhu.Checked;
  if FChartSeries <> nil then
  begin
    Chart1.Visible := true;
    DBGrid1.Visible := false;
    Chart1.SeriesList.Clear;
    if not RB_Bing.Checked then
      FChartSeries.OnGetMarkText := DoOnGetMarkText;
    Chart1.AxisVisible := true;
    Chart1.Title.Text.Clear;
    Chart1.AllowZoom := true;
    Chart1.AllowPanning := pmBoth;
    Chart1.View3DOptions.Orthogonal := true;
    Chart1.UndoZoom;
    if RB_2D.Checked then
      Chart1.View3D := false
    else
      Chart1.View3D := true;
    FChartSeries.ParentChart := Chart1;
    FChartSeries.Marks.Font.Name := '宋体';
    FChartSeries.Marks.Font.Size := 9;
    if RB_Bing.Checked then
      FChartSeries.ColorEachPoint := true;
  end;
  CondND := GetCondND;
  CondPPLB := GetCondPPLB;

  Query1.Close;
  Query1.SQL.Clear;
  if not RB_Bing.Checked then
    Query1.SQL.Add( QuerySQL )
  else
    Query1.SQL.Add( QuerySQLBing );
  if CondND <> '' then
    Query1.SQL.Add( CondND );
  if CondPPLB <> '' then
    Query1.SQL.Add( CondPPLB );
  Query1.Open;
  
  //画统计图
  if FChartSeries <> nil then
  begin
    X := 0;
    while not Query1.Eof do
    begin
      for i := 1 to Query1.FieldCount - 1 do
      begin
        if i > 1 then Cap := ''
        else Cap := Query1.Fields[0].AsString;
        if RB_Bing.Checked then
          FChartSeries.AddXY( X, Query1.Fields[i].AsFloat, Cap )
        else
          FChartSeries.AddXY( X, Query1.Fields[i].AsFloat, Cap, FieldInfo[i - 1].Color );
        X := X + 1;
      end;
      //以柱状形势统计时,在各单位或年度之间留空列
      if RB_Zhu.Checked then
        X := X + Spacing;
      Query1.Next;
    end;
  end;
end;

procedure TFrmz_ndfpjhtjfx.DoOnGetMarkText( Sender: TChartSeries;
  ValueIndex: Integer; var MarkText: string );
begin
  MarkText := FormatFloat( '#,##0.###', Sender.YValue[ValueIndex] );
end;

procedure TFrmz_ndfpjhtjfx.NDChange(Sender: TObject);
begin
  CB_Ppmc.SQL.Text := 'select A.TMC||''(''||B.MC||'')'' PPMC, A.JHH from TF_PFXJHTAO A, TG_YZPPTZDM B where A.TZDM=B.TZDM(+) and A.ND=''' + ND.Text + ''' order by A.ND,to_number(A.XH)';
  CB_Ppmc.Open;
end;

procedure TFrmz_ndfpjhtjfx.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  SaveAllColWidth(Self);
end;

end.

⌨️ 快捷键说明

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