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

📄 myvar.pas

📁 图书馆管理系统设计详细资料
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  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 + -