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

📄 othertradejlcompareunit.pas

📁 公交行业的管理系统
💻 PAS
字号:
unit OtherTradeJLCompareUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, DB, ADODB;

type
  TOtherTradeJLCompare = class(TForm)
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    Panel1: TPanel;
    Panel2: TPanel;
    SpeedButton1: TSpeedButton;
    Label10: TLabel;
    Label11: TLabel;
    Edit6: TEdit;
    Edit7: TEdit;
    Panel3: TPanel;
    Label4: TLabel;
    Label12: TLabel;
    ComboBox2: TComboBox;
    Panel4: TPanel;
    BitBtn1: TBitBtn;
    SpeedButton2: TSpeedButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    ListView1: TListView;
    TabSheet2: TTabSheet;
    ListView2: TListView;
    Panel5: TPanel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
  private
    { Private declarations }
  public
    procedure IninLView(LView:TListView;sRow,eRow,sCol,eCol:Integer);
    procedure ClearLView(LView:TListView;sRow,eRow,sCol,eCol:Integer);
    procedure WriteListView(LView:TListView;bRow:Integer;eRow:Integer;Source:TADOQuery);
    procedure WritePercent(LView:TListView;sRow:Integer;eRow:Integer);
    { Public declarations }
  end;

var
  OtherTradeJLCompare: TOtherTradeJLCompare;

implementation

uses BusTradeDataModuleUnit, PrintProc2, PrintInfoUnit, CitySelectUnit;

{$R *.dfm}

procedure TOtherTradeJLCompare.WriteListView(LView:TListView;bRow:Integer;eRow:Integer;Source:TADOQuery);
var
i:integer;
begin
        for i:=bRow to eRow do
        begin
                if LView.Items[i].SubItems.Count<3 then
                begin
                        if (Source.fieldbyname('比较城市实际').AsString<>'') then
                                LView.Items[i].SubItems.Add(Converter(Source.fieldbyname('比较城市实际').ASFloat))
                        else
                                LView.Items[i].SubItems.Add('0');
                        if (Source.fieldbyname('被比较城市实际').AsString<>'') then
                                LView.Items[i].SubItems.Add(Converter(Source.fieldbyname('被比较城市实际').ASFloat))
                        else
                                LView.Items[i].SubItems.Add('0');
                        if (Source.fieldbyname('比较量').AsString<>'') then
                                LView.Items[i].SubItems.Add(Converter(Source.fieldbyname('比较量').ASFloat))
                        else
                                LView.Items[i].SubItems.Add('0');
                        LView.Items[i].SubItems.Add('0');
                        Source.Next;
                end
                else
                begin
                        if (Source.fieldbyname('比较城市实际').AsString<>'') then
                                LView.Items[i].SubItems[2]:=Converter(Source.fieldbyname('比较城市实际').ASFloat)
                        else
                                LView.Items[i].SubItems[2]:='0';
                        if (Source.fieldbyname('被比较城市实际').AsString<>'') then
                                LView.Items[i].SubItems[3]:=Converter(Source.fieldbyname('被比较城市实际').ASFloat)
                        else
                                LView.Items[i].SubItems[3]:='0';
                        if (Source.fieldbyname('比较量').AsString<>'') then
                                LView.Items[i].SubItems[4]:=Converter(Source.fieldbyname('比较量').ASFloat)
                        else
                                LView.Items[i].SubItems[4]:='0';
                        LView.Items[i].SubItems[6]:='0';
                        Source.Next;
                end;
        end;
end;

procedure TOtherTradeJLCompare.WritePercent(LView:TListView;sRow:Integer;eRow:Integer);
VAR
        IDIV,IDIVD:single;
        i:integer;
begin
        for i:=sRow to eRow do
        begin
                if LView.Items[i].SubItems[3]<>'0' then
                begin
                        iDiv:=StrToFloat(LView.Items[i].SubItems[4]);
                        iDivD:=StrToFloat(LView.Items[i].SubItems[3]);
                        LView.Items[i].SubItems[5]:=ConverterPercent(FloatToStr(iDiv/iDivD*100));
                end else LView.Items[i].SubItems[5]:='0';
        end;
end;

procedure TOtherTradeJLCompare.IninLView(LView:TListView;sRow,eRow,sCol,eCol:Integer);
var
        i,j:Integer;
begin
        for i:=sRow to eRow do
                for j:=sCol to eCol do
                        LView.Items[i].SubItems.Add('0');
end;

procedure TOtherTradeJLCompare.ClearLView(LView:TListView;sRow,eRow,sCol,eCol:Integer);
var
        i,j:Integer;
begin
        for i:=sRow to eRow do
                for j:=sCol to eCol do
                        LView.Items[i].SubItems[j]:='0';
end;

procedure TOtherTradeJLCompare.BitBtn1Click(Sender: TObject);
var
        iComCpy:String;
        iBaseCpy:string;
        iBaseYear:String;
        sqlString:String;
        IDiv,IDivD,Result:single;
begin
        ClearLView(ListView1,1,7,2,5);
        ClearLView(ListView1,9,13,2,5);
        ClearLView(ListView1,15,23,2,5);
        ClearLView(ListView2,0,6,2,5);
        ClearLView(ListView2,8,21,2,5);
        ClearLView(ListView2,23,24,2,5);
        BitBtn2.Enabled:=false;

        if Edit7.Text='' then
        begin
            showmessage('请选择被比较城市!');
            exit;
        end;
        if Edit6.Text=Edit7.Text then
        begin
            showmessage('对不起!比较城市不能与被比较城市相同!请重新选择!');
            exit;
        end;
        if ComboBox2.Text='' then
        begin
            showmessage('请输入报告期时间!');
            exit;
        end;
        if (length(ComboBox2.Text)<>4) or (ComboBox2.Text>'3000') or (ComboBox2.Text<'1900') then
        begin
                showmessage('对不起!报告期年份非法!请重新选择!');
                exit;
        end;

        ADOQuery2.Close;
        ADOQuery2.SQL.Clear;
        ADOQuery2.SQL.Add('select * from 公交行业城市交流指标表_z where 城市代码='+''''
                          +Edit6.Text+''''+' and 统计年份='+ComboBox2.Text+' AND 指标代码'
                          +' not in (' + '''' + 'JG01' + '''' +','+''''+'JG09'+''''+','
                          +''''+'JG15'+''''+','+''''+'JG32'+''''+','+''''+'JG47'+''''+')');
        ADOQuery2.Open;
        if ADOQuery2.RecordCount=0 then
        begin
            showmessage('比较城市在'+ComboBox2.Text+'年的数据为空!请重新选择报告期时间!');
            exit;
        end;

        ADOQuery2.Close;
        ADOQuery2.SQL.Clear;
        ADOQuery2.SQL.Add('select * from 公交行业城市交流指标表_z where 城市代码='+''''
                          +Edit7.Text+''''+' and 统计年份='+ComboBox2.Text+' AND 指标代码'
                          +' not in (' + '''' + 'JG01' + '''' +','+''''+'JG09'+''''+','
                          +''''+'JG15'+''''+','+''''+'JG32'+''''+','+''''+'JG47'+''''+')');
        ADOQuery2.Open;
        if ADOQuery2.RecordCount=0 then
        begin
            showmessage('被比较城市在'+ComboBox2.Text+'年的数据为空!请重新选择报告期时间!');
            exit;
        end;

        iComCpy:=''''+Edit6.Text+'''';
        iBaseCpy:=''''+Edit7.Text+'''';
        iBaseYear:=ComboBox2.Text;
        sqlString:='SELECT a.指标代码, max(a.本年实际) AS 比较城市实际,'
                  +' max(b.本年实际) AS 被比较城市实际, 比较城市实际-被比较城市实际 AS 比较量'
                  +' FROM 公交行业城市交流指标表_z AS a, 公交行业城市交流指标表_z AS b '
                  +' WHERE a.城市代码= '+iComCpy+' and b.城市代码='+iBaseCpy
                  +' And a.统计年份='+iBaseYear+ ' And b.统计年份='+iBaseYear
                  +' AND a.指标代码'+' not in (' + '''' + 'JG01' + '''' +','+''''+'JG09'+''''+','
                  +''''+'JG15'+''''+','+''''+'JG32'+''''+','+''''+'JG47'+''''+')'
                  +' And a.指标代码=b.指标代码 GROUP BY a.指标代码,a.统计年份,b.统计年份'
                  +' Order by a.指标代码';
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add(sqlString);
        ADOQuery1.Open;

        if ADOQuery1.RecordCount<>0 then
        begin
                ADOQuery1.First;

                WriteListView(ListView1,1,7,ADOQuery1);
                WriteListView(ListView1,9,13,ADOQuery1);
                WriteListView(ListView1,15,23,ADOQuery1);
                WriteListView(ListView2,0,6,ADOQuery1);
                WriteListView(ListView2,8,21,ADOQuery1);
                WriteListView(ListView2,23,24,ADOQuery1);

                //..................................百分比...............................//
                WritePercent(ListView1,1,7);
                WritePercent(ListView1,9,13);
                WritePercent(ListView1,15,23);
                WritePercent(ListView2,0,6);
                WritePercent(ListView2,8,21);
                WritePercent(ListView2,23,24);

                //...................JG011.........................//
                IDiv:=StrToFloat(ListView1.Items[1].SubItems[2]);
                IDivD:=StrToFloat(ListView1.Items[4].SubItems[2]);
                if IDivD<>0 then
                        Result:=IDiv/IDivD
                else
                        Result:=0;
                ListView1.Items[10].SubItems[2]:=Converter(Result);

                IDiv:=StrToFloat(ListView1.Items[1].SubItems[3]);
                IDivD:=StrToFloat(ListView1.Items[4].SubItems[3]);
                if IDivD<>0 then
                        Result:=IDiv/IDivD
                else
                        Result:=0;
                ListView1.Items[10].SubItems[3]:=Converter(Result);

                Result:=StrToFloat(ListView1.Items[10].SubItems[2])-StrToFloat(ListView1.Items[10].SubItems[3]);
                ListView1.Items[10].SubItems[4]:=Converter(Result);
                if StrToFloat(ListView1.Items[10].SubItems[3])<>0 then
                        Result:=StrToFloat(ListView1.Items[10].SubItems[4])/StrToFloat(ListView1.Items[10].SubItems[3])*100
                else
                        Result:=0;
                ListView1.Items[10].SubItems[5]:=ConverterPercent(FloatToStr(Result));

                BitBtn2.Enabled:=true;
        end;
end;

procedure TOtherTradeJLCompare.BitBtn3Click(Sender: TObject);
begin
        OtherTradeJLCompare.Close;
end;

procedure TOtherTradeJLCompare.BitBtn2Click(Sender: TObject);
var
        iRow:Integer;
        iCol:Integer;
begin
        if (DeviceDetect=0) then
        begin
                exit;
        end;

        if PrnInfoFrm.ShowModal=mrOK then
        begin
                OpenForEdit(ExtractFilePath(application.exeName),'BusTwCityJLComTab');

                for iRow:=0 to 24 do
                begin
                        for iCol:=2 to 5 do
                                WriteCellForEdit(iRow+5,iCol+2,ListView1.Items[iRow].SubItems[iCol]);
                        WriteCellForEdit(2,1,'比较城市:'+Edit6.Text);
                        WriteCellForEdit(3,1,'被比较城市:'+Edit7.Text);
                        WriteCellForEdit(3,4,'报告期:  '+ComboBox2.Text+'年');
                        WriteCellForEdit(30,1,'统计负责人:'+PrnInfoFrm.StatMainPerson);
                        WriteCellForEdit(30,4,'统计人员:'+PrnInfoFrm.StatPerson);
                        WriteCellForEdit(30,6,'填报日期:'+DateToStr(PrnInfoFrm.StatDate));
                end;

                for iRow:=0 to 23 do
                begin
                        for iCol:=2 to 5 do
                                WriteCell(iRow+36,iCol+2,ListView2.Items[iRow].SubItems[iCol]);
                        WriteCellForEdit(33,1,'比较城市:'+Edit6.Text);
                        WriteCellForEdit(34,1,'被比较城市:'+Edit7.Text);
                        WriteCellForEdit(34,4,'报告期:  '+ComboBox2.Text+'年');
                        WriteCellForEdit(60,1,'统计负责人:'+PrnInfoFrm.StatMainPerson);
                        WriteCellForEdit(60,4,'统计人员:'+PrnInfoFrm.StatPerson);
                        WriteCellForEdit(60,6,'填报日期:'+DateToStr(PrnInfoFrm.StatDate));
                end;

                PrintExcelEdit;
        end;
end;

procedure TOtherTradeJLCompare.SpeedButton1Click(Sender: TObject);
begin
        if CitySelectForm.ShowModal=mrOk then
                Edit7.Text:=CitySelectForm.Edit1.Text;
        CitySelectForm.Close;
end;

procedure TOtherTradeJLCompare.SpeedButton2Click(Sender: TObject);
begin
        if CitySelectForm.ShowModal=mrOk then
                Edit6.Text:=CitySelectForm.Edit1.Text;
        CitySelectForm.Close;
end;

procedure TOtherTradeJLCompare.FormShow(Sender: TObject);
begin
        TabSheet1.TabVisible:=true;
        TabSheet2.TabVisible:=true;
        PageControl1.ActivePage:=TabSheet2;
        PageControl1.ActivePage:=TabSheet1;
        IninLView(ListView1,1,7,2,5);
        IninLView(ListView1,9,13,2,5);
        IninLView(ListView1,15,23,2,5);
        IninLView(ListView2,0,6,2,5);
        IninLView(ListView2,8,21,2,5);
        IninLView(ListView2,23,24,2,5);
        BitBtn2.Enabled:=false;
end;

procedure TOtherTradeJLCompare.Edit6Change(Sender: TObject);
begin
        ClearLView(ListView1,1,7,2,5);
        ClearLView(ListView1,9,13,2,5);
        ClearLView(ListView1,15,23,2,5);
        ClearLView(ListView2,0,6,2,5);
        ClearLView(ListView2,8,21,2,5);
        ClearLView(ListView2,23,24,2,5);
        BitBtn2.Enabled:=false;
end;

procedure TOtherTradeJLCompare.Edit7Change(Sender: TObject);
begin
        ClearLView(ListView1,1,7,2,5);
        ClearLView(ListView1,9,13,2,5);
        ClearLView(ListView1,15,23,2,5);
        ClearLView(ListView2,0,6,2,5);
        ClearLView(ListView2,8,21,2,5);
        ClearLView(ListView2,23,24,2,5);
        BitBtn2.Enabled:=false;
end;

procedure TOtherTradeJLCompare.ComboBox2Change(Sender: TObject);
begin
        ClearLView(ListView1,1,7,2,5);
        ClearLView(ListView1,9,13,2,5);
        ClearLView(ListView1,15,23,2,5);
        ClearLView(ListView2,0,6,2,5);
        ClearLView(ListView2,8,21,2,5);
        ClearLView(ListView2,23,24,2,5);
        BitBtn2.Enabled:=false;
end;

end.

⌨️ 快捷键说明

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