网络编程
位置:首页>> 网络编程>> 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
投稿

猜你喜欢

  • 投影变换(仿射变换)在数学中,线性变换是将一个向量空间映射到另一个向量空间的函数,通常由矩阵实现。如果映射保留向量加法和标量乘法,则映射被认
  • prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!
  •  如果您是HTML的初学者,请您先自学HTML。因为DHTML是现有的HTML技术的一个综合,所以HTML语言对学习动态HTML是
  • 本文实例讲述了php实现比较全的数据库操作类。分享给大家供大家参考。具体如下:<?php class database {  
  • 基于python代码的3D地图可视化,供大家参考,具体内容如下介绍使用Python对地图进行3D可视化。以地图为地图,可以在三维空间对轨迹、
  • 关于在asp中不使用组件使得脚本sleep的办法还比较少见,可能比较好的办法是创建同步的xmlhttp request,直到获得的时间达到某
  • 情况一:坐标上的内容是文字时如上图这样一个横向的柱状图,y坐标轴的内容太长后会导致显示不全。因为数据是由后端传过来的,有些会很长有些会比较短
  • 前段时间和哥们胡侃的时候还说腾讯抄的有水平,不过这次我溴了,腾讯房产被新浪乐居给幽默了一把。乐居:http://bj.house.sina.
  • 当你要使用data URI scheme的时候,你会发现,虽然他可以使用在绝大多数浏览器上,但无法再IE6和IE7上工作。不过值得庆幸的这一
  • 原理中文分词,即 Chinese Word Segmentation,即将一个汉字序列进行切分,得到一个个单独的词。表面上看,分词其实就是那
  • 本文实例讲述了Python实现的数据结构与算法之基本搜索。分享给大家供大家参考。具体分析如下:一、顺序搜索顺序搜索 是最简单直观的搜索方法:
  • # 0. PyCharm 常用快捷键# 1. 查看使用库源码PyCharm 主程序员在 Stackoverflow 上答道经常听人说,多看源
  • 简单的 TodoList实现一个简单的 todolist,当我输入内容后,点击提交自动添加在下面,如下图所示:用代码实现这个效果:<d
  • 本文介绍的函数其实是PHP手册上本来就有的,但是由于这些函数独立性较强,查找不易,所以单独介绍一下,方便查阅。 1. 获取所有可用的模块 -
  • 前言图像处理技术是计算机视觉项目的核心,通常是计算机视觉项目中的关键工具,可以使用它们来完成各种计算机视觉任务。在本文中,将介绍如何使用 O
  • 学习了简单的知识点,就会想要向有难度的问题挑战,这里必须要夸一夸小伙伴们。不过我们今天不需要做什么程序的测试,只用简单的两个代码对比,小伙伴
  • 一、异步解决方案的进化史JavaScript的异步操作一直是个麻烦事,所以不断有人提出它的各种解决方案。可以追溯到最早的回调函数(ajax老
  • 本文实例总结了Python正则表达式常用函数。分享给大家供大家参考,具体如下:re.match()函数原型:match(pattern, s
  • python天数转日期字符串在利用python读取Excel的时候, 日期格式的单元格读取出来是数字,该数字表示1990年01月01日到该日
  • 判断类型在Python中我们可以使用type进行类型的判断#我们想看一个对象的的类型可以这样class A:  passa = A
手机版 网络编程 asp之家 www.aspxhome.com