locate的問題: |
答題得分者是:cmj
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
locate的問題:
程式如下:
把同年 月份的FMTP加起來,以下方法有錯嗎?因我在CD1.LOCATE時,
沒有找到相同cd1.IndexFieldNames時,卻會執行CD1.EDIT 應執行cd1.APPEND;
有QUERY qy1:含TYPE,AMT....資料
CD1:含YYMM,TYPE,AMT,COST....資料
CD2:含YYMM....資料 cd1.IndexFieldNames:='YYMM;TYPE';
cd2.IndexFieldNames:='YYMM_';
with cd2 do begin
first;
while not EOF do begin
with qy1 do begin
first;
while not EOF do begin
if ( cd1.Locate('TYPE',qy1TYPE.AsString,[loCaseInsensitive])) and ( cd1.Locate('YYMM',cd2YYMM_.AsString,[loCaseInsensitive]) )then begin
cd1.Edit;
XXX
XXX
cd1.POST;
END
ELSE
BEGIN
cd1.APPEND;
XXX
XXX
cd1.POST;
END;
qy1.next;
end; //e
end; //if
cd2.next;
end;
end;
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
引言: locate的問題: 程式如下: 把同年 月份的FMTP加起來,以下方法有錯嗎?因我在CD1.LOCATE時, 沒有找到相同cd1.IndexFieldNames時,卻會執行CD1.EDIT 應執行cd1.APPEND; 有QUERY qy1:含TYPE,AMT....資料 CD1:含YYMM,TYPE,AMT,COST....資料 CD2:含YYMM....資料 cd1.IndexFieldNames:='YYMM;TYPE'; cd2.IndexFieldNames:='YYMM_'; with cd2 do begin first; while not EOF do begin with qy1 do begin first; while not EOF do begin if ( cd1.Locate('TYPE',qy1TYPE.AsString,[loCaseInsensitive])) and ( cd1.Locate('YYMM',cd2YYMM_.AsString,[loCaseInsensitive]) )then begin cd1.Edit; XXX XXX cd1.POST; END ELSE BEGIN cd1.APPEND; XXX XXX cd1.POST; END; qy1.next; end; //e end; //if cd2.next; end; end;紅色部為查詢,依妳所述應是複合欄位查詢,所以看程式碼邏輯是怪怪的 提供複合欄位查詢做法參考 cd1.Locate('YYMM;TYPE',VarArrayOf([cd2YYMM_.AsString,qy1TYPE.AsString]),[]); 至於locate之option loCaseInsensitive: 查詢不分大小寫 loPartialKey:查詢時只要部份符合,宇串由本至右 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |