📄 myvar.pas
字号:
reset(txt);
ProBar.Visible:=true;
ProBar.Max:= FileSize(txt); ////////////////////
while not Eof(txt) do
begin
readln(txt,gs); inc(j);
ProBar.Position:=j; //////////////////////
StatusBar.Text := gs;
DBN.BtnClick(nbinsert);
try
i := 0;
while i < (quy.FieldCount-1) do
begin
s := sltfu(gs);
if (quy.Fields.Fields[i].DataType = ftMemo) then
begin
if FileExists(extractfilepath(fname)+quy.fieldbyname(zdsvm).asstring +'.txt')
then TBlobField(quy.Fields[i]).loadfromFile(extractfilepath(fname)+quy.fieldbyname(zdsvm).asstring +'.txt')
else quy.Fields[i].value:= '';
end
else quy.Fields[i].value:=s ;
inc(i);
end;
quy.Fields[quy.FieldCount-1].value:=ADDjlhFU(vjlh) ;
DBN.BtnClick(nbpost);
except
messagedlg('输入文件出错!!! 第《' + inttostr(j)+ '》行!',mtinformation,[mbok],0);
j:=j-1;
if (MessageDLG('删除已入库的记录吗?',mtCONfirmation,[mbYes,mbNo],0) = mrYes)
then begin
mydelectfu(StatusBar,ProBar,quyname,quy, sql, jlh,fname2) ;
j:=0;
end;
StatusBar.Text := gs ;
quy.Active := true;
break;
end; //except
end; //while not Eof(txt) do
finally
closefile(txt);
StatusBar.Text :='总共读入'+inttostr(j)+'行数据记录' ;
quy.CachedUpdates := false;
end; //finally
quy.EnableConstraints;
ProBar.Position:= ProBar.Max;
end;
procedure deldatenoaskpd(quy : TQuery; sn , s1,s2:string);
begin
quy.Close;
quy.SQL.Clear;
quy.SQL.Add(' delete from ' + sn + ' where ' + s1 + ' = :aa ' );
quy.Params[0].Value := s2;
quy.ExecSQL;
end;
procedure deljlhnoaskpd(quy:Tquery;sql:Tupdatesql;vjlh:integer);
begin
quy.CachedUpdates := true;
SQL.SetParams(ukdelete);
SQL.Query[ukdelete].Params[0].AsInteger := vjlh;
SQL.ExecSQL(ukdelete);
quy.CachedUpdates := false;
end;
procedure deljlh_noaskpd(quy:Tquery;sql:Tupdatesql);
var vjlh : integer;
begin
quy.CachedUpdates := true;
SQL.SetParams(ukdelete);
vjlh := quy.FieldByName('jlh').ASinteger;
SQL.Query[ukdelete].Params[0].AsInteger := vjlh;
SQL.ExecSQL(ukdelete);
quy.CachedUpdates := false;
end;
function myrepeatdefu(StatusBar:TStatusPanel;ProBar: TProgressBar;
quy:TQuery;sql:Tupdatesql;sn:string;fname:string): boolean;
var range:string;
i,n,sl:integer;
value:array of string;
var txt : textfile;
gs : string;
function checkvalue(value:array of string;quy:TQuery): boolean;
var ii:integer;
begin
for ii:= 0 to quy.FieldCount-2 do
begin
if value[ii]<>quy.Fields[ii].AsString then
begin
result:=false;
exit;
end;
end;
result:=true;
end;
procedure getvalue(var value:array of string;quy:TQuery);
var iii:integer;
begin
for iii:=0 to quy.FieldCount-2 do
value[iii]:= quy.Fields[iii].AsString;
end;
function getvalueall(var value:array of string;n:integer):string;
var iiii:integer;
begin
result:='';
for iiii:=0 to n-2 do
result:=result+value[iiii]+','
end;
begin
assignfile(txt,fname);
rewrite(txt);
result:=true;
n := quy.FieldCount; sl:=0;
setlength(value,n) ;
range:=' order by ';
for i:=0 to quy.FieldCount-1 do
range:=range + quy.Fields[i].FullName+',';
range:=copy(range,0,length(range)-1);
selectAllfu(quy,sn,range);
ProBar.Visible:=true;
ProBar.Max:= quy.RecordCount;
ProBar.Position:=0;
getvalue(value,quy);
quy.Next;
while not quy.Eof do
begin
repeat
if checkvalue(value,quy)=true then
begin
gs := getvalueall(value,n);
writeln(txt,gs); inc(sl) ;
deljlhnoaskpd(quy,sql,quy.Fieldbyname('jlh').Value);
result:=false;
quy.Next;
ProBar.Position:= ProBar.Position+1;
end;
until (checkvalue(value,quy)=false) or (quy.Eof) ;
getvalue(value,quy);
quy.Next;
ProBar.Position:= ProBar.Position+1;
end;
ProBar.Position:=n;
selectAllfu(quy,sn,range);
closefile(txt);
StatusBar.Text:='一共删除'+inttostr(sl)+'条记录.'
end;
function myrepeatgetfu(StatusBar:TStatusPanel;ProBar: TProgressBar;var altertv: string;
quy:TQuery;dbgrid:Tdbgrid;sn,zdm:string): boolean;
var n,sl,alterl:integer;
s : string;
chang:boolean;
begin
altertv:=''; alterl:=1;
result:=true; chang:=true;
selectAllfu(quy,sn,' order by '+zdm);
n := quy.FieldCount; sl:=0;
ProBar.Visible:=true;
ProBar.Max:= quy.RecordCount;
ProBar.Position:=0;
s:= quy.Fieldbyname(zdm).asstring;
quy.next;
while not quy.Eof do
begin
repeat
if quy.Fieldbyname(zdm).asstring=s
then begin
if chang=true
then begin
inc(sl) ;
altertv:=altertv+inttostr(alterl)+',';
end;
chang:=false;
result:=false;
quy.Next;
ProBar.Position:= ProBar.Position+1;
end;
until (quy.Fieldbyname(zdm).asstring<>s) or (quy.Eof) ;
s:= quy.Fieldbyname(zdm).asstring;
chang:=true;
inc(alterl);
quy.Next;
ProBar.Position:= ProBar.Position+1;
end;
ProBar.Position:=n;
StatusBar.Text:='一共发现'+inttostr(sl)+'条记录有重复项.'
end;
procedure changtree(var st:string;var TreeV: TTreeView);
var i,index:integer;
s:string;
begin
index:=-1;
repeat
if pos(',',st)<>0
then begin
s:=sltfu(st);
i:=strtoint(s);
if index=-1 then index:=i;
TreeV.Items[i-1].ImageIndex:=1;
end;
until pos(',',st)=0;
TreeV.Repaint;
TreeV.Items[index-1].Selected:=true;
end;
//////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
function selectonlybhfu(Quy:TQuery;sn,mzd,mval:string;ln:integer;tj:string):integer;
var i : integer;
svn,svz,sxz,sxx : string;
gs : string;
begin
svn := mzd;
svz := mval; sxz := '';
i := 1;
repeat
gs := sltfu(svn);
sxz := sxz + gs + ' =:' + gs + inttostr(i) + ' or ' ;
inc(i);
until i > ln;
delete(sxz,length(sxz)-2,3);
quy.Close;
quy.SQL.Clear;
quy.SQL.Add('select * from ' + sn + ' where ' + sxz + tj ); /////////
i := 0;
repeat
sxx := sltfu(svz);
quy.Params[i].Value := sxx ;
inc(i);
until i = ln;
quy.Active := true;
quy.First;
result := quy.RecordCount;
end;
function selectrangfu(Quy:TQuery;sn,Mzd,Mval,ZD,vmil,vmax:string;ln:integer;tj:string):integer;
var i : integer;
svn,svz,sxz,sxx : string;
gs : string;
begin
svn := mzd;
svz := mval; sxz := '';
if zd = ''
then begin
messagedlg('没有选则字段!',mtinformation,[mbok],0);
result := 0;
Exit;
end;
if (vmil = '' ) or ( vmax = '' )
then begin
messagedlg('没有选则范围值!',mtinformation,[mbok],0);
result := 0;
Exit;
end;
i := 1;
repeat
gs := sltfu(svn);
sxz := sxz + gs + ' =:' + gs + inttostr(i) + ' or ' ;
inc(i);
until i > ln;
delete(sxz,length(sxz)-2,3);
sxz := ' ( '+ ZD + ' >= :bb ) and ( ' + ZD + ' <= :cc ) '+ ' and ('+ sxz +' )' ;
quy.Close;
quy.SQL.Clear;
quy.SQL.Add('select * from ' + sn + ' where ' + sxz + tj ); /////////
quy.Params[0].Value := vmil; //////////
quy.Params[1].Value := vmax;
i := 1;
repeat
sxx := sltfu(svz);
quy.Params[i+1].Value := sxx ;
inc(i);
until i > ln;
quy.Active := true;
quy.First;
result := quy.RecordCount;
end;
function selectcombhfu(Quy:TQuery;sn,mzd,mval,zd,val:string;ln:integer;tj:string):integer;
var i : integer;
svn,svz,sxz,sxx : string;
gs : string;
begin
svn := mzd;
svz := mval; sxz := '';
if zd = ''
then begin
messagedlg('没有选则字段!',mtinformation,[mbok],0);
result := 0;
Exit;
end;
i := 1;
repeat
gs := sltfu(svn);
sxz := sxz + gs + ' =:' + gs + inttostr(i) + ' or ' ;
inc(i);
until i > ln;
delete(sxz,length(sxz)-2,3);
sxz := zd + ' =:' + zd+ ' and ('+ sxz +' )' ;
quy.Close;
quy.SQL.Clear;
quy.SQL.Add('select * from ' + sn + ' where ' + sxz + tj ); /////////
quy.Params[0].Value := val; //////////
i := 1;
repeat
sxx := sltfu(svz);
quy.Params[i].Value := sxx ;
inc(i);
until i > ln;
quy.Active := true;
quy.First;
result := quy.RecordCount;
end;
function sltmefu(var s : string) : string;
var st : string;
i : integer;
begin
st := ''; i := 1;
while (s[i] <> '/') and ( i <= length(s) ) do
begin
st := st + s[i] ;
inc(i);
end;
delete(s,1,i);
result := st;
end;
function datetodatefu(var s : string) : string;
begin
//2001年11月13日--》011113
result :=copy(s,3,2)+copy(s,7,2)+copy(s,11,2)
end;
{读文件记录入库表} //进度临时窗口(带了个备入日期)
procedure myopenquyfilejdpd(StatusBar:TStatusPanel;ProBar: TProgressBar;quy:tquery;SQL:TUpdateSQL;
quyname,fname,fname2:string;var vjlh:integer);
var txt : textfile;
gs,s : string;
i,j,jlh : integer;
{备入清已入记录}
procedure mydelectfu(StatusBar:TStatusPanel;ProBar: TProgressBar;quyname:string;
quy:TQuery; sql:TUpdateSQL; vjlh:integer;fname2:string) ;
begin
selectALLfu(quy,quyname,' order by jlh' );
mygotojlhfu(quy,vjlh) ;
if not quy.bof then quy.Next;
mydelpmjlpd(StatusBar,ProBar,quy,SQL,fname2);
selectALLfu(quy,quyname,' order by jlh' );
end;
begin
if not FileExists(fname)
then Exit;
quy.DisableConstraints;
j := 0; jlh:= vjlh;
try
assignfile(txt,fname);
reset(txt);
ProBar.Visible:=true;
ProBar.Max:= FileSize(txt); ////////////////////
quy.CachedUpdates := true;
SQL.SetParams(ukinsert);
while not Eof(txt) do
begin
readln(txt,gs); inc(j);
ProBar.Position:=j; //////////////////////
StatusBar.Text := gs;
try
i := 0;
while i < (quy.FieldCount-2) do
begin
s := sltfu(gs);
if (quy.Fields.Fields[i].DataType = ftDate) or
(quy.Fields.Fields[i].DataType = ftDatetime )
then begin
if s = ''
then SQL.Query[ukinsert].Params[i].Value := null
else SQL.Query[ukinsert].Params[i].Value := strtodate(s);
end
else SQL.Query[ukinsert].Params[i].Value := s;
inc(i);
end;
SQL.Query[ukinsert].Params[i].Value := mygetdate2fu;;
SQL.Query[ukinsert].Params[i+1].Value := ADDjlhFU(vjlh);
SQL.ExecSQL(ukinsert);
except
messagedlg('输入文件出错!!! 第《' + inttostr(j)+ '》行!',mtinformation,[mbok],0);
j:=j-1;
if (MessageDLG('删除已入库的记录吗?',mtCONfirmation,[mbYes,mbNo],0) = mrYes)
then begin
mydelectfu(StatusBar,ProBar,quyname,quy, sql, jlh,fname2) ;
j:=0;
end;
StatusBar.Text := gs ;
quy.Active := true;
break;
end;
end;
finally
closefile(txt);
StatusBar.Text :='总共读入'+inttostr(j)+'行数据记录' ;
quy.CachedUpdates := false;
end;
quy.EnableConstraints;
ProBar.Position:= ProBar.Max;
end;
function getcityno(s:string): string;
begin
result:='z' ;
if s='沈阳市' then result:='a' ;
if s='大连市' then result:='b' ;
if s='鞍山市' then result:='c' ;
if s='抚顺市' then result:='d' ;
if s='本溪市' then result:='e' ;
if s='丹东市' then result:='f' ;
if s='锦州市' then result:='g' ;
if s='营口市' then result:='h' ;
if s='阜新市' then result:='i' ;
if s='辽阳市' then result:='j' ;
if s='铁岭市' then result:='k' ;
if s='朝阳市' then result:='l' ;
if s='盘锦市' then result:='m' ;
if s='葫芦岛' then result:='n' ;
end;
function getgclbno(s:string): string;
begin
result:='z' ;
if s='路基改造' then result:='a' ;
if s='大岭石方' then result:='b' ;
if s='防护工程' then result:='c' ;
if s='黑色路面' then result:='d' ;
if s='桥梁工程' then result:='e' ;
if s='隧道工程' then result:='f' ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -