数据库拷贝问题 |
答題得分者是:cashxin2002
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
代码如下:
begin
ADOTable1.Open;
ADOTable2.First ;
while not ADOTable2.Eof do
begin
ADOTable1.Append;
ADOTable1.FieldByName('票据号').AsString := label3.Caption;
ADOTable1.FieldByName('项目名称').AsString := ADOTable2.FieldByName('项目名称').AsString;
(其它行的代码略了,反正和上面两行的意思一样的)
ADOTable1.Post;
ADOTable2.Next;
end;
ADOTable1.Close;
end;
票据号的值不是在ADOTABLE2中的,项目名称是在ADOTABLE2中的,这样就产生了这样一种情况,如果项目名称有五个,ADOTABLE1中就加了五条记录,五条记录中票据号是一模一样的,项目名称是不同的。那当然不止这两个字段,还有十多个样子,比如还有项目单价,这个内容也是不同的,还有累计应收金额,这个内容和票据号一样,如果有五条记录,那么五条中内容也一样了。这样设计好象数据库中会产生大量相同的记录,比如我所说的五条记录,有十多个字段,其中只有项目名称和单价等是不同的,其它字段在五条记录中是一模一样的内容。如果用MEMO字段加进去,放在一条记录中,那么取这个字段中的内容出来打印又比较困难,因为我要实现比较精确的套打功能,这些字段是关键内容。各位前辈看看有什么改进的方法。如果说只能这样做,那么用什么方法实现这样一个功能,就是如果有五条记录,那么第一条记录中应收金额照填,但下面四条就填为0算了,因为这样便于统计,否则只收了10元钱,统计时就变成50元钱了。
------
我的编程起步于ktop,我将永远支持ktop |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
我改了一下代码,意思是和我想得差不多了,
代码如下:
begin
ADOTable1.Open;
ADOTable2.First ;
ADOTable1.Append;
ADOTable1.FieldByName('票据号').AsString := label3.Caption;
ADOTable1.FieldByName('项目名称').AsString := ADOTable2.FieldByName
('项目名称').AsString;
ADOTable1.FieldByName('应收金额).AsFloat :=StrToFloat(edit1.text);
ADOTable1.Post;
begin
while not ADOTable2.Eof do
ADOTable2.Next;
ADOTable1.Append;
ADOTable1.FieldByName('票据号').AsString := label3.Caption;
ADOTable1.FieldByName('项目名称').AsString := ADOTable2.FieldByName
('项目名称').AsString;
ADOTable1.FieldByName('应收金额).AsFloat :=0;
ADOTable1.Post;
end;
ADOTable1.Close;
end;
意思是想ADOTABEL2中有一条以上记录时,第一条全部照填,从第二条记录开始,其它字段都一样,但应收金额都填为0,
运行结果发生了错误在ADOTABEL2表中只有一个记录时,也要有两条记录产生了,我想要的是如果ADOTABEL2表中只有一个记录时,那么ADOTABEL1中也只要一个记录,应收等于实际数据(应该不是0),如果有一条以上记录时,比如三条记录,那么ADOTABLE1中也是三条记录,只是第二第三条中的应收金额为0.
------
我的编程起步于ktop,我将永远支持ktop |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 這是因為Post之后﹐ADOTable2的資料錄指針仍然在指向第一筆﹐然后在While Not的時候﹐就會重复了這條記錄﹒ 您可試試改成如下﹐在While Not之前﹐前先用Next方法(以下紅色處)移到ADOTable2對應的下一筆資料﹐然后再做While Not中的程式碼﹕
begin ADOTable1.Open; ADOTable2.First ; ADOTable1.Append; ADOTable1.FieldByName('票据号').AsString := label3.Caption; ADOTable1.FieldByName('项目名称').AsString := ADOTable2.FieldByName ('项目名称').AsString; ADOTable1.FieldByName('应收金额).AsFloat :=StrToFloat(edit1.text); ADOTable1.Post; ADOTable2.Next; While Not ADOTable2.Eof do begin ADOTable1.Append; ADOTable1.FieldByName('票据号').AsString := label3.Caption; ADOTable1.FieldByName('项目名称').AsString := ADOTable2.FieldByName('项目名称').AsString; ADOTable1.FieldByName('应收金额).AsFloat :=0; ADOTable1.Post; end; ADOTable1.Close; end;================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |