全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1074
推到 Plurk!
推到 Facebook!

請問如何讓兩個不同的DBF 相同的欄位 同步修改?!

尚未結案
ep20
一般會員


發表:3
回覆:3
積分:1
註冊:2012-03-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-06-12 21:14:24 IP:203.64.xxx.xxx 訂閱
如題 請問如何讓兩個不同的DBF 相同的欄位 同步修改?!
就是 我有個進貨的dbf 然後我把它不同的產品的另外做了dbf
因為原本我做 三個產品個別的總成本加總 但是算出來的金額有誤
我原本是這麼寫的
procedure TForm1.Button7Click(Sender: TObject);
var i, xCalTCCoffee: integer;
begin
dbPur.Filtered:= False;
dbPur.Filter:= edCFP.Text; // edCFP.Text的內容是GOODSNAME='咖啡豆'
dbPur.Filtered:= True;
dbPur.First;
dbPur.Edit;
xTCCoffee:= 0;
for i:= 1 to dbPur.RecordCount do begin
xCalTCCoffee:= dbPur.FieldByName('GOODSTCOST').AsInteger;
xTCCoffee:= xCalTCCoffee xTCCoffee;
dbPur.next;
end;
listbox1.items.add('咖啡豆總成本:' inttostr(xTCCoffee) '元');
end;

這個正確的金額假設說應該是100000 但是跑出來的卻是243560 等等的錯誤數字
請問這在算的時候 是哪邊出錯了?!
編輯記錄
ep20 重新編輯於 2012-06-12 07:15:36, 註解 無‧
t27
中階會員


發表:34
回覆:95
積分:90
註冊:2002-06-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-06-13 11:19:44 IP:61.224.xxx.xxx 訂閱
 while not dbPur.Eof do begin
xCalTCCoffee:= dbPur.FieldByName('GOODSTCOST').AsInteger;
xTCCoffee:= xCalTCCoffee xTCCoffee;
dbPur.next;
end;
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-06-13 12:30:51 IP:118.169.xxx.xxx 未訂閱
1.試試改成這樣
dbPur.Active: = True;
dbPur.Filtered:= True;
dbPur.Filter:= edCFP.Text; // edCFP.Text的內容是GOODSNAME='咖啡豆'
2.請先檢查所 filter 的記錄是不是都包含 '咖啡豆', 我覺得很有可能包含其他記錄
3.使用 do while 方式會比較好, 因為 RecordCount 不一定所有的資料庫都支援

===================引 用 ep20 文 章===================
如題 請問如何讓兩個不同的DBF 相同的欄位 同步修改?!
就是 我有個進貨的dbf 然後我把它不同的產品的另外做了dbf
因為原本我做 三個產品個別的總成本加總 但是算出來的金額有誤
我原本是這麼寫的
procedure TForm1.Button7Click(Sender: TObject);
var i, xCalTCCoffee: integer;
begin
dbPur.Filtered:= False;
dbPur.Filter:= edCFP.Text; // edCFP.Text的內容是GOODSNAME='咖啡豆'
dbPur.Filtered:= True;
dbPur.First;
dbPur.Edit;
xTCCoffee:= 0;
for i:= 1 to dbPur.RecordCount do begin
xCalTCCoffee:= dbPur.FieldByName('GOODSTCOST').AsInteger;
xTCCoffee:= xCalTCCoffee xTCCoffee;
dbPur.next;
end;
listbox1.items.add('咖啡豆總成本:' inttostr(xTCCoffee) '元');
end;

這個正確的金額假設說應該是100000 但是跑出來的卻是243560 等等的錯誤數字
請問這在算的時候 是哪邊出錯了?!
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-06-13 14:18:56 IP:220.133.xxx.xxx 訂閱
1 你在回圈前用 edit, 跳到下一筆前, 會自動 post, 
2 trace 一下

dbPur.first;
while not dbPur.eof do
begin
................
WriteErrorLog( dbPur.FieldByName('GOODSName').AsString ' ' dbPur.FieldByName('GOODSTCOST').AsString ', ' IntToStr(xCalTCCoffee) );
dbPur.next;
end;


procedure WriteErrorLog(strMessage:string);
var hErrorLog:TextFile;
strLogFileName:String;
begin
strLogFileName:=ExtractFilePath(Application.ExeName) 'ERROR.LOG';
if not FileExists(strLogFileName) then
begin
AssignFile(hErrorLog,strLogFileName);
ReWrite(hErrorLog);
WriteLn(hErrorLog,'Start Here');
CloseFile(hErrorLog);
end;
AssignFile(hErrorLog,strLogFileName);
Append(hErrorLog);
WriteLn(hErrorLog,DateTimeToStr(Now) ',' strMessage);
CloseFile(hErrorLog);
end;


===================引 用 ep20 文 章===================
如題 請問如何讓兩個不同的DBF 相同的欄位 同步修改?!
就是 我有個進貨的dbf 然後我把它不同的產品的另外做了dbf
因為原本我做 三個產品個別的總成本加總 但是算出來的金額有誤
我原本是這麼寫的
procedure TForm1.Button7Click(Sender: TObject);
var i, xCalTCCoffee: integer;
begin
dbPur.Filtered:= False;
dbPur.Filter:= edCFP.Text; // edCFP.Text的內容是GOODSNAME='咖啡豆'
dbPur.Filtered:= True;
dbPur.First;
dbPur.Edit;
xTCCoffee:= 0;
for i:= 1 to dbPur.RecordCount do begin
xCalTCCoffee:= dbPur.FieldByName('GOODSTCOST').AsInteger;
xTCCoffee:= xCalTCCoffee xTCCoffee;
dbPur.next;
end;
listbox1.items.add('咖啡豆總成本:' inttostr(xTCCoffee) '元');
end;

這個正確的金額假設說應該是100000 但是跑出來的卻是243560 等等的錯誤數字
請問這在算的時候 是哪邊出錯了?!
ep20
一般會員


發表:3
回覆:3
積分:1
註冊:2012-03-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-06-16 12:51:50 IP:203.64.xxx.xxx 訂閱
我試試看 再把結果貼上來 謝謝你們 有問題我會再回復
系統時間:2017-10-17 6:13:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!