zoukankan      html  css  js  c++  java
  • 文本数据导入数据库的方法 DELPHI

    文本数据导入数据库的方法 - DELPHI
    有一段人事档案资料archive.txt,内容如下:

      小许男21工程师

      小吴女23助理工程师

      小蔡男22助理工程师

      小牟女22工程师

      要将它转入数据库archive.dbf中,archive.dbf结构如下:

      姓名,性别,年龄,职称

      怎么办呢?现在通过使用delphi编程,很好地解决了这个难题。Delphi提供了许多功能强大,丰富的字符处理函数和过程,常用的有:

      (1)function Length(S:String):Integer//返回串的长度

      (2)function Copy(S:String;Index,Count:Integer):String//给出一个字符串中串的拷贝

      (3)function Pos(Substr:String;S:String);Integer//查找子串在字符串中的位置

      (4)Procedure Delete(VarS:String;Index,Count:Integer);  //从一个字符串中去除子串

      利用Delphi提供的已有函数和过程基础上编制自己的三个函数,实现了纯文本格式资料转入数据库功能。只要Delphi支持的数据库都可以支持。

      archive.txt中每行数据为一个字符串,字符串中每个被分割的数据为一个字段,分割每个字段的字符为分割符,这里是空格,也可以是,、;、#等符号。具体思想是:先将字符串进行调整,然后把串中每个字符同分割符比较,将不是分割符的字符追加到MyStr串中,最后得到一个字段的内容。通过一个循环,就可以将一个字符串分成几个字段。

      Function Regulate(aString,Sepchar:string):string   //去掉多余的分割符,规范字符串

      Function GetSubStr(varsString:string;SepChar:String):String;  //得到字符串中一个子串,因要改变参数aString的值,所以将它用var定义。

      FunctionGetSubStrNum(aString,SepChar:String):Integer;  //计算一个字符串要被分割成几个字段。

      参数:aString是所需分割的一个字符串,SepChar是分割符。

      Function RegulateStr(aString:String;Sepchar:String):String;

      var

      i,Num:Integer;

      Flag:Boolean;

      MyStr,TempStr:String;

      begin

      Flag:=False;//进行标志,去除多余的分割符

      Num:=Length(aString);//计算aString串的长度

      for i:=1 to Num do

      begin

      TempStr:=Copy(aString,i,1);//取aString串中的一字符

      if TempStr <> SepChar then

      begin

      MyStr:=MyStr TempStr;

      Flag:=True;

      end

      else

      if(Flag = True)then

      begin

      Mystr:=Mystr TempSrt;

      Flag:=False;

      end;

      end;

      if MyStr[Length(MyStr)] <> SepChar then

      MyStr:=MyStr SepChar;

      RegulateSrt:=MyStr;

      end;

      Function GetSubStr(var aString:String,SepChar:Strign):String;

      var

      Mysrt:String;

      StrLen:Integer;

      SepCharPso:Integer;

      begin

      StrLen:=Length(aString);

      SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置

      MyStr:=Copy(aString,1,SepCharPos-1); //将分割符前所有字符放到mystr串中

      Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串

      GetSubStr:=MyStr;//返回一个字段

      end;

      FunctionTforml.GetSubStrNum(aString:String;SepChar:String):Integer;

      var

      i:Integer;

      StrLen:Integer;

     Num:Integer;

      begin

      StrLen:=Length(aString);

      Num:=0;

      for i:=1 to StrLen do

      if Copy(aString,i,1) = SepCharthen

      Num:=Num 1;

      GetSubSrtNum:=Num;

      end;

      有了上面三个函数,现在介绍一下具体的应用:

      1.首先建立一个窗体Forml,加入一个RichEditl(或Menol),一个按钮Buttonl和一个Tablel,设置Tablel的属性:

      Tablell.DataBase = 'c:\Archivs'

      Tablell.TableName ='Archive.dbf'

      2.分别加入以下程序:

      Const Space= ''

      ProcedureTForml.FormCreate(Sender:Tobject);

      begin

      RichRditl.Lines.LoadFromFile('Archive.txt');

      end;

      ProcedureTForml.Button1Click(Sender:Tobject);

      var

      i,j:Integer;

     MyLine:String;

      begin

      with Tablel do

      begin

       Open;

     for i:=0 to RichEditl.Lines.Count-1 do

     begin

      MyLine:=RegulateStr(Richeditl.Lines,Space);

      for j:=1 to Num do

      begin

      Append;

      fileds[j-1].aString:=GetSubSrt(MyLine,Space));

      post;

      end;

      end;

      end;

      end;
    本文来自: 书部落-电子书下载(www.shubulo.com) 详细出处参考:http://www.shubulo.com/thread-38004-1-2.html

  • 相关阅读:
    selenium 操作过程中,元素标红高亮的两种实现方式
    python pytest测试框架介绍五---日志实时输出
    pytest 3.9在python 2.7下的一个bug
    Qt assis tant 帮助集合文档 -由.qhcp生成.qhc
    Qt assistant .qch显示乱码问题
    qhelpgenerator 由qhp生成qch过程碰到的问题 记录
    Qt creator新建widget项目....no valid kits found.....
    Qt creator 账号
    Qt 写Excel
    Qt获取主窗口
  • 原文地址:https://www.cnblogs.com/martian6125/p/9631340.html
Copyright © 2011-2022 走看看