网络编程
位置:首页>> 网络编程>> Asp编程>> 整理一个asp多级树型分类问题的解决方法(6)

整理一个asp多级树型分类问题的解决方法(6)

 来源:csdn 发布时间:2007-10-17 18:38:00 

标签:树,分类,asp

第四个问题

现在我们回头看看第四个问题:怎样得到某个分类下的所有产品。由于采用了位编码,现在问题变得很简单。我们很容易推算:某个产品属于某个类别的条件是 Product.FatherID&(Catalog.ID的特征码)=Catalog.ID。其中"&"代表位与算法。这在SQL  Server中是直接支持的。

举例来说:产品所属的类别为:1092787200,而当前类别为1092780032。当前类别对应的特征值为:4294950912,由于1092787200&4294950912=8537400,所以这个产品属于分类8537400。

我们前面已经给出了计算特征码的公式。特征码并不多,而且很容易计算,可以考虑在Global.asa中Application_OnStart时间触发时计算出来,存放在Application("Mark")数组中。
当然,有了特征码,我们还可以得到更加有效率的算法。我们知道,虽然我们采用了位编码,实际上还是一种顺序编码的方法。表现出第I级的分类编码肯定比第I+ 1级分类的编码要小。根据这个特点,我们还可以由FID得到两个特征码,其中一个是本级位特征码FID0,一个是上级位特征码FID1。而产品属于某个分 类FID的充分必要条件是:

Product.FatherID>FID0  and  Product.FatherID<FID1


下面的程序显示分类FID下的所有产品。由于数据表Product已经对FatherID进行索引,故查询速度极快:



<% 
REM  oConn---数据库连接,已经打开 
REM  FID---当前分类 
REM  FIDMark---特征值数组,典型的情况下为Application("Mark") 
REM  k---数组元素个数,也是分类的级数 
Sub  GetAllProduct(oConn,FID,FIDMark  byref,k) 
 REM  根据FID计算出特征值FID0,FID1 
 for  i=k  to  1 
   if  (FID  and  FIDMark  =  FID  )  then  exit 
 next 
  
 strSQL  =  "select  Name  from  Product  where  FatherID>"FIDMark(i)&"  and  FatherID<"FIDMark(i-1) 
 set  rsProduct=oConn.Execute(strSQL)%> 
 <UL><% 
 Do  While  Not  rsProduct.Eof%> 
   <LI><%=rsProduct("Name") 
 Loop%> 
 </UL><% 
 rsProduct.Close 
End  Sub 
%>



关于第5个问题、第6个问题,就留作习题吧。有了上面的位编码,一切都应该迎刃而解。 
感谢  21DIV  开发组供稿,本文版权(电子版及文字版)都归  21DIV  所有
其它站点转载请自行联系  21DIV
请支持原创站点

0
投稿

猜你喜欢

  • 1、单个关键字加亮代码: <div id="txt">  用JS让文章内容指定
  • 一、设计说明设计这个自动化的目的是想要交替、重复地使用固定的几个分区(分区编号01~05)来保存数据,当最后一个分区就是快满的时候,我们会把
  • 和网友们讨论了数组取交集的方法,下面是两个实现arr1=["1","5","6"
  • 中文字体设计发展到现在,风格越来越多样化,特别是在广告(美术)字体方面,因为字数少 局限小,优秀的作品层出不穷,比较突出的应用在标志设计唱片
  • Notepad++是一款不错的编辑器,很轻巧,我很喜欢它。再换个主题,加个代码高亮,看上去就更专业了。如果你是Mac用户,应该听说或使用过T
  • 首先忠心感谢凌宇5942给我的帮助!在他的启迪下我发现了另一种实现flash透明背景的办法,愿与大家共同探讨:凌宇5942告知的解决办法:在
  • 把程序放到一个文件中,然后包含再call就可以了。(JMAIL4.3)<%'警告函数sub w_msg(messag
  • 为什么使用事务 当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚。 显示设置事务  代码如下:beg
  • 选项default-charaset-set=utf8;然后创建一个数据表 create table a_table(b varchar(2
  • 相信各位网页爱好者都对网页的loading很感兴趣吧!,想不想知道如何做一个:)现在给大家介绍一下一种loading的制作..效果图:loa
  • 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常&l
  • 很多网站在注册时除了需要用户填写用户名与密码之外,还会要求用户输入邮箱,而且是属于那种不填写就不能完成注册的强制型的。碰到这种情况的时候,一
  • 此文章主要向大家讲述的是SQL Server数据库的分布式数据库系统的实际目标,通俗的讲就是研制分布式数据库系统的目的、动机,其中主要包括的
  • 本文给出了MySQL数据库中定义外键的必要性、具体的定义步骤和相关的一些基本操作,供大家参考!定义数据表假如某个电脑生产商,它的数据库中保存
  • sql2000的服务器版本是8.0,sql2005是9.0首先要读安装必须配置(见后记)1.我是先装2000的,安装好后打上sp4补丁,(s
  • Tag,直译标签,是一种由用户自定义的、用于描述信息 [1]的关键词。Tagging是用户为信息赋予Tag的行为。Delicious,Fli
  • 先来看看js中的Null类型表示什么?null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象,一般一个未定义的变量在初次使用
  • meta是html语言head区的一个辅助性标签。几乎所有的网页里,我们可以看到类似下面这段的html代码:<head> <meta&nbs
  • 我为一大型网站做了一个论坛,也顺利通过了测试。由于是第一次做这方面的数据库,我不知道比其它网站上数据库差距有多大,是不是够优化。能推荐或介绍
  • '*****************************************************************
手机版 网络编程 asp之家 www.aspxhome.com