|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。菜单续上篇
上一篇中我们已在网页中完成了静态的菜单。我们利用的是JS剧本来完成的。
可是菜单的内容是手工写的,如今我们要用ASP程序来从数据库中读出这些数据,并
在程序中天生这些菜单。
1、用递回的体例天生菜单
在讲到从数据库中读取数据并天生菜单的时分,我们先往返忆一下第一篇中提到
的数据库布局。数据表(treemenu)中,我们纪录了每一个菜单的父菜单的ID,假如这
ID是0,那末它就是根菜单;而且纪录了每一个菜单的子菜单的个数:chi_id也就是说
关于恣意一个菜单,我们都能够用
select*fromtreemenuwherepar_id=以后ID
如许的SQL语句来找到它的子菜单。而要找就任意一个菜单的父菜单,能够用:
select*fromtreemenuwhereid=以后par_id
了解了这两个SQL语句,我们来讲说递回的思绪,递回的体现是一个函数大概子程序
又挪用了本人自己。如今我们界说一个子程序,叫distree(id),它的感化是显现ID为id的
菜单及一切的子菜单。然后我们挪用distree(0)就能够显现一切的根菜单。看看这个子程序
的复杂算法思绪:
<%
subdistree(id)
找到ID字段为id的一切纪录
显现这个纪录,并记下它的id(记为id2)
显现它的子菜单及子菜单的子菜单:disptree(id2)这里用到了递回
直到停止
endsub
%>
2、完成递回函数
如今我们来完成这个递回的函数。上面是已完成的函数,正文写在内里。
<%
subdistree(id)界说子程序
界说变量,注重,这些变量必定要界说,才是部分的变量,不然将会是全局变量
dimsql,rs,chid,i
上面这句界说SQL查询语句,获得父菜单为id的子菜单
sql="select*fromtreemenuwherepar_id="&id
searchtablemy,sql,rs查询表
ifrs.eofthenexitsub假如没有一个纪录,就加入子程序
ifid=0then假如是根菜单,要别的处置,由于它没有后面的毗连图
response.write"<tablewidth=100%border=0cellspacing=0cellpadding=0>"&br
else
假如不是根菜单,就显现全体。个中cellid是菜单地点表的名字,定名办法按上一篇
response.write"<tableid="&cellidc&"style=display=none"&_
"width=100%border=0cellspacing=0cellpadding=0>"&br
endif
totalrec=rs.recordcount失掉全体的纪录数,这里是按实践的数目,也能够用rs("chi_id")
fori=1tototalrec用一个轮回来显现一切的纪录
ifid=0then假如是根菜单,就用另外一个图标
ico="images/home.gif"
else不然,就用文件夹的图标
ico="images/fc.gif"
endif
chid=rs("chi_id")失掉它的子菜单的数目
ifchid=0then假如它没有子菜单,毗连图就用没有"+"号的。
ifi=totalrecthen假如是最初一个子菜单,就用90度的毗连图
ph="images/line_cco.gif"
else
ph="images/line_co.gif"不然就用T字型的毗连图
endif
response.write"<trheight=16>"&br输入一行,来显现一个纪录(菜单)
ifid0then假如是不根菜单,就显现毗连图,ph是下面天生的毗连图的文件名
response.write"<tdwidth=16height=16>"&br
response.write""&rs("txt")&"</a>"
response.write"<ahref="&scr&"?action=add&id="&rs("id")&">增</a>"
response.write"<ahref="&scr&"?action=del&id="&rs("id")&">删</a>"
response.write"<ahref="&scr&"?action=mod&id="&rs("id")&">改</a>"&br
response.write"</td>"&br
response.write"</tr>"&br
else假如它另有子菜单,就用"+"号的毗连图
ifi=totalrecthen假如是最初一个子菜单,就用没用后续菜单的毗连图
ph="images/ctc.gif"
else
ph="images/cc.gif"不然就用有后续菜单的毗连图
endif
l=l+1l暗示行,
r=r+1r暗示列
cellid="L"&l&"R"&r天生名字
cellida="L"&l&"R"&r天生毗连图的名字
cellidb="L"&l&"R"&r+1天生图标的名字
cellidc="L"&l+1&"R"&r+1天生子菜单的名字
ifid=0then假如是根菜单,就间接输入这个子菜单
response.write"<trheight=16width=100%>"&br
else不然,要先输入毗连图
response.write"<trheight=16>"&br
endif
ifid0then不是根菜单,输入毗连图
response.write"<tdwidth=16height=16>"&br
response.write"<imgid="&cellid&"显现完后停止表格
closetablers
endsub
%>
如今把前次的HTML文件改写成ASP程序,把文件名改一下,再把本来的菜单部分删除,到场下面的子程序
再到场上面这些语句就好了。记着不要把JS剧本删除!
<!--#includefile="operation$db.asp"-->
<%
opendbmy
dimi,l,r,cellid,ph
dimcellida,cellidb,cellidc
l=0
r=0
br=vbcrlf
distree(0)
%>
到这里,已能够显现菜单了,固然,假如你要改的话,如今只能到数据库里往改。只需再加上
复杂的功效,就能够举行办理了。下一篇我们给它加上增添、删除、修正的功效。</p>当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题 |
|