📄 sjdr_un.pas
字号:
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 + -