现有两个数据表在access中,acess名总表
表一
用户 借款  日期
aa    1000  2005.8.9
bb   350000  2006.7.6
aa    25000  2006.4.0
aa    3400   2007.5.6该表表示某用户与某年月日,借款多少,注意用户可能借了很多笔款
如上表,aa借了三次表二是设置利息率变动的
利息设置日期  利息率
2004.4.8      0.5
2004.8.9     0.6
2005.4.8    0.43
2005.9.7   0.39
2006.4.3    0.40
2006.5.6     0.52该表表示利息作用日期,比方说2004.4.8,利息率为0.5,到了2004.8.9,利息率变为0.6了
,假设利率都是日利率现在要统计每个用户,在某日期,总利息和本金各是多少比方说,统计aa到2006年5月1日
就是 利息为:1000×(0.43×(2005.9.7-2005.8.9)+0.39×(2006.4.3-2005.5.7)+0.40×(2006.5.1-2006))+25000×0.40×(2006.5.1-2006.4.3)在delphi中怎么处理啊我是用access数据库的
我的想法是
是否先创建一个临时表,把
借款日期和统计的日期和利息日期关联起来
比方说
我改一下数据库的结构
把表二改成
起始日期    截至日期    新利率
2004.4.8     2004.8.9   0.5
2004.8.9   2005.4.8    0.6
2005.4.8   2005.9.7  0.43
2005.9.7   2006.4.3  0.39
2006.4.3   2006.5.6   0.40
2006.5.6    2050.1.1  0.52
这样我查询
select distinct 表一.用户,表一.借款,表一.借款日期,表二.起始日期,表二.截至日期,表二.新利率 from 表一,表二 in 总表.mdb where 表一.用户=‘设定用户’and 表一.借款日期<表二.起始日期 or 表一.借款日期<表二.截至日期 and 表一.借款日期>表二.起始日期 order by 表一.借款日期这样的话,就查出了每一笔借款所跨过的利率设定
这样便于统计啊
但后面该怎么做啊
我都不会了高手们指点指点啊
多谢了啊

解决方案 »

  1.   

    给你一个SQLSERVER的SQL行不行?
      

  2.   

    sqlsever有很多功能access实现不了啊,所以你给我也不知道能否解决问题啊,你说说看啊,如果能够解决问题,就好了啊!
      

  3.   

    写了一大堆,黑乎乎的一片看的头晕。思路是两种,一种是将数据的查询和计算用sql 解决,这需要数据库的支持,需要对于表的良好设计。但你用access,像完全通过sql 来解决,比较困难(不代表不行)第二种,就比较简单了,将计算的部分用delphi实现,首先把需要的数据从数据库提取出来(无非就是使用adoquery这些组件进行查询),然后把数据按照公式计算就完了。最后说一点,不要把思路一股脑的都放在sql 上。除非一定要这么做。