急啊,一定要解决,如何做到ACCESS数据表中每条记录按条件截断输出? (100分)

  • 主题发起人 主题发起人 guilinlzy
  • 开始时间 开始时间
G

guilinlzy

Unregistered / Unconfirmed
GUEST, unregistred user!
这是个ACCESS数据导出TXT问题,
现在有两条记录,现导出的是(其中的“~”表示字段的间隔符):
310000~1130~01~98-7-1~JPY~970750~2273400~79133097~0~0~0
310000~1130~01~98-7-1~USD~577319~0~122160~0~0~0
现在要这样输出(其中“98-7-1”是表中的一个字段日期的数据):
0:310000~1130~01~98-7-1
1:JPY~970750~2273400~79133097~0~0~0
1:USD~577319~0~122160~0~0~0
以上是只要是在“98-7-1”下的记录,就把它隔断另起一行输出
本来是主从两个表,现在是合并为一个表了
整个表的导出是按日期排序的,怎么做啊?
 
310000~1130~01~98-7-1~JPY~970750~2273400~79133097~0~0~0
310000~1130~01~98-7-1~USD~577319~0~122160~0~0~0
的这部分代码是:
procedure TForm1.Button6Click(Sender: TObject);
var
i:integer;
s,p: string;
content:TStrings;
begin
content:=TStringList.Create;
content.Clear;
with Table1 do
begin
s:='';
p:='~';
b1:='0:';
table1.First;
for i := 0 to Table1.FieldCount - 1 do
s := s + Table1.Fields.FieldName + p;
content.Append(s);
content.Delete(0);
while Not Eof do
begin
s:='';
for I := 0 to Table1.FieldCount - 1 do
begin
s:=s + Trim(table1.Fields.AsString) + p;
end;
content.Append(s);
Next;
end;
end;
content.SaveToFile('c:/GJSZYZ3.txt');
content.Free;
end;
可不知道
0:310000~1130~01~98-7-1
1:JPY~970750~2273400~79133097~0~0~0
1:USD~577319~0~122160~0~0~0
先解决怎么加上“0:”和“1:”?
 
不是吧,没人HELP ME ?
 
没人回复,帮我提前一下,好吗?
 
不懂什么意思!
 
说清楚一些,不太懂你的意思,你放一个记录,再放一个你想要的东东。
要有说服力,呵呵。。。[:D][8D]
 
随便说说,不知道符合你的要求否。首先用SQL分解成两个部分。即98-7-1以上和98-7-1
以下两个部分。我个人认为用SQL区分这两部分要比在导出代码区分要快得多。并且写
代码就可只写98-7-1以下部分。这部分的代码也不难,日期字段在记录中的位置是固定的。
在循环取字段的时候考虑一下就行了,代码就不用我写了吧?
 
不好意思,这样说吧:
下面有这样一个表:
Field1 Field2 Field3 Field4 Field5 Field6 Field7 Field8 Field9 Field10 Field11
310000 1130 01 98-7-1 JPY 970750 2273400 79133097 0 0 0
310000 1130 01 98-7-1 USD 577319 0 122160 0 0 0
以上还有很多不同的记录,并不都是98-7-1的记录,要把上面的ACCESS表导出为TXT文件,
现以导出为(其中“~”为间隔符号):
310000~1130~01~98-7-1~JPY~970750~2273400~79133097~0~0~0
310000~1130~01~98-7-1~USD~577319~0~122160~0~0~0
现希望根据“field4”,只要field4的值是相等的,就按照这样输出:
0:310000~1130~01~98-7-1
1:JPY~970750~2273400~79133097~0~0~0
1:USD~577319~0~122160~0~0~0
我现在的一个思路是将前四个字段的值传入一个变量中,然后比较field4,相等的就按照上面的
输出,。。。。。。
但我不是很清楚该把这样的程序,加在我上面的代码中的什么地方才好(上面两行的代码还没写)
请大家帮帮忙。


 
query1.close;
query1.sql.text:='select distinct ()前四个字段 from table'
query1.open;
query1.first;
while not query1.eof do
begin
'这儿为文件添加一行!
......
query2.close;
query2.sql.text:='select 后面的字段 from table where 第一个字段名='"+query1.fields[0].value+"' and 第二个字段='"+query1.fields[1].value+"' and .........
query2.open;
query2.first;
while not query2.eof do
begin
''这儿为文件添加一行!
query2.next;
end;
query1.next;
end;
 
function tform1.changetostr(query:tquery;):string;
var i:ineteger;
str:string;
begin
for i:=0 to query.fields.count-1 do
begin
str:=query.fields.Text;
str:=str+'~';
end;
str:=copy(str,1,length(str)-1);
result:=str;
end;
转化为字符串,写入文本,自己写,很简单的!
 
天真兄,我忘了转为文本的本分已基本完成了,代码贴在第二次发言上。
但在截断的时候怎么再加上“0:”和“1:”,我写的变成了在每个字段前加上了“0:”
不知该如何?
 
接受天真的答案了。
 
后退
顶部