易表在线答疑技术与交流用户社区 → [求助]关于"复杂利息计算"的新问题(“当月结息”如何改为“次月结息”?)


  共有36494人关注过本帖树形打印复制链接

主题:[求助]关于"复杂利息计算"的新问题(“当月结息”如何改为“次月结息”?)

帅哥哟,离线,有人找我吗?
czy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/27 20:30:00 [显示全部帖子]

tzszw 问:最初我在老论坛上提出"复利计算问题"后,经各位版主和易友高手"群策群力"解决后,一直用的很好,近日用户提出修改意见,要求将原来“当月缴当月计息”改为“当月缴费次月计息”(即当月缴的钱本月不计息,复利息从下个月开始计算)。面对这个问题,我感到很为难,因为分步计算公式是我本人做好贴上去的,但后台处理公式(使用变量后台处理的)是经各位版主和易友高手"群策群力"做的,且采用比较复杂的Eval()函数处理(对于Eval()函数的使用,我至今不得要领)。没办法,再次请大家帮忙!

----------------------------------------------------------------------------------
粗略看了一下,变量的公式的确很复杂,公式大概意思是从分段计算表中提取各自时间段的计息标准,这个公式和你提到的“当月缴费次月计息”似乎不存在关系,也可以说是毫无关系。

解决方案:在待遇审核表中增加一列,可以命名为计息时间,这一列的时间利用公式从缴费时间列中提取,公式:EDate([缴费时间],1),然后修改变量中的公式,将变量%DYHD%中所有的缴费时间替换成计息时间,我想这样就可以达到你的要求了。

不成熟的方案,供参考。
因为没有深入去研究你的文件,不知我的想法太简单了,还是你想的太复杂了。


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/27 21:32:00 [显示全部帖子]

下面引用由tzszw2006/11/27 04:32pm 发表的内容:
以前也没出错过,只是近两天我改了一下,也就是加了15楼杨版所提到的一点内容后就出问题了,也找不出来问题在哪?也许是筛选或关联表的其他什么语句出了问题!

你新加入的公式不会导致出错。
不过可以肯定的说,你的运气真好,以前居然都没出错过。
你知道吗,你犯了一个很初级的错误,自己应该敲一下自己的脑袋。


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/27 21:41:00 [显示全部帖子]

1楼提到的问题我做了一下,这是修改过后的文件,你看看对不对?
另外我好像删除两个表的预处理公式,你自己加进行(可能是两个分段计息表)

egd文件下载


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 10:35:00 [显示全部帖子]

呵呵,那是我曲解你的意思了,我还以为延期一个月开始计息。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 12:15:00 [显示全部帖子]

我们来看看公式的第一段:FilterFor("保险编码","=",[%BXBH%]),在这个公式前你没有加入显示所有行的命令,在FilterFor中你没有加入只需满足本次筛选条件既可的参数,这样一来当执行完一次操作后,主表中只有本次筛选条件的保险编码,当你接下来再次执行其它保险编码的操作时,主表中显示的数据中已经找不到,而你的待遇审核表是与个人开户表关联的,既然本表中的数据都没有定位到符合条件的行中,关联表的数据又怎能显示出来。

所以我把公式改成:FilterFor("保险编码","=",[%BXBH%],2),这样不管你进行n次操作,均不会出现错误。


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 19:27:00 [显示全部帖子]

"缴费合计"、"缴费时间"和"核定时间",这三个字段在哪个表,你就切换到哪个表,然后再改变量就行了。

-=-=-=- 以下内容由 czy2006年11月28日 07:31pm 时添加 -=-=-=-
这三个字段象是在待遇审核表中,你切换到这个表再试试。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 19:34:00 [显示全部帖子]

下面引用由tzszw2006/11/28 07:31pm 发表的内容:
都在“待遇核定”表呀!你是说用“管理员”进入,然后切换到“待遇核定”表,然后再到“变量设置”中设置%DYHD%变量呀?

是的

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 20:14:00 [显示全部帖子]

你把公式贴出来看看

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 20:37:00 [显示全部帖子]

下面引用由tzszw2006/11/28 08:05pm 发表的内容:
我按你说改了,变量设置是没问题了,但"按月或一次性给付待遇核定"窗口中"积累金额"和"按月/一次性支付待遇"两个的值却总是看不到(即显示"空的",不知道是不是这两个值算好后放到哪了),不知何故?

你是说窗口中本表字段积累金额和月待遇吗?

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2006/11/28 21:06:00 [显示全部帖子]

窗口按钮公式,这样试试:

FilterFor("保险编码","=",[%BXBH%],2) and ClearGrid("待遇审核") And Import("待遇审核",filename,"缴费明细","1498shx0099","保险编码","=",[%BXBH%]) And DelRow("待遇审核",1)And Replacefor("待遇审核","核定日期",[%核定日期%])and RecalcCol("待遇审核",12,15)and FilterRGrid("待遇审核","保险编码","=",[%BXBH%],2)and OpenRView("待遇审核",1)and ReplaceFor("个人开户","年龄",year([待遇审核!核定日期])-year([待遇审核!出生年月])+if((month([待遇审核!核定日期])-month([待遇审核!出生年月]))>=1,0,-1),"保险编码","=",[%BXBH%])and SetVariable([%给付年龄%],[年龄])and EvalFor("个人开户","给付系数","[给付系数!养老金系数]","年龄","=",[给付系数!年龄])and EvalFor("个人开户","缴费总额","round([%jfhj00%],2)","保险编码","=",[%BXBH%])and EvalFor("个人开户","积累金额","round([%jlje%]*(1-[系统信息!管理费率]),2)","保险编码","=",[%BXBH%])and if([%dylx1%]="一次性支付",EvalFor("个人开户","月待遇","round([积累金额],2)","保险编码","=",[%BXBH%]),EvalFor("个人开户","月待遇","round([给付系数]*[积累金额],2)","保险编码","=",[%BXBH%]))and recalcRow(GridName,Row,Row,1)and if([%sfkf%]>0,SetLabel(".","该保险编码的记录已开户!")and ShowRelationRows()and SetLabel("历史记录",[%lsjls%])and SetLabel("个人缴纳0",[%lsgrj%])and SetLabel("集体补贴0",[%lsjtb%])and SetLabel("镇街补贴0",[%lszjb%])and SetLabel("区级补贴0",[%lscjb%])and SetLabel("缴费合计0",[%lsjfhj%]),SetLabel(".","该保险编码的记录尚未开户!建议点[新增开户记录]命令按钮或转入[开户处理]模块中新增该编码的参保户信息!")and ShowRelationRows() and SetLabel("历史记录","   ")and SetLabel("个人缴纳0","         ")and SetLabel("集体补贴0","         ")and SetLabel("镇街补贴0","         ")and SetLabel("区级补贴0","         ")and SetLabel("缴费合计0","         "))and if(usertype=5 or usertype=6,FilterRGrid("退休核准","保险编码","=",[%BXBH%],2)and if([%txhj%]=0,MsgBox("该记录尚未初核,请先执行初核操作后才能复核",0,4),if([月待遇]-[退休核准!月待遇]=0,MsgBox("此次计算的月待遇标准与初核的标准一样,建议直接按下面的[复核]按钮!",0,4),MsgBox("此次计算的月待遇标准与初核的标准不一样,此笔记录不能执行[复核]操作!",0,4))),True)


 回到顶部
总数 23 1 2 3 下一页