设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3162|回复: 19
打印 上一主题 下一主题

[查询] [已解决]关于分段计算利息的问题!

[复制链接]
跳转到指定楼层
1#
发表于 2007-12-30 23:07:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在表中有一数列:3  5  8  12  17  23  28   35  46
需将某数分割成如以上数列,最后一位是余数
例1:  将37 分成如下:
3  5  8   12    9
例2:   将87分成如下:
3  5  8  12  17  23  19
\
更新了一下标题,方便其他朋友阅读

[ 本帖最后由 cuxun 于 2008-1-3 23:40 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-12-31 00:07:13 | 只看该作者
Dim b
    Dim str As String
    Dim M As Integer
    Dim N As Integer
   
    M = InputBox("请输入一整数", , 87)
    b = Split("3 5 8 12 17 23 28 35 46", " ")
    For i = 0 To 8
        If M - N > b(i + 1) Then
            N = N + b(i)
            str = str & b(i) & " "
        Else
            str = str & M - N
            MsgBox str
            Exit Sub
        End If
    Next i
3#
 楼主| 发表于 2007-12-31 11:51:31 | 只看该作者
非常感谢 iamee
       能否再帮我改写成函数,我想在查询中用,有点象计算贷款逾期计息的问题,  3 5 8 12 17....这一数列代表(因常要变动也就放在表中)贷款天数段利息不同.
如:
某客户贷了一笔款总 87天,前3天的利息是1分,第4天到第5天的利息是1.5分,第6天到第8天的利息是1.8分, 类推..........
因此是需要把众客户的贷款天数进行分割.
4#
 楼主| 发表于 2007-12-31 12:19:38 | 只看该作者
再说明:
要求如87天查询出来的是7条记录
5#
发表于 2007-12-31 15:33:18 | 只看该作者
Public Function strReturn(M As String, N As Integer) As String'M是数列,N是贷款天数
    Dim S As String
    Dim B
    Dim SumM As Integer
    S = Val(M)
    B = Split(M)
    For i = 0 To Len(M) - Len(S)
        SumM = SumM + B(i)
        If N > SumM Then
            strReturn = strReturn & B(i) & " "
        Else
            strReturn = strReturn & N - (SumM - B(i))
            Exit For
        End If
    Next i
End Function
你上传个附件,大家帮你试试
6#
 楼主| 发表于 2007-12-31 21:32:18 | 只看该作者
谢谢!!!
现将附件上传,请帮忙看看!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
发表于 2008-1-3 09:17:01 | 只看该作者
SELECT a.*, b.截止, b.天利息
FROM 查询1 AS a LEFT JOIN 查询2 AS b ON b.lj<=a.欠天数;
union
SELECT a.*,(select 欠天数-sum(截止) from 查询2 where lj<=[欠天数]) AS 表达式1, 0
FROM newtt AS a;

查询2:
SELECT (select sum(截止) from 计息区段 where id<=a.id) AS lj, *
FROM 计息区段 AS a;

newtt:
SELECT 出库单明细.供应商ID, 出库单明细.增票日期, Sum(出库单明细.金额) AS 小计, Date()-[增票日期] AS 欠天数
into newtt FROM 出库单明细
GROUP BY 出库单明细.供应商ID, 出库单明细.增票日期, Date()-[增票日期]
HAVING (((出库单明细.供应商ID)=30))
ORDER BY 出库单明细.增票日期 DESC
WITH OWNERACCESS OPTION;

[ 本帖最后由 wwwwa 于 2008-1-3 14:44 编辑 ]
8#
 楼主| 发表于 2008-1-3 15:20:16 | 只看该作者
非常感谢楼上二位
可能是我没表达清楚,最好是能从"整理"查询后,再查询出象"计息临时表"里那样的内容

上传附件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
发表于 2008-1-3 16:17:02 | 只看该作者
将我的代码修改一下即可:
SELECT a.*, b.截止 AS 区段, b.天利息 AS 息段
FROM 查询1 AS a LEFT JOIN 查询2 AS b ON b.lj<=a.欠天数;
UNION SELECT a.*,(select 欠天数-sum(截止) from 查询2 where lj<=[欠天数]) AS 表达式1, 0.0015
FROM newtt AS a

查询2:
SELECT (select sum(截止) from 计息区段 where id<=a.id) AS lj, *
FROM 计息区段 AS a;

newtt:
SELECT 出库单明细.供应商ID, 出库单明细.增票日期, Sum(出库单明细.金额) AS 小计, Date()-[增票日期] AS 欠天数
into newtt FROM 出库单明细
GROUP BY 出库单明细.供应商ID, 出库单明细.增票日期, Date()-[增票日期]
HAVING (((出库单明细.供应商ID)=30))
ORDER BY 出库单明细.增票日期 DESC
WITH OWNERACCESS OPTION;

查询1用你的
10#
 楼主| 发表于 2008-1-3 16:53:28 | 只看该作者
九楼的结果不对,函数好象没有分时段和利息段分别计算再累加
wwwwa:
您能帮我在我传的附件上改改,再传上来吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-12 03:30 , Processed in 0.117237 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表