Vb6计算更新

发布于 2024-11-09 01:53:20 字数 489 浏览 0 评论 0原文

如何计算和更新退款?

我最初在数据库中有这三行:

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

如果退款是 350,退款将更新如下,退款不能超过 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

How do I calculate and update the refundamt?

I have these three rows initially in database:

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

If refund is 350, the refundamt will be updated as follow, the refundamt cannot be more then the tranamt:

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

When refund again with 50, it will only update the last record, the refundamt will be updated as follow:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吐个泡泡 2024-11-16 01:53:20

这是一个简单的算法(不考虑多线程和锁):

  1. 令 RF 为退款总额
  2. 找到 REFUNDAMT < 的第一行TRANAMT 并将其称为 ROW
  3. 计算 ROW 的差值 DIFF: DIFF = TRANAMT - REFUNDAMT
    • 如果 DIFF >= RF,则将 ROW 中的 REFUNDAMT 更新为 REFUNDAMT+RF 即可完成。
    • 如果差异< RF,将 ROW 中的 REFUNDAMT 更新为 TRANAMT,令 RF = RF-DIFF 并转至步骤 2。

Here's a simple algorithm (not considering multithreading and locks):

  1. Let RF be the total refund
  2. Find the first row where REFUNDAMT < TRANAMT and call it ROW
  3. Calculate the difference DIFF for ROW: DIFF = TRANAMT - REFUNDAMT
    • If DIFF >= RF, update REFUNDAMT in ROW to REFUNDAMT+RF and you are done.
    • If DIFF < RF, update REFUNDAMT in ROW to TRANAMT, let RF = RF-DIFF and go to step 2.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文