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

📄 unit1.pas

📁 移动Sp专用结算对账工具。每次节省手工5小时的时间。
💻 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 + -