大致情况是:
我的数据库里有两张表,一张含有通话时间和费率的ID,另一张就是费率ID对应的费率。但是数据库中是没有利用费率和时间计算出来的话费(计算方法可以写函数计算出来,暂叫calc()),现在我用gridview进行数据绑定,但是因为数据库中没有话费字段。那我该怎么办?利用绑定的数值调用calc函数再重新绑定?还是该怎么做?多谢各位了

解决方案 »

  1.   

    哪位知道啊,有什么解决方案呢?
    意思是,数据库中没有的列,但是可以通过其他列算出。gridview该怎么处理才能把这个没有的列绑定出来。
      

  2.   

    编辑为模板,绑定的时候<%#Convert.ToDouble(Eval("时间"))*Convert.ToDouble(Eval("价格"))%>
      

  3.   

    SJTABLE      ID THSJFLTABLE      FLID ID FL
    SELECT CALC(THSJ,FL) FROM SJTABLE LEFT JOIN (SELECT FL FROM FLTABLE WHERE NUM=1) B
    ON SJTABLE.ID=B.ID
      

  4.   


    谢谢几位了。找到了个解决的方法。
    一个是写存储过程。还有个现在我用的,一条长长的SQL语句。
    因为计算并不是这么简单的,涉及到几种情况几个变量。我也是初学者,现在只要完成任务就OK了。至于效率以后再考虑。变量1:通话时间duration,变量2:基本费率iptate,变量3:初始费率local_prev,变量四:其他费率local_next。把时间化成分,前三分钟用费率2,后用3。都加上费率1.这条语句也是写在了asp.net上的。如下:
    select (case when (case when substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+4,2)=0 then to_number(substr(tuas_data_info.duration,1,instr(tuas_data_info.duration,':')-1))*60+to_number(substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+1,2)) else to_number(substr(tuas_data_info.duration,1,instr(tuas_data_info.duration,':')-1))*60+to_number(substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+1,2))+1 end)<3 then (case when substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+4,2)=0 then to_number(substr(tuas_data_info.duration,1,instr(tuas_data_info.duration,':')-1))*60+to_number(substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+1,2)) else to_number(substr(tuas_data_info.duration,1,instr(tuas_data_info.duration,':')-1))*60+to_number(substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+1,2))+1 end)*to_number(tuas_rate_list.local_prev)+to_number(tuas_rate_list.ip_rate) else 3*to_number(tuas_rate_list.local_prev)+((case when substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+4,2)=0 then to_number(substr(tuas_data_info.duration,1,instr(tuas_data_info.duration,':')-1))*60+to_number(substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+1,2)) else to_number(substr(tuas_data_info.duration,1,instr(tuas_data_info.duration,':')-1))*60+to_number(substr(tuas_data_info.duration,instr(tuas_data_info.duration,':')+1,2))+1 end)-3)*to_number(tuas_rate_list.local_next)+to_number(tuas_rate_list.ip_rate) end )MI from tuas_data_info,tuas_rate_list where tuas_data_info.rate_id=tuas_rate_list.rate_id