📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzButton, DB, ADODB, Grids, RzGrids, StdCtrls, RzLabel, RzCmboBx,
Mask, RzEdit, RzLine, ComCtrls, ImgList, ToolWin, Menus, xpWindow ;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
aQuery: TADOQuery;
GroupBox1: TGroupBox;
RzLabel2: TRzLabel;
RzLabel3: TRzLabel;
RzLabel4: TRzLabel;
RzLabel5: TRzLabel;
RzLabel6: TRzLabel;
RzLabel7: TRzLabel;
RzLabel8: TRzLabel;
RzLabel9: TRzLabel;
edtBJ1: TRzEdit;
edtSPQYDM1: TRzEdit;
edtDZZRDWBM1: TRzEdit;
edtYWBM1: TRzEdit;
edtJSY1: TRzEdit;
edtWJCSSJ1: TRzEdit;
edtJLTTS1: TRzEdit;
edtBLZD1: TRzEdit;
RzLabel1: TRzLabel;
edtHC1: TRzEdit;
RzLabel19: TRzLabel;
edtHH1: TRzEdit;
GroupBox2: TGroupBox;
RzLabel16: TRzLabel;
RzLabel17: TRzLabel;
RzLabel18: TRzLabel;
edtJLTTS2: TRzEdit;
edtHDTSHJ2: TRzEdit;
edtXXFZEHJ2: TRzEdit;
RzLabel10: TRzLabel;
edtBJHTXF2: TRzEdit;
edtJSJE2: TRzEdit;
RzLabel20: TRzLabel;
GroupBox3: TGroupBox;
FileRecdList: TListView;
RzLabel21: TRzLabel;
edtBLZD2: TRzEdit;
RzLabel22: TRzLabel;
edtHC2: TRzEdit;
RzLabel23: TRzLabel;
edtHH2: TRzEdit;
RzLabel11: TRzLabel;
edtBJ2: TRzEdit;
RzLabel12: TRzLabel;
edtSPQYDM2: TRzEdit;
RzLabel13: TRzLabel;
edtDZZRDWBM2: TRzEdit;
RzLabel14: TRzLabel;
edtYWBM2: TRzEdit;
RzLabel15: TRzLabel;
edtJSY2: TRzEdit;
ImageList2: TImageList;
ImageList1: TImageList;
ToolBar1: TToolBar;
btnPro: TToolButton;
btnExport: TToolButton;
ToolButton5: TToolButton;
btnClose: TToolButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
btnInfos: TToolButton;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
xpWindow1: TxpWindow;
SaveTxtDlg: TSaveDialog;
procedure AddFileRecd(vc0,vc1,vc2,vc3,vc4,vc5,vc6,vc7,vc8,vc9:string);
procedure WriteFileRecord(IsApp:boolean);
procedure FormCreate(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure btnExportClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure TotalJLT;
procedure edtHDTSHJ2Change(Sender: TObject);
procedure GetResult;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
//access密码:chougoushi
implementation
uses FileRecord, About;
{$R *.dfm}
procedure TForm1.TotalJLT;
begin
edtJLTTS1.Text:=IntToStr(FileRecdList.Items.Count);
edtJLTTS2.Text:= edtJLTTS1.Text;
end;
procedure TForm1.AddFileRecd(vc0,vc1,vc2,vc3,vc4,vc5,vc6,vc7,vc8,vc9:string);
begin
with FileRecdList.items.add do
begin
caption:= vc0;
subitems.add(vc1);
subitems.add(vc2);
subitems.add(vc3);
subitems.add(vc4);
subitems.add(vc5);
subitems.add(vc6);
subitems.add(vc7);
subitems.add(vc8);
subitems.add(vc9);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
AppPath:string;
begin
AppPath := ExtractFilePath(Application.ExeName);
with ADOConnection1 do
begin
Close;
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+AppPath+'data\AtData.mdb'+';'+
'Mode=Share Deny None;'+
'Persist Security Info=False;'+
'Jet OLEDB:Database Password=chougoushi';
Connected:=True;
end;
edtJSY1.Text:=FormatDateTime('YYYYMM',Date-30);
edtJSY2.Text:=edtJSY1.Text;
edtWJCSSJ1.Text:=FormatDateTime('YYYYMMDDhhmmss',now);
end;
procedure TForm1.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.WriteFileRecord(IsApp:boolean);
begin
//
if IsApp then
begin
with DlgFileRecord do
begin
// edtBJ3.Text:='50';
edtHDSCRQ3.Text:=FormatDateTime('YYYYMMDD',now);
// edtSPQYDM3.Text:='901150';
// edtYWDM3.Clear;
// edtJFLX3.Clear;
// edtZF3.Clear;
// edtSPFCBL3.Clear;
// edtHDTS3.Clear;
// edtJFYHGSSDM3.Clear;
// edtXXFZE3.Clear;
if DlgFileRecord.ShowModal=mrYes then
begin
AddFileRecd(edtBJ3.Text,
edtHDSCRQ3.Text,
edtSPQYDM3.Text,
edtYWDM3.Text,
edtJFLX3.Text,
edtZF3.Text ,
edtSPFCBL3.Text ,
edtHDTS3.Text,
edtJFYHGSSDM3.Text,
edtXXFZE3.Text
);
end;
end;
end else
begin
if FileRecdList.Selected<> nil then
begin
with DlgFileRecord do
begin
edtBJ3.Text:= FileRecdList.Items.Item[FileRecdList.Selected.Index].Caption;
edtHDSCRQ3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[0];
edtSPQYDM3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[1];
edtYWDM3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[2];
edtJFLX3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[3];
edtZF3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[4];
edtSPFCBL3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[5];
edtHDTS3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[6];
edtJFYHGSSDM3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[7];
edtXXFZE3.Text:=FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[8];
if ShowModal=mrYes then
begin
FileRecdList.Items.Item[FileRecdList.Selected.Index].Caption :=edtBJ3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[0] :=edtHDSCRQ3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[1] :=edtSPQYDM3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[2] :=edtYWDM3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[3] :=edtJFLX3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[4] :=edtZF3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[5] :=edtSPFCBL3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[6] :=edtHDTS3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[7] :=edtJFYHGSSDM3.Text ;
FileRecdList.Items.Item[FileRecdList.Selected.Index].SubItems[8] :=edtXXFZE3.Text ;
end;
end;
end;
end;
end;
procedure TForm1.GetResult;
var
ac1:Integer;
ac2:Currency;
i:integer;
begin
//
ac1 :=0;
ac2 :=0;
for i:=0 to FileRecdList.Items.Count-1 do
begin
ac1 := ac1 +StrToInt(FileRecdList.Items.Item[i].SubItems[6]);
ac2 := ac2 +StrToCurr(FileRecdList.Items.Item[i].SubItems[8]);
end;
edtHDTSHJ2.Text := IntToStr(ac1);
edtXXFZEHJ2.Text := CurrToStr(Round(ac2));
edtJSJE2.Text := IntToStr(StrToInt(edtXXFZEHJ2.Text) - StrToInt(edtBJHTXF2.Text));
end;
procedure TForm1.N1Click(Sender: TObject);
begin
WriteFileRecord(true);
TotalJLT;
GetResult;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
WriteFileRecord(false);
GetResult;
end;
function FormatByZero(aLen:Integer;aName:String):String;
var
sLen,nLen:Integer; //源长度、现长度
begin
//0格式化
sLen := length(aName);
nLen := aLen-sLen;
Result := stringofchar('0',nLen)+aName;
end;
function FormatBySpace(aLen:Integer):String;
begin
//字符串格式化
Result := stringofchar(' ',aLen);
end;
function FormatByBlank_Left(aLen:Integer;aName:String):String;
var
sLen,nLen:Integer; //源长度、现长度
begin
//' '格式化
sLen := length(aName);
nLen := aLen-sLen;
Result := stringofchar(' ',nLen)+aName;
end;
function FormatByBlank_right(aLen:Integer;aName:String):String;
var
sLen,nLen:Integer; //源长度、现长度
begin
//' '格式化
sLen := length(aName);
nLen := aLen-sLen;
Result := aName+stringofchar(' ',nLen);
end;
(*
var
Texts :TStringList;
begin
try
Texts := TStringList.Create;
if FileExists(AppPath+'\Log\Search_Log_'+FormatdateTime('yyyymmdd',Now)+'.TXT') then
Texts.LoadFromFile(AppPath+'\Log\Search_Log_'+FormatdateTime('yyyymmdd',Now)+'.TXT');
Texts.Add(LogContent);
Texts.SaveToFile(AppPath+'\Log\Search_Log_'+FormatdateTime('yyyymmdd',Now)+'.TXT');
finally
Texts.Free;
end;
end;
*)
procedure TForm1.btnExportClick(Sender: TObject);
var
aFileBegin,aFileEnd:String;
aFileRecord: array of String;
aRecordCount,i:Integer;
aok:string;
FileContent :String;
Texts :TStringList;
begin
aFileBegin := edtBJ1.Text+FormatByBlank_Left(20,edtSPQYDM1.Text)+edtDZZRDWBM1.Text+edtYWBM1.Text+edtJSY1.Text+
edtWJCSSJ1.Text+FormatByZero(9,edtJLTTS1.Text)+FormatBySpace(41)+#13#10;
aFileEnd := edtBJ2.Text+edtSPQYDM2.Text+edtDZZRDWBM2.Text+edtYWBM2.Text+edtJSY2.Text+
FormatByZero(9,edtJLTTS2.Text)+FormatByZero(12,edtHDTSHJ2.Text)+FormatByZero(14,edtXXFZEHJ2.Text)+
FormatByZero(14,edtBJHTXF2.Text)+FormatByZero(14,edtJSJE2.Text)+FormatBySpace(1)+#13#10;
FileContent := aFileBegin+aFileEnd;
aRecordCount := FileRecdList.Items.Count;
SetLength(aFileRecord,aRecordCount);
for i:=0 to aRecordCount-1 do
begin
aFileRecord[i] :=
FileRecdList.Items.Item[i].Caption+ //记录体标记 2
FileRecdList.Items.Item[i].SubItems[0]+ //话单生成日期 8
FormatByBlank_Left(20,FileRecdList.Items.Item[i].SubItems[1])+ //SP企业代码 6
FormatByBlank_right(10,FileRecdList.Items.Item[i].SubItems[2])+//业务代码 10
FileRecdList.Items.Item[i].SubItems[3]+ //计费类型 2位如01,02 2
FormatByZero(5,FileRecdList.Items.Item[i].SubItems[4])+ //资费 5
FormatByZero(4,FileRecdList.Items.Item[i].SubItems[5])+ //SP分成比例 4
FormatByZero(11,FileRecdList.Items.Item[i].SubItems[6])+ //话单条数 10
FileRecdList.Items.Item[i].SubItems[7]+ //计费用户归属省代码 3
FormatByZero(12,FileRecdList.Items.Item[i].SubItems[8])+ //信息费总额 12
FormatBySpace(21); //保留字段1 35+2
if i<aRecordCount-1 then
aFileRecord[i]:=aFileRecord[i]+#13#10;
FileContent:=FileContent+ aFileRecord[i];
// ShowMessage(aFileRecord[i]+INTTOSTR(LENGTH(aFileRecord[i])));
end;
try
Texts := TStringList.Create;
SaveTxtDlg.FileName:='spdz_'+edtYWBM1.Text+'_'+FormatByZero(20,edtSPQYDM1.Text)+'_'+edtDZZRDWBM1.Text+'_'+edtJSY1.Text+'.txt';
if SaveTxtDlg.Execute then
begin
Texts.Add(FileContent);
Texts.SaveToFile(SaveTxtDlg.FileName);
end;
finally
Texts.Free;
end;
//ShowMessage(aFileBegin+aFileEnd+aok );
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
try
Application.CreateForm(TAboutBox, AboutBox);
AboutBox.ShowModal;
finally
AboutBox.Free;
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if FileRecdList.Selected<> nil then
if Application.MessageBox('确定要删除此文件记录体吗?','提示信息',MB_ICONQUESTION +MB_YESNO)=mrYes then
begin
FileRecdList.DeleteSelected;
TotalJLT;
GetResult;
end;
end;
function getBJHTXF(var MsgSum:Integer):Currency;
var
TmpResult : Currency;
begin
(*
不均衡下行短信流量(条/月) 资费标准(元/条) 计算方法X=(MT-MO)条/月
10万条以下 0.08 X*0.08. 至少2000元
10万至30万 0.07 (X-10万)*0.07+10万*0.08
30万至100万 0.06 (X-30万)*0.06+20万*0.07+10万*0.08
100万以上 0.05 (X-100万)*0.05+70万*0.06+20万*0.07+10万*0.08
*)
if MsgSum <=100000 then
begin
TmpResult := MsgSum * 0.08;
if TmpResult <= 2000 then
TmpResult := 2000;
Result := TmpResult;
end else
if (MsgSum>100000) and (MsgSum <= 300000) then
begin
TmpResult := (MsgSum -100000)*0.07 + 100000 * 0.08;
Result := TmpResult;
end else
if (MsgSum>300000) and (MsgSum <= 1000000) then
begin
TmpResult := (MsgSum-300000)*0.06+200000*0.07+100000*0.08;
Result := TmpResult;
end else
if (MsgSum>1000000 ) then
begin
TmpResult := (MsgSum-1000000)*0.05+700000*0.06+100000*0.08;
Result := TmpResult;
end;
end;
procedure TForm1.edtHDTSHJ2Change(Sender: TObject);
var
aInt:Integer;
begin
//
try
aInt:=StrToInt(edtHDTSHJ2.Text);
// edtBJHTXF2.Text :=CurrToStr(Round(getBJHTXF(aInt))*100);
edtBJHTXF2.Text :=CurrToStr(Round(getBJHTXF(aInt))); //由分换成元
except
Application.MessageBox('录入有误','错误',MB_ICONERROR+MB_OK);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -