二个问题:1. 一个access数据表里有几十万条数据, 现有什么办法能快速的求出具体的条数, 而不是用select 列1 from db, 再求recordcount. 太慢.
 
2. 用delphi编程实现把内含如下内容的txt文档转换成access数据库
 
ID 字段2          字段4          字段9
1 212.162.66.145 218.22.160.20 3
7 220.114.140.131 66.28.236.86 7
18 211.162.55.79 211.233.32.22 2
19 local          local          5

解决方案 »

  1.   

    第一个:select count(*) from table1
      

  2.   

    select count(*) from table1
    第二, 可用Ado聯接 txt 文件, 操作數據庫方式
      

  3.   

    //去掉多余的分割符,规范字符串
    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+TempStr;
                    Flag:=False;
                  end;
          end;
       if  copy(aString,num,1) <> SepChar then
           MyStr:=MyStr+SepChar;
           RegulateStr:=MyStr;
    end;
    //得到字符串中一个子串,因要改变参数aString的值,所以将它用var定义
    Function GetSubStr(var aString:String;SepChar:String):String;
    var
    Mystr:String;
    SepCharPos:Integer;
    begin
    SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置
    if sepcharpos<>1 then
     begin
      MyStr:=Copy(aString,1,SepCharPos-1); //将分割符前所有字符放到mystr串中
     end
     else
     begin
      mystr:='';
     end;
    Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
    GetSubStr:=MyStr;//返回一个字段
    end;
    //计算一个字符串要被分割成几个字段
    Function 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
        begin
          if Copy(aString,i,1)=SepChar then
             Num:=Num+1;
             result:=Num;
        end;
    end;
    ///拆分入库
    procedure TForm1.Button1Click(Sender: TObject);拆分字符
    var
      i,num1:integer;
      tempstr1,tempstr2:string;
      tempstring:array[0..4] of string;
    begin
       memo1.Lines.LoadFromFile('c:\a.txt'); //载入所要的txt文件,filename为绝对路径
       for j:=0 to memo1.Lines.Count-1 do  
       begin
     
       tempstr1:=memo1.Lines[i];
       tempstr1:=RegulateStr(tempstr1,' '); //去掉多余空格
       num1:=GetSubStrNum(tempstr1,'|');
        for j:=1 to num1 do
             begin
                  tempstring[j]:=GetSubStr(tempstr1,' '); //根据空格拆分字符串
             end;
        adoquery1.sql.clear;
        adoquery1.sql.add('insert into table(col1,col2,col3,col4) values             
                   (:a,:b,:c,:d)');    
        adoquery1.Parameters.ParamByName('a').Value:=tempstring[1];
        adoquery1.Parameters.ParamByName('b').Value:=tempstring[2];
        adoquery1.Parameters.ParamByName('c').Value:=tempstring[3];
        adoquery1.Parameters.ParamByName('d').Value:=tempstring[4];
        adoquery1.execsql;
        end;
    end;
      

  4.   

    可以说实际上这两个问题都没有难度。
    第一个问题你就按楼上两位所说的,没错。
    第二个问题你用ado连接txt文件可以,这样的帖子以前有很多,可以搜索一下;你也可以直接一行一行读一个txt文件,分析每行的数据,写到数据库中。
      

  5.   

    1\select count(0)2\loadfile
    create table 
    insert into table¥#·!—#·!#(!·¥)——#*!·……#
      

  6.   

    1.select count(*) as count from table1  //count 就是你所要的
    2.可用Ado聯接 txt 文件, 操作數據庫方式
      

  7.   

    select count(*) from table1
    第二, 可用Ado聯接 txt 文件, 操作數據庫方式
    我看这样最好了
      

  8.   

    1、用select count(*) from table
    2、用ADO连接txt文件简单,方便,快捷!!!
      

  9.   

    楼主:用delphi编程实现把内含如下内容的txt文档转换成access数据库
    有指定一定要这样的吗?如果没有的话,ACCESS就可以直接地把TXT生成表,呵呵~好简单的,而且速度又快,又直观,痛快的啊!!1
    用delphi的话,也有朋友回答了,,写代码的时候,也可以的不过就是累了点
    我习惯用ACCESS直接地把TXT生成表。
      

  10.   

    1select count(*) from table
    2ACCESS就可以直接地把TXT生成表