给的若干个TXT的列数不通,其对应的表的字段也不同,我使用LISTBOX装表的字段,用MEMO装TXT文件,LISTBOX可以显示字段的名字与数量,下面由毛毛虫教我怎么做了。

解决方案 »

  1.   

    PB的办法:
    先用PB连接上数据库,选中你要导入数据的表,鼠标右键点击->edit date->grid
    ok,这时应该看到显示字段了,继续在菜单栏->rows->import 然后选择你要导入的数据文件,
    看,数据进去了吧,别急,还要继续 在工具条上找一个名叫SAVE CHANGES的图标(把鼠标停在图
    标上就可以看到了,一般是第三个工具条的第二个图标)我想DELPHI也应该有这个办法
      

  2.   

    很为高兴,因为你遇到了我,哈哈!我刚刚作完这个程序,和大家分享喽!首先是几个通用函数:
    //将其它字符转换成空格
    function TurntoSpace(overall,special:string):string;
    var
    i,h:integer;
    sumstr,temstr:string;
    begin
    h:=length(overall);
    for i:=1 to h do
    begin
     temstr:=copy(overall,i,1);
     if temstr=special then
     begin
      temstr:=' ';
      sumstr:=sumstr+temstr;
     end
     else
      sumstr:=sumstr+temstr;
     TurntoSpace:=sumstr;
    end;
    end;//去除多余的指定字符:****  -> *
    function Delspecial(overall,special:string):string;
    var
    i,h:integer;
    flag:boolean;
    sumstr,temstr:string;
    begin
    flag:=false;
    h:=length(overall);
    for i:=1 to h do
    begin
     temstr:=copy(overall,i,1);
     if temstr<>special then
     begin
     sumstr:=sumstr+temstr;
     flag:=true;
     end
     else
     if flag=true then
     begin
     sumstr:=sumstr+temstr;
     flag:=false;
     end;
    end;
    if sumstr[length(sumstr)]<>special then
    sumstr:=sumstr+special;
    Delspecial:=sumstr;
    end;//去除指定字符:****  ->
    function SDelspecial(overall,special:string):string;
    var
    i,h:integer;
    sumstr,temstr:string;
    begin
    h:=length(overall);
    for i:=1 to h do
    begin
     temstr:=copy(overall,i,1);
     if temstr<>special then
     begin
     sumstr:=sumstr+temstr;
     end;
    end;
    SDelspecial:=sumstr;
    end;function Substring(var overall:string;special:string):string;
    var
    sumstr:string;
    subpos:integer;
    begin
    subpos:=pos(special,overall);
    sumstr:=copy(overall,1,subpos-1);
    delete(overall,1,subpos);
    Substring:=sumstr;
    end;function TForm1.FenGe(overall,special:string):Integer;var
    i:Integer;
    h:Integer;
    num:Integer;
    begin
    h:=Length(overall);
    num:=0;
    for i:=1 to h do
    begin
    if copy(overall,i,1)=special then //改为是否为处理字符
    num:=num+1;
    end;
    FenGe:=num;
    end;procedure TForm1.BtnTabClick(Sender: TObject);
    const
    space=#009;
    var
    i:integer;
    myline:string;
    begin
    for i:=0 to memo1.lines.count-1 do
    begin
     myline:=TurnToSpace(memo1.lines[i],space);
     memo1.Lines [i]:=myline;
    end;
    end;
      

  3.   

    以上你将把tab转成空格字符,然后就是导进库里了。
    procedure TForm1.BtnvfClick(Sender: TObject);
    const
    space=' ';
    var
    i,j:integer;
    myline:string;
    begin
    Btnvf.Enabled:=false;
    with Tblvf do
    begin
     TableName:='c:\leberty\ToVFP.dbf';
     open;
     for i:=0 to memo1.Lines.Count-1 do
     begin
      myline:=Delspecial(memo1.Lines[i],space);
      append;
      for j:=1 to FenGe(myline,space) do
      begin
       fields[j].Value:=substring(myline,space);
      end;
      post;
     end;
    end;
    end;procedure TForm1.BtnaccessClick(Sender: TObject);
    const
    space=' ';
    var
    i,j:integer;
    myline:string;
    Aconnection,ARecordSet:variant;
    begin
    Btnaccess.Enabled:=false;
    Aconnection:=CreateOleObject('adodb.connection');
    Aconnection.open('Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\leberty\Toacc');
    ARecordSet:=CreateOleObject('adodb.RecordSet');
    ARecordSet.open('acc',Aconnection,3,3,0002);
    for i:=0 to memo1.Lines.Count-1 do
    begin
    myline:=Delspecial(memo1.Lines[i],space);
    ARecordSet.AddNew;
    for j:=1 to FenGe(myline,space) do
      begin
       ARecordSet.fields[j].Value:=substring(myline,space);
      end;
      ARecordSet.Update;
      ARecordSet.MoveNext;
     end;
    end;
      

  4.   

    麻烦问一下,我好好的TAB为什么要转换成空格?
      

  5.   

    会有许多方法, 请说明你是用那个数据库, 好让大家想想最理想的方法.
    最简单的莫如用Excel或vfp直接读入, 然後再整理.