怎么用access表中的字段的宽度去截取文本文件,同时将截取的字符串追加到表中 ( 积分: 200 )

  • 主题发起人 主题发起人 毕常青
  • 开始时间 开始时间

毕常青

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个access数据库中有很多表(字段均为文本),需将文本文件对应的追加到表中,文本文件没有分隔符,我想打开表取每个字段的宽度,然后按字段的宽度到文本文件去截取字符串,将截取的字符串填加到表中.请问怎样去实现.谢谢.
 
说的我稀里糊涂的,是不是数据从文本文件导入数据库啊;
如果真的是这样,不难啊,方法很多。
用stringList就可以,
aStringList.loadFromFile('xxx.txt');
...
 
可能我说的不明白
比如说:有一个表里有三个文本字段,分别是A字段、B字段、C字段,宽度分别为10、10、15,我想问如何根据表中的字段宽度去截取字符,如A字段宽度为10,从文本文件中copy(str,1,10),B字段从文本截取(str,11,10),以此类推。
文本格式如下:
01234567891234567890123456789012345
 
你都已经写出来了,还问我们干嘛
 
用下面的语句读取字段的宽度,然后截取字符串
fsize1:=adoquery1.fields.fields[0].size;
 
就你写的那样:
fieldbyname('A').asstring:=copy(str,1,10),
fieldbyname('B').asstring:=(str,11,10)
......
以此类推!
不过我不明白你为什么要这样保存文件[:)]
如果你说一个字段的宽度不够,不足以存放一个文件,你可以用TEXT字段也OK
 
第一,要读TXT文件,
一行一个记录
一行文本就是一个变量,这样你就可以根据你要的字段宽度来COPY SUBSTR了
 
语言不如文字,文字不如图形;
没有图形等示意,咱们就代码,呵呵
procedure TForm1.Button1Click(Sender: TObject);
var
aStrings: TStrings;
iStart,iNext: integer;
begin
aStrings:= TStringList.Create;
iStart:= 1;
iNext:= 1;
try
aStrings.LoadFromFile('xxx.txt');
ADOQuery1.Append;
ADOQuery1.fieldbyname('A').asString:= copy(aStrings.Text,iStart,ADOQuery1.fieldbyname('A').DataSize);
iNext:= iNext+ ADOQuery1.fieldbyname('A').DataSize;
ADOQuery1.fieldbyname('B').asString:= copy(aStrings.Text,iNext,ADOQuery1.fieldbyname('B').DataSize);
{...}
ADOQuery1.Post;
finally
aStrings.Free;
end;
end;

不过我总感觉这种设计有点不习惯,呵呵,
当然喽,也不知道你有什么特殊需求拉,哈哈
 
ADOQuery1.fieldbyname('A').DataSize, 这个东西要事先取,效率高些,可以取少量数据

比如 select top 5 * from xxxxx 然后把表结构放到内存
 
看了半天沒看懂。
 
有几百个表需要将文本文件追加到表的字段中,如果每个表都是通过上述的办法去实现是否太累了(文本文件名与表名相同,同时文本文件没有分隔符。)
想设计个过程,如果要处理表n时,通过打开表n中的字段,利用字段名和字段宽度去截取文本文件的长度,同时将截取的字符串追加到表n中的相应的字段中。
 
后退
顶部