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

📄 ufunction.pas

📁 功能特点 根据指定字段将Excel表导入到数据库中
💻 PAS
字号:
unit Ufunction;

interface
  uses
    SysUtils,db,adodb,Variants, Classes, Graphics, Controls,messages,dialogs;
    //删除源表记录传入参数TBNAME 传出参数TRUE |FALSE
    Function  delete_source_record(tbname:string):boolean;
    //插入记录过程允许插入重复记录
    procedure double_ins_record();
    //插入记录过程不允许插入重复记录
    Procedure single_ins_record();

implementation
 uses unit1;

//-----------------------------------------------------
//      功能说明:  删除源表中所有记录
//     参数说明    传入: 表名 TBNAME  类型:STRING;
//                 传出:  BOOLEAN
//     函数编写    向文
//      修改日期   2006-10-15
//------------------------------------------------------
Function  delete_source_record(tbname:string):boolean;
    var
       delquery:tadoquery;
begin
     try
      delquery:=tadoquery.Create(nil);
      delquery.Connection:=form1.adoconnstr;
      delquery.SQL.Clear;
      delquery.SQL.Text:='delete from  '+tbname;
      delquery.ExecSQl;
      result:=true;
      delquery.Free;
     except
       on E:Exception do
          begin
             result:=false;
             showmessage(E.Message);
          end;
     end;
end;
//-----------------------------------------------------
//     功能说明  插入记录过程 允许插入重复记录
//     参数说明    无
//
//     函数编写    向文
//     修改日期   2006-10-15
//------------------------------------------------------
procedure double_ins_record();
   var
   tmp,sqlstr1,sqlstr2:string;
   rectotal,i:integer;
   insertsql:tadotable;

begin
    //导入到数据库中,先整理字段对应表。
//    copy(sqlstr1,0,pos('=',sqlstr1)-1);  取等号前字符串
//    copy(sqlstr1,pos('=',sqlstr1)+1,length(sqlstr1)-pos('=',sqlstr1));  取等号后字符串
   form1.listbox2.Refresh;
    insertsql:=tadotable.Create(nil);
    insertsql.Connection:=form1.adoconnstr;
    insertsql.TableName:=form1.tbnamelist.Text;
    insertsql.Active:=true;
    form1.adoquery1.First;
    insertsql.First;
    rectotal:=form1.adoquery1.RecordCount;
    form1.pbar.Max:=rectotal;
    form1.pbar.Position:=0;
 while  not form1.adoquery1.Eof  do
   begin
    insertsql.Append;
   for   i:=0 to form1.listbox2.Count-1 do    //分解字段
      begin
       tmp:=form1.listbox2.Items.Strings[i];
       sqlstr1:=copy(tmp,0,pos('=',tmp)-1);
       sqlstr2:=copy(tmp,pos('=',tmp)+1,length(tmp)-pos('=',tmp));
       insertsql.FieldByName(sqlstr1).Value:=form1.adoquery1.fieldbyname(sqlstr2).AsString;
     end;
    form1.pbar.Position:=form1.pbar.Position+1;
   insertsql.Post;
  form1.adoquery1.Next;
  end;
//  application.MessageBox('数据导入成功','任务提示',mb_ok);
end;

//-----------------------------------------------------
//     功能说明  插入记录过程 不允许插入重复记录
//     参数说明    无
//
//     函数编写    向文
//     修改日期   2006-10-15
//------------------------------------------------------
procedure single_ins_record();
   var
    tmp,sqlstr1,sqlstr2:string;
   rectotal,i:integer;
   insertsql:tadotable;

begin
    form1.listbox2.Refresh;
    insertsql:=tadotable.Create(nil);
    insertsql.Connection:=form1.adoconnstr;
    insertsql.TableName:=form1.tbnamelist.Text;
    insertsql.Active:=true;
    form1.adoquery1.First;
    insertsql.First;
    rectotal:=form1.adoquery1.RecordCount;
    form1.pbar.Max:=rectotal;
    form1.pbar.Position:=0;
 while  not form1.adoquery1.Eof  do
   begin
   //检查是否存在依据关键字确定的重复记录
         insertsql.Append;
         for   i:=0 to form1.listbox2.Count-1 do    //分解字段
            begin
               tmp:=form1.listbox2.Items.Strings[i];
               sqlstr1:=copy(tmp,0,pos('=',tmp)-1);
               sqlstr2:=copy(tmp,pos('=',tmp)+1,length(tmp)-pos('=',tmp));
              insertsql.FieldByName(sqlstr1).Value:=form1.adoquery1.fieldbyname(sqlstr2).AsString;
           end;
         insertsql.Post;
    form1.pbar.Position:=form1.pbar.Position+1;
    form1.adoquery1.Next;
 end;
//  application.MessageBox('数据导入成功','任务提示',mb_ok);
end;


end.

⌨️ 快捷键说明

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