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

📄 sjdr_un.pas

📁 布林电话收费管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit sjdr_un;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BusinessSkinForm, bsSkinCtrls, StdCtrls, bsSkinBoxCtrls,
  bsMessages, bsSkinShellCtrls, bsSkinGrids, bsDBGrids,db, ComCtrls,
  bsSkinTabs,StrUtils,DateUtils,math;

type
  Tdrsj = class(TForm)
    bsSkinGroupBox1: TbsSkinGroupBox;
    bsBusinessSkinForm1: TbsBusinessSkinForm;
    bsSkinOpenDialog1: TbsSkinOpenDialog;
    bsSkinMessage1: TbsSkinMessage;
    bsSkinGroupBox2: TbsSkinGroupBox;
    bsSkinPanel1: TbsSkinPanel;
    bsSkinGroupBox3: TbsSkinGroupBox;
    bsSkinXFormButton1: TbsSkinXFormButton;
    bsSkinXFormButton2: TbsSkinXFormButton;
    bsSkinXFormButton3: TbsSkinXFormButton;
    bsSkinMemo1: TbsSkinMemo;
    bsSkinScrollBar1: TbsSkinScrollBar;
    bsSkinScrollBar2: TbsSkinScrollBar;
    bsSkinPageControl1: TbsSkinPageControl;
    bsSkinTabSheet1: TbsSkinTabSheet;
    bsSkinTabSheet2: TbsSkinTabSheet;
    bsSkinTabSheet3: TbsSkinTabSheet;
    bsSkinDBGrid1: TbsSkinDBGrid;
    bsSkinScrollBar5: TbsSkinScrollBar;
    bsSkinScrollBar3: TbsSkinScrollBar;
    bsSkinDBGrid2: TbsSkinDBGrid;
    bsSkinScrollBar4: TbsSkinScrollBar;
    bsSkinScrollBar6: TbsSkinScrollBar;
    bsSkinDBGrid3: TbsSkinDBGrid;
    bsSkinScrollBar7: TbsSkinScrollBar;
    bsSkinScrollBar8: TbsSkinScrollBar;
    bsSkinGauge1: TbsSkinGauge;
    bsSkinXFormButton4: TbsSkinXFormButton;
    procedure bsSkinXFormButton3Click(Sender: TObject);
    procedure bsSkinXFormButton1Click(Sender: TObject);
    procedure bsSkinXFormButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    function foundstring(sub,mas:string;cou:integer):integer;
    procedure bsSkinXFormButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  drs,j: Tdrsj;
  das,da1,da2:tdatasource;
implementation
   uses globe,dm_un,main_un;
{$R *.dfm}

function tdrsj.foundstring(sub,mas:string;cou:integer):integer;
//查找一个字符串在一个主串中第N次出现的位置
//找到就返回位置,找不到返回0;
var
 i,j,k:integer;
 mas1:string;
begin
 i:=pos(sub,mas);
 j:=1;
 k:=i;
 mas1:=copy(mas,i+1,length(mas)-i-1);
 while j<cou do
  begin
   i:=pos(sub,mas1);
   k:=k+i;
   mas1:=copy(mas1,i+1,length(mas1)-i-1);
   if i<>0 then
    j:=j+1
   else
    j:=cou+1;
  end;
 if j=cou then
   foundstring:=k
 else
   foundstring:=0;
end;

procedure Tdrsj.bsSkinXFormButton3Click(Sender: TObject);
begin
CLOSE;
end;

procedure Tdrsj.bsSkinXFormButton1Click(Sender: TObject);
begin
 try
 if bsskinopendialog1.Execute then
  begin
   bsskinmemo1.Lines.Clear;
   bsskinmemo1.Lines.LoadFromFile(bsskinopendialog1.FileName); 
  end
 except
  bsskinmessage1.MessageDlg('文本内容过大,不能显示...',mterror,[mbyes],0);
end;
end;
procedure Tdrsj.bsSkinXFormButton2Click(Sender: TObject);
var
 mytext:textfile;
 zj_num,bj_num,tel_unit,fl_name:string;
 b_date,e_date,b_time,e_time:tdatetime;
 fy_total,jbfl:real;
 i,j,k:integer;
 mb:string;
begin
bsskingauge1.Value:=0;
if BSSKINOPENDIALOG1.FileName<>'' then
 begin
 if bsskinmessage1.MessageDlg('你是否确定导入'+BSSKINOPENDIALOG1.FileName +'到数据库中?',mtinformation,[mbyes,mbno],0)=6 then
   begin
     dm:=tdm.Create(nil); 
     with dm do
       begin
        q_a.Close;
        q_a.SQL.Clear;
        q_a.SQL.Add('delete from drsj_tmp');
        q_a.Prepared;
        q_a.ExecSQL;
       end;
     assignfile(mytext,bsskinopendialog1.FileName );
     reset(mytext);
     main.stu.Caption:='系统正准备导入文本数据到数据库中,请稍候..首先文本数据的冲保存....' ;
     //绶冲数据到缓冲表中..备用.
     while not eof(mytext) do
      begin
       readln(mytext,mb);
       with dm do
          begin
           q_a.Close;
           q_a.SQL.Clear;
           q_a.SQL.Add('insert into drsj_tmp (zj_tel,bj_tel,');
           q_a.SQL.Add('B_DATE,e_date,b_time,e_time,TEL_UNIT,');
           q_a.SQL.Add('FL_NAME,TOTAL_MONEY,JBFL)');
           q_a.SQL.Add('values(:zj_tel,:bj_tel,:b_date,:e_date,');
           q_a.SQL.Add(':b_time,:e_time,:tel_unit,:fl_name,:total_money,');
           q_a.SQL.Add(':jbfl)');
          end;
    if pos(copy(mb,1,1),'0123456789')<>0 then
           begin
             if pos(',',mb)=0 then
              begin
                  zj_num:=copy(mb,1,9);
                  bj_num:=copy(mb,9,17);
                  b_date:=strtodatetime(copy(mb,27,4)+'-'+copy(mb,32,2)+'-'+copy(mb,35,2));
                  e_date:=strtodatetime(copy(mb,27,4)+'-'+copy(mb,32,2)+'-'+copy(mb,35,2));
                  b_time:=strtodatetime(copy(mb,27,4)+'-'+copy(mb,32,2)+'-'+copy(mb,35,2)+' '+copy(mb,39,8));
                  e_time:=strtodatetime(copy(mb,27,4)+'-'+copy(mb,32,2)+'-'+copy(mb,35,2)+' '+copy(mb,53,8));
                  if e_time<b_time then
                   begin
                    e_date:=e_date+1;
                    e_time:=strtodatetime(datetostr(e_date)+' '+copy(mb,53,8));
                   end;
                  tel_unit:=copy(mb,65,4);
                  fl_name:=copy(mb,71,12);
                  fy_total:=roundto(strtofloat(copy(mb,83,7)),-2);
                  jbfl:=strtofloat(trim(copy(mb,91,8)));
               end
              else
               begin
                  zj_num:=copy(copy(mb,foundstring(',',mb,2)+1,(foundstring(',',mb,3)-foundstring(',',mb,2)-1)),4,
                            length(copy(mb,foundstring(',',mb,2)+1,(foundstring(',',mb,3)-foundstring(',',mb,2)-1)))-3);
                 if length(zj_num)>13 then
                   zj_num:=leftstr(zj_num,13);
                  bj_num:=copy(mb,foundstring(',',mb,3)+1,(foundstring(',',mb,4)-foundstring(',',mb,3)-1));
                 if length(bj_num)>13 then
                   bj_num:=leftstr(bj_num,13);
                  b_time:=strtodatetime(ansireplacestr(copy(mb,foundstring(',',mb,4)+1,(foundstring(',',mb,5)-foundstring(',',mb,4)-1)),'.','-'));
                  e_time:=strtodatetime(ansireplacestr(copy(mb,foundstring(',',mb,5)+1,(foundstring(',',mb,6)-foundstring(',',mb,5)-1)),'.','-'));
                  b_date:=dateof(b_time);
                  e_date:=dateof(e_time);
                  tel_unit:='0';
                  fl_name:='IP电话';
                  fy_total:=strtofloat(copy(mb,foundstring(',',mb,7)+1,(foundstring(',',mb,8)-foundstring(',',mb,7)-1)));
                  jbfl:=fy_total;
               end;
              main.stu.Caption:='系统正准备导入文本数据到缓冲表中,请稍候.当前的电话号为:'+  zj_num;
             with dm do
              begin
                  q_a.Parameters.ParamByName('zj_tel').Value:=zj_num;
                  q_a.Parameters.ParamByName('bj_tel').Value:=trim(bj_num);
                  q_a.Parameters.ParamByName('b_date').Value:=b_date;
                  q_a.Parameters.ParamByName('e_date').Value:=e_date;
                  q_a.Parameters.ParamByName('b_time').Value:=b_time;
                  q_a.Parameters.ParamByName('e_time').Value:=e_time;
                  q_a.Parameters.ParamByName('tel_unit').Value:=TRIM(tel_unit);
                  q_a.Parameters.ParamByName('fl_name').Value:=TRIM(fl_name);
                  q_a.Parameters.ParamByName('total_money').Value:=fy_total;
                  q_a.Parameters.ParamByName('jbfl').Value:=jbfl;
                  q_a.Prepared;
                  q_a.ExecSQL;
               end;
             end;    
        end;
     //
     with dm do
      begin
       q_3.close;
       q_3.SQL.Clear;
       q_3.SQL.Add('select * from drsj_tmp ');
       q_3.Prepared;
       q_3.Open;
      end;
     bsskingauge1.MaxValue:=dm.q_3.Recordset.RecordCount;
     bsskingauge1.Value:=dm.q_3.RecNo;
     dm.q_3.first;
     while not dm.q_3.Eof do
      begin
           bsskingauge1.Value:=dm.q_3.RecNo;
            zj_num:=dm.q_3.FieldValues ['zj_tel'];
            bj_num:=dm.q_3.FieldValues ['bj_tel'];
            b_date:=dm.q_3.FieldValues ['b_date'];
            e_date:=dm.q_3.FieldValues ['e_date'];
            b_time:=dm.q_3.FieldValues ['b_time'];
            e_time:=dm.q_3.FieldValues ['e_time'];
            tel_unit:=dm.q_3.FieldValues ['tel_unit'];
            fl_name:=dm.q_3.FieldValues ['fl_name'];
            fy_total:=dm.q_3.FieldValues ['total_money'];
            jbfl:=dm.q_3.FieldValues ['jbfl'];
        main.stu.Caption:='当前为第'+inttostr(dm.q_3.RecNo)+'条记录  .'+'系统正准备导入缓冲数据到数据库中,请稍候.当前的电话号为:'+  zj_num+'电话时间为: '+datetimetostr(b_time);
        with dm do
         begin
          q_c.Close;
          q_c.SQL.Clear;
          q_c.SQL.Add('select * from DATA_YW where zj_tel=:zj_tel and b_time=:b_time');
          q_c.Parameters.ParamByName('zj_tel').Value:=zj_num;
          q_c.Parameters.ParamByName('b_time').Value:=b_time;
          q_c.Prepared;
          q_c.Open;
          if  q_c.Recordset.RecordCount=0 then
           begin
           main.stu.Caption:='当前为第'+inttostr(dm.q_3.RecNo)+'条记录  .'+'系统正准备导入缓冲数据到数据库中,请稍候.当前的电话号为:'+  zj_num+'电话时间为: '+datetimetostr(b_time)+'   数据可以导入';
              q_a.Close;
              q_a.SQL.Clear;
              q_a.SQL.Add('insert into DATA_YW (zj_tel,bj_tel,');

⌨️ 快捷键说明

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