前面已经完成了数据库的建立,增加记录,修改记录以及简单的统计功能。
下面的工作是添加查找功能,增加统计功能
昨天晚上一不小心按了power键,哎!写的全没了。不过还好,写的不多。
现在已经实现了上述想实现的功能了。通过些代码的编写,学会了VB中对于字符串
操作的一些函数,挺好完的。下是从网上找到的一些资料:
VBscript中的字符串函数 在VBscript中,系统提供了大量的字符串函数来处理有关字符串的事情。在 Javascript 中,系统为String对象提供了许多方法,而字符串变量可以不用附加说明就使用这些方法,使对字符串的处理能力更加强大。下面我们分批介绍这些函数和方法。 目标任务1 演示子字符串的截取,字符串的截空,子串的定位等。 关键字 left, right, mid, space, trim, instr, len 代码 dim Mystr, Myword,Mypos, BR " 代码注释 这段代码演示了VBscript中的许多字符串函数的用法,用左子串left,右子串right,任意子串mid,生成空格字符串space,截去前导空格Ltrim,截去尾部空格Rtirm,截去前后空格tirn,字符串长度len,判断子字符串的存在性和出现的位置Instr。大小写转换Ucase 和Lcase,把ASCII码转换为字符的函数chr。 mid函数从字符串中返回指定数目的字符,语法:Mid(string, start[, length]) 其它函数的语法从例程中一目了然,不再赘述。 |
现在基本上可以用了,不过在查询的地方还有点问题,已经在CSDN上问了。等待回答。
现在问题已经有人解答,并得到了解决。原来通配符搞错了,ASP不认“*”,应该用“%”
查看后面想想还要做些什么:
1,能按月统计,总的支出,总的收入,以及节余
2,最好能做成图表的样子,能进行多个月的对比。
第一个需求已经完成:)
首先把表格的结构搞清楚。先用fireworks作几张图片:
一个是Y轴,有效长度为480,最大值为4000,上面标有3000,2000,1000,0的刻度。
然后是几个表示收,支,余的小柱子,随便选了颜色,高度都为100。
原理很简单,以2000为单位1(图片高度为240,与坐标轴对应),不同的数字占2000的比例然后乘以240,
得到的就是相应柱子的高度。
将公用的地方提取出来:
不管怎么样,连续地画三个柱子是每一个生成图表必不可少的部分,所以先将这部份提取出来:
function draw(inbox,outbox) htm = htm & " | ![]() ![]() ![]() |
收:" & inbox & " " & "支:" & outbox & " 余:" & Cint(inbox)-Cint(outbox) &" |
说明:参数inbox和outbox分别表示收入和支出的金额,胡乱起的名字:)
然后将画表头、表尾的代码再提取出来:
'打图表表头及Y轴 function drawheader() dim htm htm = htm & "
|
function drawbottom(m1,m2) dim htm dim i htm = " |
else
'多个月
for i=0 to Cint(m2)-Cint(m1)
htm = htm & "
end if
response.write(htm)
end function
说明:参数m1,m2表示前后两个月。如果是单月,则m1=m2。根据这个来决定表尾有几个td
OK,材料都有了,就是往上面堆了。下面是一个通过以上几个函数画出某一个时段的图表的函数:
'画某一个时段的图表 function drawatimezone() set rs = server.createobject("adodb.recordset") dim sql dim y1,m1,y2,m2,time1,time2 dim inbox,outbox inbox = "0" outbox = "0" y1 = request("year1") m1 = request("month1") d1 = request("day1") y2 = request("year2") m2 = request("month2") d2 = request("day2") time1 = y1 & "-" & m1 & "-" & d1 time2 = y2 & "-" & m2 & "-" & d2 sql = "select * from myCount where CDate(time)>=CDate('" & time1 & "') and CDate(time) rs.open sql,cnn,1,3 if not rs.eof then while not rs.eof if rs(2) = 0 then inbox = Cint(inbox)+Cint(rs(4)) else outbox = Cint(outbox)+Cint(rs(4)) end if rs.movenext wend else end if response.write("
以下是从" & time1 & "到" & time2 & "间的收支统计图表
") call drawheader() call draw(inbox,outbox) call drawbottom(m,m) end function |