第2章用数据访385 下载 <OPTION VALUE=user'Users</OPTION> <OPTION VALUEzgroup'>Groups</OPTION> <OPTION VALUE='*'>All Categories</OPTION: INPUT TYPE="SUBMIT. VALUE"Run></INPUT> / FORM> 现在创建产生结果的ASP页面,即 ActiveDirectory. asp文件。首先创建 Recordset对象和连 <!--#INCLUDE FILE='./Include/RecordsetToTable asp"--> Dim rsUsers Dim strquery Dim ldf Set rsUsers a Server Createobject( 'ADODB. Recordset") Set the connection string 现在我们可以建立査询。从本地机器上选择一般的名字和目录路径,但只选择那些与从 选择窗体中挑选的目录相匹配的目录 strQuery -'SELECT cn, ADsPath FROM 'LDAP: //localhost .:& WHERE objectcategory='.& CStr(Request Form("lstCategory))& RDER 然后打开 Recordset对象并显示结果。 Recordsetto table函数在包含文件 Recordset ToTable. asp中,它把一个 ADO Recordset对象转换为一个HTML表格。 he rec cQuery, strconv Build a table of the details Response. Write RecordsetToTable(rsUsers, True) rsUsers Clo Set rsUsers Nothing Set fldF Nothing 以上代码只是简单地打开了与ADS提供者的一个连接,然后用选择的目录作为过滤器 构建一个简单的查询。得到的结果如图12-6所示。 Administrator DAP //oca]ost/ON-AdministratborA TwAM W2000 sQLAgentCmdE WSR.W2000 LDAP /ocalhost/ON-VUSR-_W2000, ON-Users DC-pone DC-demanD 图12-6查询结果
现在创建产生结果的 A S P页面,即A c t i v e D i r e c t o r y. a s p文件。首先创建R e c o r d s e t对象和连 接字符串: 现在我们可以建立查询。从本地机器上选择一般的名字和目录路径,但只选择那些与从 选择窗体中挑选的目录相匹配的目录。 然后打开 R e c o r d s e t对象并显示结果。 R e c o r d s e t To Ta b l e函数在包含文件 R e c o r d s e t To Ta b l e . a s p中,它把一个ADO Recordset对象转换为一个H T M L表格。 以上代码只是简单地打开了与 A D S提供者的一个连接,然后用选择的目录作为过滤器, 构建一个简单的查询。得到的结果如图 1 2 - 6所示。 图12-6 查询结果 第1 2章 通用数据访问计计385 下载
386 SP3高级编程 Chinapub.com 下载 图12-7中显示了用户的一般名( Common name,cn),以及目录中每个用户对应的唯一目 录路径。如果看一下 Directory Service管理器,就能知道它们是怎样匹配的 四YWE [吧 图12-7 Directory Service管理器窗口 12.2.3 Exchange Server 许多人(包括我在内)一直都期望能用ADO连接到 Exchange Server。但遗憾的是,在写本 书的时候,还没有办法通过 OLE DB和ADO来访问 Exchange Server. Microsoft的 Exchange Server6(代码称为 Platinum)目前还在测试中,它将会有一个可用的 OLE DB提供者。虽然目前 还没有对它的详细介绍,但它很有可能允许我们通过使用ADO记录集来访问全部的 Exchange 存储(包括邮箱、公用文件夹、新闻组等等) 用ADO访问 Exchange目录的优点有以下两点 已熟悉ADO的程序员不必为访问 Exchange数据再学习另外的技术,例如CDO。 ·使用ADO对于某些情况会更方便,例如它可以快速访问数据存储 确实有点遗憾,我们还不得不为此而等待。现在许多Web站点已经提供了简单的邮件功 能,但 Exchange提供者应该提供这种可能性,允许我们更容易地访问公用文件夹、联系信息 等等。 1224定制的提供者 如果有一些不能通过现有的 OLE DB提供者来访问的数据,那么有两种方法可以解决这个 问题: 把数据转换成提供者支持的数据格式 编写自己的 OLE DE提供者。 读者可能会认为第一种方案是最简单的解决方法,也许只要把数据转换成一种数据库格 式就可以了。但如果数据来自于另一个实时应用程序,那么就必须频繁地进行这种转换,这 也就意味着用户将看不到实时的数据。 第二种解决方案似乎有点不太好,但情况并非如此。如果数据相对简单,就能在很短的 时间内编写出自己的提供者。例如,在查看XML数据时,只要XML文件符合 Microsoft的模式 那么就能以一个记录集的形式打开XML文件。但如果ⅹML数据带有元素格式怎么办?例如下 面的代码 auid>172-32-1176</auid
图1 2 - 7中显示了用户的一般名 (Common Name,c n ),以及目录中每个用户对应的唯一目 录路径。如果看一下Directory Service管理器,就能知道它们是怎样匹配的。 图12-7 Directory Service管理器窗口 12.2.3 Exchange Server 许多人(包括我在内)一直都期望能用 A D O连接到Exchange Server。但遗憾的是,在写本 书的时候,还没有办法通过 OLE DB和A D O来访问Exchange Server。M i c r o s o f t的E x c h a n g e Server 6(代码称为P l a t i n u m )目前还在测试中,它将会有一个可用的 OLE DB提供者。虽然目前 还没有对它的详细介绍,但它很有可能允许我们通过使用 A D O记录集来访问全部的 E x c h a n g e 存储(包括邮箱、公用文件夹、新闻组等等 )。 用A D O访问E x c h a n g e目录的优点有以下两点: • 已熟悉A D O的程序员不必为访问E x c h a n g e数据再学习另外的技术,例如 C D O。 • 使用A D O对于某些情况会更方便,例如它可以快速访问数据存储。 确实有点遗憾,我们还不得不为此而等待。现在许多 We b站点已经提供了简单的邮件功 能,但E x c h a n g e提供者应该提供这种可能性,允许我们更容易地访问公用文件夹、联系信息 等等。 12.2.4 定制的提供者 如果有一些不能通过现有的 OLE DB提供者来访问的数据,那么有两种方法可以解决这个 问题: • 把数据转换成提供者支持的数据格式。 • 编写自己的OLE DB提供者。 读者可能会认为第一种方案是最简单的解决方法,也许只要把数据转换成一种数据库格 式就可以了。但如果数据来自于另一个实时应用程序,那么就必须频繁地进行这种转换,这 也就意味着用户将看不到实时的数据。 第二种解决方案似乎有点不太好,但情况并非如此。如果数据相对简单,就能在很短的 时间内编写出自己的提供者。例如,在查看X M L数据时,只要X M L文件符合M i c r o s o f t的模式, 那么就能以一个记录集的形式打开 X M L文件。但如果X M L数据带有元素格式怎么办?例如下 面的代码: 386计计ASP 3 高级编程 下载