2011-05-19 77 views
0

如何計算並更新refundamt?Vb6計算更新

我在數據庫中最初有這三行:

NO | TRANAMT | REFUNDAMT 
1 | 100  | 0 
2 | 200  | 0 
3 | 300  | 0 

如果退款是350,refundamt將作爲後續更新中,refundamt不能更然後tranamt:

NO | TRANAMT | REFUNDAMT 
1 | 100  | 100 
2 | 200  | 200 
3 | 300  | 50 

當退還50,只更新最後一筆記錄,退款將更新如下:

NO | TRANAMT | REFUNDAMT 
1 | 100  | 100 
2 | 200  | 200 
3 | 300  | 100 
+0

我認爲你需要向我們提供更多的信息。你有什麼代碼? – 2011-05-19 09:07:44

+0

我有什麼是選擇三行。 – kelvinfix 2011-05-19 09:11:22

+0

關於堆棧溢出的約定是編輯問題以使其更好地響應更多信息的請求。另外,如果你粘貼你的代碼(理想情況下只是相關的上下文),那麼人們可以提供更具體的建議。 – 2011-05-19 09:17:15

回答

1

這裏有一個簡單的算法(不考慮多線程和鎖):

  1. 讓RF是全部退稅
  2. 在第一行,其中REFUNDAMT < TRANAMT並調用它ROW
  3. 計算ROW的差異DIFF: DIFF = TRANAMT - REFUNDAMT
    • 如果DIFF> = RF,則將ROW中的REFUNDAMT更新爲REFUNDAMT + RF,即可完成。
    • 如果DIFF < RF,在ROW更新REFUNDAMT到TRANAMT,讓RF = RF-DIFF並轉至步驟2.
+0

感謝您的算法! – kelvinfix 2011-05-20 07:55:32