二个问题: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
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
解决方案 »
- 关于使用webbrowser控件获得网页信息的内容
- Deplhi 传输rar文件
- 急~关于abotable日期过滤问题
- 关于提取系统时间的问题?
- 怎么用WebService 上传 下载文件
- 用DELPHI如何发送按键给其他程序?
- 大家都用什么打包工具啊?InstallShield Limited Express好难用
- win32控件页中的TabControl控件有什么用,怎么用?
- 开始学delphi做聪明的程序员,先给大家散点分,祝大家新年快乐!请斑竹手下留情
- 怎么把Excel从系统进程中去掉?
- QReport的哪个控件能够显示过长字符串的时候自动折行?QRMemo不行啊!!
- 如何让按钮上的字,竖起来 50分像这样
第二, 可用Ado聯接 txt 文件, 操作數據庫方式
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;
第一个问题你就按楼上两位所说的,没错。
第二个问题你用ado连接txt文件可以,这样的帖子以前有很多,可以搜索一下;你也可以直接一行一行读一个txt文件,分析每行的数据,写到数据库中。
create table
insert into table¥#·!—#·!#(!·¥)——#*!·……#
2.可用Ado聯接 txt 文件, 操作數據庫方式
第二, 可用Ado聯接 txt 文件, 操作數據庫方式
我看这样最好了
2、用ADO连接txt文件简单,方便,快捷!!!
有指定一定要这样的吗?如果没有的话,ACCESS就可以直接地把TXT生成表,呵呵~好简单的,而且速度又快,又直观,痛快的啊!!1
用delphi的话,也有朋友回答了,,写代码的时候,也可以的不过就是累了点
我习惯用ACCESS直接地把TXT生成表。
2ACCESS就可以直接地把TXT生成表