二个问题: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
解决方案 »
- Delphi2010 Barcode控件
- delphi 中 怎么去掉StringGrid组件左边和 上边的框框 ?
- 请帮忙修改简单的Schema
- 请问在DBGIRD中如何实现更改一个字段的值后同时计算出另一个字段的值?
- 低学历真的那么没前途了???
- @@@@如何用TreeView像windows资源管理器一样选中某个节点后任意删除和添加◎◎◎◎◎
- infopower 3000的问题
- ASCII码
- 主从表中, 主表移动记录时,相应的从表对应的记录都会显示出来。
- 如何将几个rtf文件按序合并
- 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生成表