📄 othertradejlcompareunit.~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 + -