📄 bustrazhyearunit.pas
字号:
unit BusTraZHYearUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, DB, ADODB;
type
TBusTraZhYearFm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel4: TPanel;
Label6: TLabel;
Edit1: TEdit;
Panel5: TPanel;
Label2: TLabel;
Label3: TLabel;
ComboBox1: TComboBox;
Panel6: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Panel3: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
ListView1: TListView;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
TabSheet2: TTabSheet;
ListView2: TListView;
TabSheet5: TTabSheet;
ListView3: TListView;
TabSheet6: TTabSheet;
ListView4: TListView;
TabSheet7: TTabSheet;
ListView5: TListView;
TabSheet8: TTabSheet;
ListView6: TListView;
TabSheet3: TTabSheet;
ListView7: TListView;
TabSheet4: TTabSheet;
ListView8: TListView;
ADOQuery1: TADOQuery;
Panel14: TPanel;
Label4: TLabel;
Label5: TLabel;
ComboBox2: TComboBox;
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
iExistFlag:Integer;
{ Public declarations }
function CalculatePercent(sDiv:string;sDivd:String;sAddPar:Integer):string;
end;
var
BusTraZhYearFm: TBusTraZhYearFm;
implementation
uses BusTradeDataModuleUnit, PrintInfoUnit, PrintProc;
{$R *.dfm}
function TBusTraZhYearFm.CalculatePercent(sDiv:string;sDivd:String;sAddPar:Integer):string;
var
iReturn:String;
iDiv:single;
iDivd:single;
iResult:single;
begin
if (sDiv='') then
begin
iDiv:=0;
end
else
begin
iDiv:=StrToFloat(sDiv);
end;
iDivd:=StrToFloat(sDivd);
if iDivd=0 then
begin
iResult:=0;
end
else
begin
iResult:=(iDiv-iDivd)/iDivd*sAddPar;
end;
iReturn:=FloatToStr(iResult);
CalculatePercent:=ConverterPercent(iReturn);
end;
procedure TBusTraZhYearFm.BitBtn3Click(Sender: TObject);
begin
Close;
end;
procedure TBusTraZhYearFm.BitBtn1Click(Sender: TObject);
var
iYear:String;
iLYear:String;
sqlString:String;
iRow:integer;
iCityCode:String;
iListView:TListView;
iDataType:String;
begin
iYear:=ComboBox1.Text;
if ((Length(iYear) <> 4) or (iYear<'1990') or (iYear >'2030')) then
begin
ShowMessage('请输入在时间范围1990-2030内的合法年份!');
exit;
end;
iLYear:=IntToStr(StrToInt(iYear)-1);
iDataType:=ComboBox2.Text;
iCityCode:='''' + '022' + '''';
//-----判断是否存在今年的数据-----{查询}
sqlString:= 'select 指标代码,' + iDataType + ' as 实际 from 公交行业综合年报_z where '
//+ ' 城市代码=' + iCItyCode +
+' 统计年份=' + iYear + ' order by 指标代码';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlString);
ADOQuery1.Open;
if ADOQuery1.RecordCount=0 then
begin
ShowMessage('不存在' + iYear + '年的行业综合年报数据,请先生成!');
ClearData(ListView1,22,0,3,2);
ClearData(ListView2,22,0,3,2);
ClearData(ListView3,22,0,3,2);
ClearData(ListView4,22,0,3,2);
ClearData(ListView5,22,0,3,2);
ClearData(ListView6,23,0,3,2);
ClearData(ListView7,23,0,3,2);
ClearData(ListView8,23,0,3,2);
BitBtn2.Enabled:=false;
exit;
end
else
begin
ADOQuery1.First;
for iRow:= 0 to ADOQuery1.RecordCount-1 do
begin
if ADOQuery1.FieldByName('实际').AsString<>'' then
begin
iExistFlag:=1;
break;
end;
ADOQuery1.Next;
end;
if iExistFlag=0 then
begin
ShowMessage('不存在' + iYear + '年的行业综合年报数据,请先生成!');
ClearData(ListView1,22,0,3,2);
ClearData(ListView2,22,0,3,2);
ClearData(ListView3,22,0,3,2);
ClearData(ListView4,22,0,3,2);
ClearData(ListView5,22,0,3,2);
ClearData(ListView6,23,0,3,2);
ClearData(ListView7,23,0,3,2);
ClearData(ListView8,23,0,3,2);
exit;
end;
end;
iExistFlag:=0;
sqlString:= 'select 指标代码,' + iDataType+ ' as 实际 from 公交行业综合年报_z where '
//+ ' 城市代码=' + iCityCode
+ ' 统计年份=' + iLYear + ' order by 指标代码';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlString);
ADOQuery1.Open;
if ADOQuery1.RecordCount=0 then
begin
ShowMessage('不存在' + iLYear + '年的行业综合年报数据,请先生成!');
ClearData(ListView1,22,0,3,2);
ClearData(ListView2,22,0,3,2);
ClearData(ListView3,22,0,3,2);
ClearData(ListView4,22,0,3,2);
ClearData(ListView5,22,0,3,2);
ClearData(ListView6,23,0,3,2);
ClearData(ListView7,23,0,3,2);
ClearData(ListView8,23,0,3,2);
BitBtn2.Enabled:=false;
exit;
end
else
begin
ADOQuery1.First;
for iRow:= 0 to ADOQuery1.RecordCount-1 do
begin
if ADOQuery1.FieldByName('实际').AsString<>'' then
begin
iExistFlag:=1;
break;
end;
ADOQuery1.Next;
end;
if iExistFlag=0 then
begin
ShowMessage('不存在' + iYear + '年的行业综合年报数据,请先生成!');
ClearData(ListView1,22,0,3,2);
ClearData(ListView2,22,0,3,2);
ClearData(ListView3,22,0,3,2);
ClearData(ListView4,22,0,3,2);
ClearData(ListView5,22,0,3,2);
ClearData(ListView6,23,0,3,2);
ClearData(ListView7,23,0,3,2);
ClearData(ListView8,23,0,3,2);
exit;
end;
iExistFlag:=0;
{ADOQuery1.First;
for iRow := 0 to ADOQuery1.RecordCount-1 do
begin
if ADOQuery1.FieldByName('全年实际').Value=0 then
begin
ShowMessage('对不起,基期数据不能为零,请你重新生成数据,或者选择新的基期!');
ClearData(ListView1,22,0,3,2);
ClearData(ListView2,22,0,3,2);
ClearData(ListView3,22,0,3,2);
ClearData(ListView4,22,0,3,2);
ClearData(ListView5,22,0,3,2);
ClearData(ListView6,23,0,3,2);
ClearData(ListView7,23,0,3,2);
ClearData(ListView8,23,0,3,2);
BitBtn2.Enabled:=false;
exit;
end;
ADOQuery1.Next;
end;
}
end;
//-------查询数据填如ListView-------
sqlString:= ' select a.指标代码,a.' + iDataType + ' as 全年实际,b.' + iDataType + ' as 去年同期'//,(全年实际-去年同期)/去年同期*100 as 比较'
+ ' from 公交行业综合年报_z a,公交行业综合年报_z b'
+ ' where '//a.城市代码=' + iCityCode + ' and b.城市代码=a.城市代码'
+ ' a.统计年份=' + iYear + ' and b.统计年份=' + iLYear
+ ' and b.指标代码=a.指标代码 order by a.指标代码';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlString);
ADOQuery1.Open;
ADOQuery1.First;
//-------第一页-------------
iListView:=ListView1;
for iRow := 0 to 21 do
begin
iListView.Items[iRow].SubItems[2]:= Converter(ADOQuery1.FieldByName('全年实际').AsString);
iListView.Items[iRow].SubItems[3]:= Converter(ADOQuery1.FieldByName('去年同期').AsString);
if (iListView.Items[iRow].SubItems[3]='') or (iListView.Items[iRow].SubItems[3]='0') then
begin
iListView.Items[iRow].SubItems[4]:='0';
end
else
begin
iListView.Items[iRow].SubItems[4]:= CalculatePercent(iListView.Items[iRow].SubItems[2],iListVIew.Items[iRow].SubItems[3],100);
end;
ADOQuery1.Next;
end;
//--------第二页------------
iListVIew:=ListView2;
for iRow := 0 to 21 do
begin
iListView.Items[iRow].SubItems[2]:= Converter(ADOQuery1.FieldByName('全年实际').AsString);
iListView.Items[iRow].SubItems[3]:= Converter(ADOQuery1.FieldByName('去年同期').AsString);
if (iListView.Items[iRow].SubItems[3]='') or (iListView.Items[iRow].SubItems[3]='0') then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -