﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-向东博客</title><link>http://www.cnblogs.com/meil/</link><description>非澹泊无以明志,非宁静无以致远.</description><language>zh-cn</language><lastBuildDate>Mon, 13 Oct 2008 17:21:25 GMT</lastBuildDate><pubDate>Mon, 13 Oct 2008 17:21:25 GMT</pubDate><ttl>60</ttl><item><title>NOT IN、JOIN、IS NULL、NOT EXISTS效率对比 </title><link>http://www.cnblogs.com/meil/archive/2008/09/05/1144405.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Fri, 05 Sep 2008 01:14:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2008/09/05/1144405.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/1144405.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2008/09/05/1144405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/1144405.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/1144405.html</trackback:ping><description><![CDATA[语句一：select count(*) from A where A.a <span style="color: red;">not in </span>(select a from B)<br />
<br />
语句二：select count(*) from A <span style="color: red;">left join </span>B on A.a = B.a where B.a <span style="color: red;">is null</span><br />
<br />
语句三：select count(*) from A where <span style="color: red;">not exists </span>(select a from B where A.a = B.a)<br />
<br />
知道以上三条语句的实际效果是相同的已经很久了，但是一直没有深究其间的效率对比。一直感觉上语句二是最快的。<br />
今天工作上因为要对一个数千万行数据的库进行数据清除，需要删掉两千多万行数据。大量的用到了以上三条语句所要实现的功能。本来用的是语句一，但是结果是执行速度1个小时32分，日志文件占用21GB。时间上虽然可以接受，但是对硬盘空间的占用确是个问题。因此将所有的语句一都换成语句二。本以为会更快。没想到执行40多分钟后，第一批50000行都没有删掉，反而让SQL SERVER崩溃掉了，结果令人诧异。试了试单独执行这条语句，查询近一千万行的表，语句一用了4秒，语句二却用了18秒，差距很大。语句三的效率与语句一接近。<br />
<br />
<br />
第二种写法是大忌，应该尽量避免。第一种和第三种写法本质上几乎一样。 <br />
<br />
假设buffer pool足够大，写法二相对于写法一来说存在以下几点不足： <br />
（1）left join本身更耗资源（需要更多资源来处理产生的中间结果集） <br />
（2）left join的中间结果集的规模不会比表A小 <br />
（3）写法二还需要对left join产生的中间结果做is null的条件筛选，而写法一则在两个集合join的同时完成了筛选，这部分开销是额外的 <br />
<br />
这三点综合起来，在处理海量数据时就会产生比较明显的区别（主要是内存和CPU上的开销）。我怀疑楼主在测试时buffer pool可能已经处于饱和状态，这样的话，写法二的那些额外开销不得不借助磁盘上的虚拟内存，在SQL Server做换页时，由于涉及到较慢的I/O操作因此这种差距会更加明显。 <br />
<br />
关于日志文件过大，这也是正常的，因为删除的记录多嘛。可以根据数据库的用途考虑将恢复模型设为simple，或者在删除结束后将日志truncate掉并把文件shrink下来。<br />
<br />
<br />
因为以前曾经作过一个对这个库进行无条件删除的脚本，就是要删除数据量较大的表中的所有数据，但是因为客户要求，不能使用truncate table，怕破坏已有的库结构。所以只能用delete删，当时也遇到了日志文件过大的问题，当时采用的方法是分批删除，在SQL2K中用set rowcount @chunk，在SQL2K5中用delete top @chunk。这样的操作不仅使删除时间大大减少，而且让日志量大大减少，只增长了1G左右。 <br />
但是这次清除数据的工作需要加上条件，就是delete A from A where ....后面有条件的。再次使用分批删除的方法，却已经没效果了。 <br />
不知您知不知道这是为什么。&nbsp;&nbsp;<img src ="http://www.cnblogs.com/meil/aggbug/1144405.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42969/" target="_blank">[新闻]MySpace推自助广告平台MyAds</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>MS SQL用ROWCOUNT解决TOP子句不支持变量的问题 </title><link>http://www.cnblogs.com/meil/archive/2008/05/21/sqlserver-2000-rowcount.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Wed, 21 May 2008 09:08:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2008/05/21/sqlserver-2000-rowcount.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/1122822.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2008/05/21/sqlserver-2000-rowcount.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/1122822.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/1122822.html</trackback:ping><description><![CDATA[<p>在使用SQL Server（SQL Server 2000）进行排序我们经常使用的是TOP关键字，但是使用TOP有一个问题，就是TOP后面只支持数值而不支持数值型的变量，这样就没有办法在存储过程中来支持这种动态排序的要求。或者使用Exec来执行构造SQL来执行，但这样执行的效率低而且不够灵活。<br />
<br />
实际上，在SQL Server 2000中我们完全可以使用<span style="color: #ff0000"><strong>ROWCOUNT</strong></span>关键字解决这个问题。 </p>
<p><strong>ROWCOUNT关键字作用是可以直接指定需要返回记录集的行数。</strong></p>
<p>1、使用<strong>ROWCOUNT</strong>查询前100行记录。</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3">
            <p><strong><span style="color: #006400">DECLARE @rc INT<br />
            <br />
            SET @rc = 100 <br />
            SET ROWCOUNT @rc<br />
            <br />
            SELECT * FROM emp</span></strong></p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>使用TOP可以得到同样的结果</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><strong><span style="color: #006400">SELECT TOP 100 FROM emp</span></strong></td>
        </tr>
    </tbody>
</table>
</p>
<p>2、在INSERT INTO..SELECT中使用<strong>ROWROUNT</strong>。</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><strong><span style="color: #006400">DECLARE @rc INT<br />
            <br />
            SET @rc = 100<br />
            SET ROWCOUNT @rc <br />
            <br />
            INSERT INTO&nbsp;cust (cname)<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT cname=emp_name FROM emp</span></strong></td>
        </tr>
    </tbody>
</table>
</p>
<p>3、在执行UPDATE和DELETE时使用<strong>ROWCOUNT</strong>。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为UPDATE和DELETE无法直接使用ORDER BY语法，如果使用ROWCOUNT，将按照主键顺序从前往后操作。</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><span style="color: #006400"><strong>DECLARE @rc INT<br />
            SET @rc&nbsp;&nbsp; &nbsp;= 100<br />
            <br />
            SET ROWCOUNT @rc<br />
            DELETE FROM emp</strong></span></td>
        </tr>
    </tbody>
</table>
</p>
<p>不过也有解决办法，只要能够使用ORDER BY关键字就可以了，比如说直接用含ORDER BY的子句，或者先使用ORDER BY语法把需要操作的标识列存为一个临时表或表变量，然后再操作语句中使用IN或EXISTS关键字。</p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><strong><span style="color: #006400">DECLARE @rc INT<br />
            <br />
            SET @rc = 100<br />
            SET ROWCOUNT @rc <br />
            <br />
            DECLARE @tmp TABLE(ID INT)<br />
            INSERT INTO @tmp <br />
            SELECT ID FROM&nbsp;emp ORDER BY cid[ASC/DESC]<br />
            <br />
            DELETE FROM&nbsp;&nbsp;emp&nbsp; WHERE ID IN (SELECT ID FROM @tmp )</span></strong></td>
        </tr>
    </tbody>
</table>
</p>
<p>4、对于<strong>ROWCOUNT</strong>的设置是与Session有关的。如果占用了一个Session，那么对应的这个数据库Session将使用最近一次设置的<strong>ROWCOUNT</strong>，直到Session结束或者修改了<strong>ROWCOUNT</strong>。</p>
<p>5、在用户自定义函数中不能使用<strong>ROWCOUNT</strong>。</p>
<p>6、取消ROWCOUNT设置。<br />
</p>
<p><strong style="color: #ff0000">使用这样的语句即可取消ROWCOUNT了，因为如果不取消之后所以的查询返回的结果集行数都会受此影响。</strong></p>
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><strong><span style="color: #006400">SET ROWCOUNT 0</span></strong></td>
        </tr>
    </tbody>
</table>
<br />
我不知道为什么在联机帮助中说，写存储过程的时候应该注意尽量避免使用<strong>ROWCOUNT</strong>，而建议使用TOP。难道MS不知道TOP关键后面的数字不能为变量吗？也许MS是出于担心开发者忘记了取消<strong>ROWCOUNT</strong>而影响正常的实现。</p>
<p>8、总结</p>
<p>有了<strong>ROWCOUNT</strong>关键字后就可以非常方便的实现变量形式的排序问题了。</p>
<p><br />
<font color="#2e496d">详文参考: </font><a href="http://www.livebaby.cn/blog/u/meil/archives/2008/sqlserver-2000-rowcount.html">http://www.livebaby.cn/blog/u/meil/archives/2008/sqlserver-2000-rowcount.html</a><br />
</p>
  <img src ="http://www.cnblogs.com/meil/aggbug/1122822.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42960/" target="_blank">[新闻]Facebook创始人:信息共享或存摩尔定律</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>开发笔记：ADO枚举常量列表(ASP,VBScript)</title><link>http://www.cnblogs.com/meil/archive/2008/01/29/1057125.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Tue, 29 Jan 2008 02:24:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2008/01/29/1057125.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/1057125.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2008/01/29/1057125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/1057125.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/1057125.html</trackback:ping><description><![CDATA[<p>　　'----&nbsp;&nbsp; CursorTypeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adOpenForwardOnly&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adOpenKeyset&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adOpenDynamic&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adOpenStatic&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　'----&nbsp;&nbsp; CursorOptionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adHoldRecords&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000100</p>
<p>　　Const&nbsp;&nbsp; adMovePrevious&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000200</p>
<p>　　Const&nbsp;&nbsp; adAddNew&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H01000400</p>
<p>　　Const&nbsp;&nbsp; adDelete&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H01000800</p>
<p>　　Const&nbsp;&nbsp; adUpdate&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H01008000</p>
<p>　　Const&nbsp;&nbsp; adBookmark&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00002000</p>
<p>　　Const&nbsp;&nbsp; adApproxPosition&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00004000</p>
<p>　　Const&nbsp;&nbsp; adUpdateBatch&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00010000</p>
<p>　　Const&nbsp;&nbsp; adResync&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00020000</p>
<p>　　Const&nbsp;&nbsp; adNotify&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00040000</p>
<p>　　Const&nbsp;&nbsp; adFind&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00080000</p>
<p>　　Const&nbsp;&nbsp; adSeek&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00400000</p>
<p>　　Const&nbsp;&nbsp; adIndex&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00800000</p>
<p>　　'----&nbsp;&nbsp; LockTypeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adLockReadOnly&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adLockPessimistic&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adLockOptimistic&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adLockBatchOptimistic&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　'----&nbsp;&nbsp; ExecuteOptionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adAsyncExecute&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000010</p>
<p>　　Const&nbsp;&nbsp; adAsyncFetch&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000020</p>
<p>　　Const&nbsp;&nbsp; adAsyncFetchNonBlocking&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000040</p>
<p>　　Const&nbsp;&nbsp; adExecuteNoRecords&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000080</p>
<p>　　Const&nbsp;&nbsp; adExecuteStream&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000400</p>
<p>　　'----&nbsp;&nbsp; ConnectOptionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adAsyncConnect&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000010</p>
<p>　　'----&nbsp;&nbsp; ObjectStateEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adStateClosed&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000000</p>
<p>　　Const&nbsp;&nbsp; adStateOpen&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000001</p>
<p>　　Const&nbsp;&nbsp; adStateConnecting&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000002</p>
<p>　　Const&nbsp;&nbsp; adStateExecuting&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000004</p>
<p>　　Const&nbsp;&nbsp; adStateFetching&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000008</p>
<p>　　'----&nbsp;&nbsp; CursorLocationEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adUseServer&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adUseClient&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　'----&nbsp;&nbsp; DataTypeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adEmpty&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adTinyInt&nbsp;&nbsp; =&nbsp;&nbsp; 16</p>
<p>　　Const&nbsp;&nbsp; adSmallInt&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adInteger&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adBigInt&nbsp;&nbsp; =&nbsp;&nbsp; 20</p>
<p>　　Const&nbsp;&nbsp; adUnsignedTinyInt&nbsp;&nbsp; =&nbsp;&nbsp; 17</p>
<p>　　Const&nbsp;&nbsp; adUnsignedSmallInt&nbsp;&nbsp; =&nbsp;&nbsp; 18</p>
<p>　　Const&nbsp;&nbsp; adUnsignedInt&nbsp;&nbsp; =&nbsp;&nbsp; 19</p>
<p>　　Const&nbsp;&nbsp; adUnsignedBigInt&nbsp;&nbsp; =&nbsp;&nbsp; 21</p>
<p>　　Const&nbsp;&nbsp; adSingle&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adDouble&nbsp;&nbsp; =&nbsp;&nbsp; 5</p>
<p>　　Const&nbsp;&nbsp; adCurrency&nbsp;&nbsp; =&nbsp;&nbsp; 6</p>
<p>　　Const&nbsp;&nbsp; adDecimal&nbsp;&nbsp; =&nbsp;&nbsp; 14</p>
<p>　　Const&nbsp;&nbsp; adNumeric&nbsp;&nbsp; =&nbsp;&nbsp; 131</p>
<p>　　Const&nbsp;&nbsp; adBoolean&nbsp;&nbsp; =&nbsp;&nbsp; 11</p>
<p>　　Const&nbsp;&nbsp; adError&nbsp;&nbsp; =&nbsp;&nbsp; 10</p>
<p>　　Const&nbsp;&nbsp; adUserDefined&nbsp;&nbsp; =&nbsp;&nbsp; 132</p>
<p>　　Const&nbsp;&nbsp; adVariant&nbsp;&nbsp; =&nbsp;&nbsp; 12</p>
<p>　　Const&nbsp;&nbsp; adIDispatch&nbsp;&nbsp; =&nbsp;&nbsp; 9</p>
<p>　　Const&nbsp;&nbsp; adIUnknown&nbsp;&nbsp; =&nbsp;&nbsp; 13</p>
<p>　　Const&nbsp;&nbsp; adGUID&nbsp;&nbsp; =&nbsp;&nbsp; 72</p>
<p>　　Const&nbsp;&nbsp; adDate&nbsp;&nbsp; =&nbsp;&nbsp; 7</p>
<p>　　Const&nbsp;&nbsp; adDBDate&nbsp;&nbsp; =&nbsp;&nbsp; 133</p>
<p>　　Const&nbsp;&nbsp; adDBTime&nbsp;&nbsp; =&nbsp;&nbsp; 134</p>
<p>　　Const&nbsp;&nbsp; adDBTimeStamp&nbsp;&nbsp; =&nbsp;&nbsp; 135</p>
<p>　　Const&nbsp;&nbsp; adBSTR&nbsp;&nbsp; =&nbsp;&nbsp; 8</p>
<p>　　Const&nbsp;&nbsp; adChar&nbsp;&nbsp; =&nbsp;&nbsp; 129</p>
<p>　　Const&nbsp;&nbsp; adVarChar&nbsp;&nbsp; =&nbsp;&nbsp; 200</p>
<p>　　Const&nbsp;&nbsp; adLongVarChar&nbsp;&nbsp; =&nbsp;&nbsp; 201</p>
<p>　　Const&nbsp;&nbsp; adWChar&nbsp;&nbsp; =&nbsp;&nbsp; 130</p>
<p>　　Const&nbsp;&nbsp; adVarWChar&nbsp;&nbsp; =&nbsp;&nbsp; 202</p>
<p>　　Const&nbsp;&nbsp; adLongVarWChar&nbsp;&nbsp; =&nbsp;&nbsp; 203</p>
<p>　　Const&nbsp;&nbsp; adBinary&nbsp;&nbsp; =&nbsp;&nbsp; 128</p>
<p>　　Const&nbsp;&nbsp; adVarBinary&nbsp;&nbsp; =&nbsp;&nbsp; 204</p>
<p>　　Const&nbsp;&nbsp; adLongVarBinary&nbsp;&nbsp; =&nbsp;&nbsp; 205</p>
<p>　　Const&nbsp;&nbsp; adChapter&nbsp;&nbsp; =&nbsp;&nbsp; 136</p>
<p>　　Const&nbsp;&nbsp; adFileTime&nbsp;&nbsp; =&nbsp;&nbsp; 64</p>
<p>　　Const&nbsp;&nbsp; adPropVariant&nbsp;&nbsp; =&nbsp;&nbsp; 138</p>
<p>　　Const&nbsp;&nbsp; adVarNumeric&nbsp;&nbsp; =&nbsp;&nbsp; 139</p>
<p>　　Const&nbsp;&nbsp; adArray&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H2000</p>
<p>　　'----&nbsp;&nbsp; FieldAttributeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adFldMayDefer&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000002</p>
<p>　　Const&nbsp;&nbsp; adFldUpdatable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000004</p>
<p>　　Const&nbsp;&nbsp; adFldUnknownUpdatable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000008</p>
<p>　　Const&nbsp;&nbsp; adFldFixed&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000010</p>
<p>　　Const&nbsp;&nbsp; adFldIsNullable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000020</p>
<p>　　Const&nbsp;&nbsp; adFldMayBeNull&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000040</p>
<p>　　Const&nbsp;&nbsp; adFldLong&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000080</p>
<p>　　Const&nbsp;&nbsp; adFldRowID&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000100</p>
<p>　　Const&nbsp;&nbsp; adFldRowVersion&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000200</p>
<p>　　Const&nbsp;&nbsp; adFldCacheDeferred&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00001000</p>
<p>　　Const&nbsp;&nbsp; adFldIsChapter&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00002000</p>
<p>　　Const&nbsp;&nbsp; adFldNegativeScale&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00004000</p>
<p>　　Const&nbsp;&nbsp; adFldKeyColumn&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00008000</p>
<p>　　Const&nbsp;&nbsp; adFldIsRowURL&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00010000</p>
<p>　　Const&nbsp;&nbsp; adFldIsDefaultStream&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00020000</p>
<p>　　Const&nbsp;&nbsp; adFldIsCollection&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00040000</p>
<p>　　'----&nbsp;&nbsp; EditModeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adEditNone&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000</p>
<p>　　Const&nbsp;&nbsp; adEditInProgress&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0001</p>
<p>　　Const&nbsp;&nbsp; adEditAdd&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0002</p>
<p>　　Const&nbsp;&nbsp; adEditDelete&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0004</p>
<p>　　'----&nbsp;&nbsp; RecordStatusEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adRecOK&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000000</p>
<p>　　Const&nbsp;&nbsp; adRecNew&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000001</p>
<p>　　Const&nbsp;&nbsp; adRecModified&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000002</p>
<p>　　Const&nbsp;&nbsp; adRecDeleted&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000004</p>
<p>　　Const&nbsp;&nbsp; adRecUnmodified&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000008</p>
<p>　　Const&nbsp;&nbsp; adRecInvalid&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000010</p>
<p>　　Const&nbsp;&nbsp; adRecMultipleChanges&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000040</p>
<p>　　Const&nbsp;&nbsp; adRecPendingChanges&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000080</p>
<p>　　Const&nbsp;&nbsp; adRecCanceled&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000100</p>
<p>　　Const&nbsp;&nbsp; adRecCantRelease&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000400</p>
<p>　　Const&nbsp;&nbsp; adRecConcurrencyViolation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000800</p>
<p>　　Const&nbsp;&nbsp; adRecIntegrityViolation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0001000</p>
<p>　　Const&nbsp;&nbsp; adRecMaxChangesExceeded&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0002000</p>
<p>　　Const&nbsp;&nbsp; adRecObjectOpen&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0004000</p>
<p>　　Const&nbsp;&nbsp; adRecOutOfMemory&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0008000</p>
<p>　　Const&nbsp;&nbsp; adRecPermissionDenied&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0010000</p>
<p>　　Const&nbsp;&nbsp; adRecSchemaViolation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0020000</p>
<p>　　Const&nbsp;&nbsp; adRecDBDeleted&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0040000</p>
<p>　　'----&nbsp;&nbsp; GetRowsOptionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adGetRowsRest&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　'----&nbsp;&nbsp; PositionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adPosUnknown&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adPosBOF&nbsp;&nbsp; =&nbsp;&nbsp; -2</p>
<p>　　Const&nbsp;&nbsp; adPosEOF&nbsp;&nbsp; =&nbsp;&nbsp; -3</p>
<p>　　'----&nbsp;&nbsp; BookmarkEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adBookmarkCurrent&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adBookmarkFirst&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adBookmarkLast&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　'----&nbsp;&nbsp; MarshalOptionsEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adMarshalAll&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adMarshalModifiedOnly&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　'----&nbsp;&nbsp; AffectEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adAffectCurrent&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adAffectGroup&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adAffectAllChapters&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　'----&nbsp;&nbsp; ResyncEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adResyncUnderlyingValues&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adResyncAllValues&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　'----&nbsp;&nbsp; CompareEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adCompareLessThan&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adCompareEqual&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adCompareGreaterThan&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adCompareNotEqual&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adCompareNotComparable&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　'----&nbsp;&nbsp; FilterGroupEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adFilterNone&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adFilterPendingRecords&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adFilterAffectedRecords&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adFilterFetchedRecords&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adFilterConflictingRecords&nbsp;&nbsp; =&nbsp;&nbsp; 5</p>
<p>　　'----&nbsp;&nbsp; SearchDirectionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adSearchForward&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adSearchBackward&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　'----&nbsp;&nbsp; PersistFormatEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adPersistADTG&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adPersistXML&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　'----&nbsp;&nbsp; StringFormatEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adClipString&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　'----&nbsp;&nbsp; ConnectPromptEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adPromptAlways&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adPromptComplete&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adPromptCompleteRequired&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adPromptNever&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　'----&nbsp;&nbsp; ConnectModeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adModeUnknown&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adModeRead&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adModeWrite&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adModeReadWrite&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adModeShareDenyRead&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adModeShareDenyWrite&nbsp;&nbsp; =&nbsp;&nbsp; 8</p>
<p>　　Const&nbsp;&nbsp; adModeShareExclusive&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hc</p>
<p>　　Const&nbsp;&nbsp; adModeShareDenyNone&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H10</p>
<p>　　Const&nbsp;&nbsp; adModeRecursive&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H400000</p>
<p>　　Const&nbsp;&nbsp; adCreateCollection&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00002000</p>
<p>　　Const&nbsp;&nbsp; adCreateStructDoc&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H80000000</p>
<p>　　Const&nbsp;&nbsp; adCreateNonCollection&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000000</p>
<p>　　Const&nbsp;&nbsp; adOpenIfExists&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H02000000</p>
<p>　　Const&nbsp;&nbsp; adCreateOverwrite&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H04000000</p>
<p>　　Const&nbsp;&nbsp; adFailIfNotExists&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　'----&nbsp;&nbsp; RecordOpenOptionsEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adOpenRecordUnspecified&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adOpenOutput&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00800000</p>
<p>　　Const&nbsp;&nbsp; adOpenAsync&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00001000</p>
<p>　　Const&nbsp;&nbsp; adDelayFetchStream&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00004000</p>
<p>　　Const&nbsp;&nbsp; adDelayFetchFields&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00008000</p>
<p>　　Const&nbsp;&nbsp; adOpenExecuteCommand&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00010000</p>
<p>　　'----&nbsp;&nbsp; IsolationLevelEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adXactUnspecified&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hffffffff</p>
<p>　　Const&nbsp;&nbsp; adXactChaos&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000010</p>
<p>　　Const&nbsp;&nbsp; adXactReadUncommitted&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000100</p>
<p>　　Const&nbsp;&nbsp; adXactBrowse&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00000100</p>
<p>　　Const&nbsp;&nbsp; adXactCursorStability&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00001000</p>
<p>　　Const&nbsp;&nbsp; adXactReadCommitted&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00001000</p>
<p>　　Const&nbsp;&nbsp; adXactRepeatableRead&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00010000</p>
<p>　　Const&nbsp;&nbsp; adXactSerializable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00100000</p>
<p>　　Const&nbsp;&nbsp; adXactIsolated&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00100000</p>
<p>　　'----&nbsp;&nbsp; XactAttributeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adXactCommitRetaining&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00020000</p>
<p>　　Const&nbsp;&nbsp; adXactAbortRetaining&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H00040000</p>
<p>　　'----&nbsp;&nbsp; PropertyAttributesEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adPropNotSupported&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000</p>
<p>　　Const&nbsp;&nbsp; adPropRequired&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0001</p>
<p>　　Const&nbsp;&nbsp; adPropOptional&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0002</p>
<p>　　Const&nbsp;&nbsp; adPropRead&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0200</p>
<p>　　Const&nbsp;&nbsp; adPropWrite&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0400</p>
<p>　　'----&nbsp;&nbsp; ErrorValueEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adErrProviderFailed&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hbb8</p>
<p>　　Const&nbsp;&nbsp; adErrInvalidArgument&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hbb9</p>
<p>　　Const&nbsp;&nbsp; adErrOpeningFile&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hbba</p>
<p>　　Const&nbsp;&nbsp; adErrReadFile&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hbbb</p>
<p>　　Const&nbsp;&nbsp; adErrWriteFile&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hbbc</p>
<p>　　Const&nbsp;&nbsp; adErrNoCurrentRecord&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hbcd</p>
<p>　　Const&nbsp;&nbsp; adErrIllegalOperation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hc93</p>
<p>　　Const&nbsp;&nbsp; adErrCantChangeProvider&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hc94</p>
<p>　　Const&nbsp;&nbsp; adErrInTransaction&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hcae</p>
<p>　　Const&nbsp;&nbsp; adErrFeatureNotAvailable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hcb3</p>
<p>　　Const&nbsp;&nbsp; adErrItemNotFound&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hcc1</p>
<p>　　Const&nbsp;&nbsp; adErrObjectInCollection&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hd27</p>
<p>　　Const&nbsp;&nbsp; adErrObjectNotSet&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hd5c</p>
<p>　　Const&nbsp;&nbsp; adErrDataConversion&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hd5d</p>
<p>　　Const&nbsp;&nbsp; adErrObjectClosed&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He78</p>
<p>　　Const&nbsp;&nbsp; adErrObjectOpen&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He79</p>
<p>　　Const&nbsp;&nbsp; adErrProviderNotFound&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He7a</p>
<p>　　Const&nbsp;&nbsp; adErrBoundToCommand&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He7b</p>
<p>　　Const&nbsp;&nbsp; adErrInvalidParamInfo&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He7c</p>
<p>　　Const&nbsp;&nbsp; adErrInvalidConnection&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He7d</p>
<p>　　Const&nbsp;&nbsp; adErrNotReentrant&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He7e</p>
<p>　　Const&nbsp;&nbsp; adErrStillExecuting&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He7f</p>
<p>　　Const&nbsp;&nbsp; adErrOperationCancelled&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He80</p>
<p>　　Const&nbsp;&nbsp; adErrStillConnecting&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He81</p>
<p>　　Const&nbsp;&nbsp; adErrInvalidTransaction&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He82</p>
<p>　　Const&nbsp;&nbsp; adErrUnsafeOperation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He84</p>
<p>　　Const&nbsp;&nbsp; adwrnSecurityDialog&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He85</p>
<p>　　Const&nbsp;&nbsp; adwrnSecurityDialogHeader&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He86</p>
<p>　　Const&nbsp;&nbsp; adErrIntegrityViolation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He87</p>
<p>　　Const&nbsp;&nbsp; adErrPermissionDenied&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He88</p>
<p>　　Const&nbsp;&nbsp; adErrDataOverflow&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He89</p>
<p>　　Const&nbsp;&nbsp; adErrSchemaViolation&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8a</p>
<p>　　Const&nbsp;&nbsp; adErrSignMismatch&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8b</p>
<p>　　Const&nbsp;&nbsp; adErrCantConvertvalue&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8c</p>
<p>　　Const&nbsp;&nbsp; adErrCantCreate&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8d</p>
<p>　　Const&nbsp;&nbsp; adErrColumnNotOnThisRow&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8e</p>
<p>　　Const&nbsp;&nbsp; adErrURLIntegrViolSetColumns&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8f</p>
<p>　　Const&nbsp;&nbsp; adErrURLDoesNotExist&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He8f</p>
<p>　　Const&nbsp;&nbsp; adErrTreePermissionDenied&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He90</p>
<p>　　Const&nbsp;&nbsp; adErrInvalidURL&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He91</p>
<p>　　Const&nbsp;&nbsp; adErrResourceLocked&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He92</p>
<p>　　Const&nbsp;&nbsp; adErrResourceExists&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He93</p>
<p>　　Const&nbsp;&nbsp; adErrCannotComplete&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He94</p>
<p>　　Const&nbsp;&nbsp; adErrVolumeNotFound&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He95</p>
<p>　　Const&nbsp;&nbsp; adErrOutOfSpace&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He96</p>
<p>　　Const&nbsp;&nbsp; adErrResourceOutOfScope&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He97</p>
<p>　　Const&nbsp;&nbsp; adErrUnavailable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He98</p>
<p>　　Const&nbsp;&nbsp; adErrURLNamedRowDoesNotExist&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He99</p>
<p>　　Const&nbsp;&nbsp; adErrDelResOutOfScope&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He9a</p>
<p>　　Const&nbsp;&nbsp; adErrPropInvalidColumn&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He9b</p>
<p>　　Const&nbsp;&nbsp; adErrPropInvalidOption&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He9c</p>
<p>　　Const&nbsp;&nbsp; adErrPropInvalidValue&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He9d</p>
<p>　　Const&nbsp;&nbsp; adErrPropConflicting&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He9e</p>
<p>　　Const&nbsp;&nbsp; adErrPropNotAllSettable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;He9f</p>
<p>　　Const&nbsp;&nbsp; adErrPropNotSet&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea0</p>
<p>　　Const&nbsp;&nbsp; adErrPropNotSettable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea1</p>
<p>　　Const&nbsp;&nbsp; adErrPropNotSupported&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea2</p>
<p>　　Const&nbsp;&nbsp; adErrCatalogNotSet&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea3</p>
<p>　　Const&nbsp;&nbsp; adErrCantChangeConnection&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea4</p>
<p>　　Const&nbsp;&nbsp; adErrFieldsUpdateFailed&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea5</p>
<p>　　Const&nbsp;&nbsp; adErrDenyNotSupported&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea6</p>
<p>　　Const&nbsp;&nbsp; adErrDenyTypeNotSupported&nbsp;&nbsp; =&nbsp;&nbsp; &amp;Hea7</p>
<p>　　'----&nbsp;&nbsp; ParameterAttributesEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adParamSigned&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0010</p>
<p>　　Const&nbsp;&nbsp; adParamNullable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0040</p>
<p>　　Const&nbsp;&nbsp; adParamLong&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0080</p>
<p>　　'----&nbsp;&nbsp; ParameterDirectionEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adParamUnknown&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000</p>
<p>　　Const&nbsp;&nbsp; adParamInput&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0001</p>
<p>　　Const&nbsp;&nbsp; adParamOutput&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0002</p>
<p>　　Const&nbsp;&nbsp; adParamInputOutput&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0003</p>
<p>　　Const&nbsp;&nbsp; adParamReturnValue&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0004</p>
<p>　　'----&nbsp;&nbsp; CommandTypeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adCmdUnknown&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0008</p>
<p>　　Const&nbsp;&nbsp; adCmdText&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0001</p>
<p>　　Const&nbsp;&nbsp; adCmdTable&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0002</p>
<p>　　Const&nbsp;&nbsp; adCmdStoredProc&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0004</p>
<p>　　Const&nbsp;&nbsp; adCmdFile&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0100</p>
<p>　　Const&nbsp;&nbsp; adCmdTableDirect&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0200</p>
<p>　　'----&nbsp;&nbsp; EventStatusEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adStatusOK&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000001</p>
<p>　　Const&nbsp;&nbsp; adStatusErrorsOccurred&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000002</p>
<p>　　Const&nbsp;&nbsp; adStatusCantDeny&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000003</p>
<p>　　Const&nbsp;&nbsp; adStatusCancel&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000004</p>
<p>　　Const&nbsp;&nbsp; adStatusUnwantedEvent&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H0000005</p>
<p>　　'----&nbsp;&nbsp; EventReasonEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adRsnAddNew&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adRsnDelete&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adRsnUpdate&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adRsnUndoUpdate&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adRsnUndoAddNew&nbsp;&nbsp; =&nbsp;&nbsp; 5</p>
<p>　　Const&nbsp;&nbsp; adRsnUndoDelete&nbsp;&nbsp; =&nbsp;&nbsp; 6</p>
<p>　　Const&nbsp;&nbsp; adRsnRequery&nbsp;&nbsp; =&nbsp;&nbsp; 7</p>
<p>　　Const&nbsp;&nbsp; adRsnResynch&nbsp;&nbsp; =&nbsp;&nbsp; 8</p>
<p>　　Const&nbsp;&nbsp; adRsnClose&nbsp;&nbsp; =&nbsp;&nbsp; 9</p>
<p>　　Const&nbsp;&nbsp; adRsnMove&nbsp;&nbsp; =&nbsp;&nbsp; 10</p>
<p>　　Const&nbsp;&nbsp; adRsnFirstChange&nbsp;&nbsp; =&nbsp;&nbsp; 11</p>
<p>　　Const&nbsp;&nbsp; adRsnMoveFirst&nbsp;&nbsp; =&nbsp;&nbsp; 12</p>
<p>　　Const&nbsp;&nbsp; adRsnMoveNext&nbsp;&nbsp; =&nbsp;&nbsp; 13</p>
<p>　　Const&nbsp;&nbsp; adRsnMovePrevious&nbsp;&nbsp; =&nbsp;&nbsp; 14</p>
<p>　　Const&nbsp;&nbsp; adRsnMoveLast&nbsp;&nbsp; =&nbsp;&nbsp; 15</p>
<p>　　Const&nbsp;&nbsp; adSchemaProviderSpecific&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adSchemaAsserts&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adSchemaCatalogs&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adSchemaCharacterSets&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adSchemaCollations&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adSchemaColumns&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adSchemaCheckConstraints&nbsp;&nbsp; =&nbsp;&nbsp; 5</p>
<p>　　Const&nbsp;&nbsp; adSchemaConstraintColumnUsage&nbsp;&nbsp; =&nbsp;&nbsp; 6</p>
<p>　　Const&nbsp;&nbsp; adSchemaConstraintTableUsage&nbsp;&nbsp; =&nbsp;&nbsp; 7</p>
<p>　　Const&nbsp;&nbsp; adSchemaKeyColumnUsage&nbsp;&nbsp; =&nbsp;&nbsp; 8</p>
<p>　　Const&nbsp;&nbsp; adSchemaReferentialConstraints&nbsp;&nbsp; =&nbsp;&nbsp; 9</p>
<p>　　Const&nbsp;&nbsp; adSchemaTableConstraints&nbsp;&nbsp; =&nbsp;&nbsp; 10</p>
<p>　　Const&nbsp;&nbsp; adSchemaColumnsDomainUsage&nbsp;&nbsp; =&nbsp;&nbsp; 11</p>
<p>　　Const&nbsp;&nbsp; adSchemaIndexes&nbsp;&nbsp; =&nbsp;&nbsp; 12</p>
<p>　　Const&nbsp;&nbsp; adSchemaColumnPrivileges&nbsp;&nbsp; =&nbsp;&nbsp; 13</p>
<p>　　Const&nbsp;&nbsp; adSchemaTablePrivileges&nbsp;&nbsp; =&nbsp;&nbsp; 14</p>
<p>　　Const&nbsp;&nbsp; adSchemaUsagePrivileges&nbsp;&nbsp; =&nbsp;&nbsp; 15</p>
<p>　　Const&nbsp;&nbsp; adSchemaProcedures&nbsp;&nbsp; =&nbsp;&nbsp; 16</p>
<p>　　Const&nbsp;&nbsp; adSchemaSchemata&nbsp;&nbsp; =&nbsp;&nbsp; 17</p>
<p>　　Const&nbsp;&nbsp; adSchemaSQLLanguages&nbsp;&nbsp; =&nbsp;&nbsp; 18</p>
<p>　　Const&nbsp;&nbsp; adSchemaStatistics&nbsp;&nbsp; =&nbsp;&nbsp; 19</p>
<p>　　Const&nbsp;&nbsp; adSchemaTables&nbsp;&nbsp; =&nbsp;&nbsp; 20</p>
<p>　　Const&nbsp;&nbsp; adSchemaTranslations&nbsp;&nbsp; =&nbsp;&nbsp; 21</p>
<p>　　Const&nbsp;&nbsp; adSchemaProviderTypes&nbsp;&nbsp; =&nbsp;&nbsp; 22</p>
<p>　　Const&nbsp;&nbsp; adSchemaViews&nbsp;&nbsp; =&nbsp;&nbsp; 23</p>
<p>　　Const&nbsp;&nbsp; adSchemaViewColumnUsage&nbsp;&nbsp; =&nbsp;&nbsp; 24</p>
<p>　　Const&nbsp;&nbsp; adSchemaViewTableUsage&nbsp;&nbsp; =&nbsp;&nbsp; 25</p>
<p>　　Const&nbsp;&nbsp; adSchemaProcedureParameters&nbsp;&nbsp; =&nbsp;&nbsp; 26</p>
<p>　　Const&nbsp;&nbsp; adSchemaForeignKeys&nbsp;&nbsp; =&nbsp;&nbsp; 27</p>
<p>　　Const&nbsp;&nbsp; adSchemaPrimaryKeys&nbsp;&nbsp; =&nbsp;&nbsp; 28</p>
<p>　　Const&nbsp;&nbsp; adSchemaProcedureColumns&nbsp;&nbsp; =&nbsp;&nbsp; 29</p>
<p>　　Const&nbsp;&nbsp; adSchemaDBInfoKeywords&nbsp;&nbsp; =&nbsp;&nbsp; 30</p>
<p>　　Const&nbsp;&nbsp; adSchemaDBInfoLiterals&nbsp;&nbsp; =&nbsp;&nbsp; 31</p>
<p>　　Const&nbsp;&nbsp; adSchemaCubes&nbsp;&nbsp; =&nbsp;&nbsp; 32</p>
<p>　　Const&nbsp;&nbsp; adSchemaDimensions&nbsp;&nbsp; =&nbsp;&nbsp; 33</p>
<p>　　Const&nbsp;&nbsp; adSchemaHierarchies&nbsp;&nbsp; =&nbsp;&nbsp; 34</p>
<p>　　Const&nbsp;&nbsp; adSchemaLevels&nbsp;&nbsp; =&nbsp;&nbsp; 35</p>
<p>　　Const&nbsp;&nbsp; adSchemaMeasures&nbsp;&nbsp; =&nbsp;&nbsp; 36</p>
<p>　　Const&nbsp;&nbsp; adSchemaProperties&nbsp;&nbsp; =&nbsp;&nbsp; 37</p>
<p>　　Const&nbsp;&nbsp; adSchemaMembers&nbsp;&nbsp; =&nbsp;&nbsp; 38</p>
<p>　　Const&nbsp;&nbsp; adSchemaTrustees&nbsp;&nbsp; =&nbsp;&nbsp; 39</p>
<p>　　Const&nbsp;&nbsp; adSchemaFunctions&nbsp;&nbsp; =&nbsp;&nbsp; 40</p>
<p>　　Const&nbsp;&nbsp; adSchemaActions&nbsp;&nbsp; =&nbsp;&nbsp; 41</p>
<p>　　Const&nbsp;&nbsp; adSchemaCommands&nbsp;&nbsp; =&nbsp;&nbsp; 42</p>
<p>　　Const&nbsp;&nbsp; adSchemaSets&nbsp;&nbsp; =&nbsp;&nbsp; 43</p>
<p>　　'----&nbsp;&nbsp; FieldStatusEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adFieldOK&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adFieldCantConvertValue&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adFieldIsNull&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adFieldTruncated&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adFieldSignMismatch&nbsp;&nbsp; =&nbsp;&nbsp; 5</p>
<p>　　Const&nbsp;&nbsp; adFieldDataOverflow&nbsp;&nbsp; =&nbsp;&nbsp; 6</p>
<p>　　Const&nbsp;&nbsp; adFieldCantCreate&nbsp;&nbsp; =&nbsp;&nbsp; 7</p>
<p>　　Const&nbsp;&nbsp; adFieldUnavailable&nbsp;&nbsp; =&nbsp;&nbsp; 8</p>
<p>　　Const&nbsp;&nbsp; adFieldPermissionDenied&nbsp;&nbsp; =&nbsp;&nbsp; 9</p>
<p>　　Const&nbsp;&nbsp; adFieldIntegrityViolation&nbsp;&nbsp; =&nbsp;&nbsp; 10</p>
<p>　　Const&nbsp;&nbsp; adFieldSchemaViolation&nbsp;&nbsp; =&nbsp;&nbsp; 11</p>
<p>　　Const&nbsp;&nbsp; adFieldBadStatus&nbsp;&nbsp; =&nbsp;&nbsp; 12</p>
<p>　　Const&nbsp;&nbsp; adFieldDefault&nbsp;&nbsp; =&nbsp;&nbsp; 13</p>
<p>　　Const&nbsp;&nbsp; adFieldIgnore&nbsp;&nbsp; =&nbsp;&nbsp; 15</p>
<p>　　Const&nbsp;&nbsp; adFieldDoesNotExist&nbsp;&nbsp; =&nbsp;&nbsp; 16</p>
<p>　　Const&nbsp;&nbsp; adFieldInvalidURL&nbsp;&nbsp; =&nbsp;&nbsp; 17</p>
<p>　　Const&nbsp;&nbsp; adFieldResourceLocked&nbsp;&nbsp; =&nbsp;&nbsp; 18</p>
<p>　　Const&nbsp;&nbsp; adFieldResourceExists&nbsp;&nbsp; =&nbsp;&nbsp; 19</p>
<p>　　Const&nbsp;&nbsp; adFieldCannotComplete&nbsp;&nbsp; =&nbsp;&nbsp; 20</p>
<p>　　Const&nbsp;&nbsp; adFieldVolumeNotFound&nbsp;&nbsp; =&nbsp;&nbsp; 21</p>
<p>　　Const&nbsp;&nbsp; adFieldOutOfSpace&nbsp;&nbsp; =&nbsp;&nbsp; 22</p>
<p>　　Const&nbsp;&nbsp; adFieldCannotDeleteSource&nbsp;&nbsp; =&nbsp;&nbsp; 23</p>
<p>　　Const&nbsp;&nbsp; adFieldReadOnly&nbsp;&nbsp; =&nbsp;&nbsp; 24</p>
<p>　　Const&nbsp;&nbsp; adFieldResourceOutOfScope&nbsp;&nbsp; =&nbsp;&nbsp; 25</p>
<p>　　Const&nbsp;&nbsp; adFieldAlreadyExists&nbsp;&nbsp; =&nbsp;&nbsp; 26</p>
<p>　　Const&nbsp;&nbsp; adFieldPendingInsert&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H10000</p>
<p>　　Const&nbsp;&nbsp; adFieldPendingDelete&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H20000</p>
<p>　　Const&nbsp;&nbsp; adFieldPendingChange&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H40000</p>
<p>　　Const&nbsp;&nbsp; adFieldPendingUnknown&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H80000</p>
<p>　　Const&nbsp;&nbsp; adFieldPendingUnknownDelete&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H100000</p>
<p>　　'----&nbsp;&nbsp; SeekEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adSeekFirstEQ&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H1</p>
<p>　　Const&nbsp;&nbsp; adSeekLastEQ&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H2</p>
<p>　　Const&nbsp;&nbsp; adSeekAfterEQ&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H4</p>
<p>　　Const&nbsp;&nbsp; adSeekAfter&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H8</p>
<p>　　Const&nbsp;&nbsp; adSeekBeforeEQ&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H10</p>
<p>　　Const&nbsp;&nbsp; adSeekBefore&nbsp;&nbsp; =&nbsp;&nbsp; &amp;H20</p>
<p>　　'----&nbsp;&nbsp; ADCPROP_UPDATECRITERIA_ENUM&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adCriteriaKey&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adCriteriaAllCols&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adCriteriaUpdCols&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adCriteriaTimeStamp&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　'----&nbsp;&nbsp; ADCPROP_ASYNCTHREADPRIORITY_ENUM&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adPriorityLowest&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adPriorityBelowNormal&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adPriorityNormal&nbsp;&nbsp; =&nbsp;&nbsp; 3</p>
<p>　　Const&nbsp;&nbsp; adPriorityAboveNormal&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adPriorityHighest&nbsp;&nbsp; =&nbsp;&nbsp; 5</p>
<p>　　'----&nbsp;&nbsp; ADCPROP_AUTORECALC_ENUM&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adRecalcUpFront&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adRecalcAlways&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　'----&nbsp;&nbsp; ADCPROP_UPDATERESYNC_ENUM&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　'----&nbsp;&nbsp; MoveRecordOptionsEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adMoveUnspecified&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adMoveOverWrite&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adMoveDontUpdateLinks&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　Const&nbsp;&nbsp; adMoveAllowEmulation&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　'----&nbsp;&nbsp; CopyRecordOptionsEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adCopyUnspecified&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adCopyOverWrite&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adCopyAllowEmulation&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　Const&nbsp;&nbsp; adCopyNonRecursive&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　'----&nbsp;&nbsp; StreamTypeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adTypeBinary&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adTypeText&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　'----&nbsp;&nbsp; LineSeparatorEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adLF&nbsp;&nbsp; =&nbsp;&nbsp; 10</p>
<p>　　Const&nbsp;&nbsp; adCR&nbsp;&nbsp; =&nbsp;&nbsp; 13</p>
<p>　　Const&nbsp;&nbsp; adCRLF&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　'----&nbsp;&nbsp; StreamOpenOptionsEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adOpenStreamUnspecified&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adOpenStreamAsync&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adOpenStreamFromRecord&nbsp;&nbsp; =&nbsp;&nbsp; 4</p>
<p>　　'----&nbsp;&nbsp; StreamWriteEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adWriteChar&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adWriteLine&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　'----&nbsp;&nbsp; SaveOptionsEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adSaveCreateNotExist&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adSaveCreateOverWrite&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<p>　　'----&nbsp;&nbsp; FieldEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adDefaultStream&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adRecordURL&nbsp;&nbsp; =&nbsp;&nbsp; -2</p>
<p>　　'----&nbsp;&nbsp; StreamReadEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adReadAll&nbsp;&nbsp; =&nbsp;&nbsp; -1</p>
<p>　　Const&nbsp;&nbsp; adReadLine&nbsp;&nbsp; =&nbsp;&nbsp; -2</p>
<p>　　'----&nbsp;&nbsp; RecordTypeEnum&nbsp;&nbsp; Values&nbsp;&nbsp; ----</p>
<p>　　Const&nbsp;&nbsp; adSimpleRecord&nbsp;&nbsp; =&nbsp;&nbsp; 0</p>
<p>　　Const&nbsp;&nbsp; adCollectionRecord&nbsp;&nbsp; =&nbsp;&nbsp; 1</p>
<p>　　Const&nbsp;&nbsp; adStructDoc&nbsp;&nbsp; =&nbsp;&nbsp; 2</p>
<br />
<font color="#2e496d">本文永久地址: </font><a href="http://www.livebaby.cn/blog/u/meil/archives/2008/asp-ado-enumerate-constant.html">http://www.livebaby.cn/blog/u/meil/archives/2008/asp-ado-enumerate-constant.html</a><br />
  <img src ="http://www.cnblogs.com/meil/aggbug/1057125.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42959/" target="_blank">[新闻]微软承认Vista用户账户控制功能有问题</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>开发笔记：FTP命令使用详解</title><link>http://www.cnblogs.com/meil/archive/2008/01/04/1026248.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Fri, 04 Jan 2008 09:39:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2008/01/04/1026248.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/1026248.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2008/01/04/1026248.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/1026248.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/1026248.html</trackback:ping><description><![CDATA[<p><font face="Courier New">　　FTP命令是Internet用户使用最频繁的命令之一，不论是在DOS还是UNIX操作系统下使用FTP，都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令，可以大大方便使用者，并收到事半功倍之效。</font></p>
<p><font face="Courier New">　　<strong>FTP的命令行格式为：ftp -v -d -i -n -g [主机名]，其中</strong></font></p>
<p><font face="Courier New">　　-v：显示远程服务器的所有响应信息；</font></p>
<p><font face="Courier New">　　-n：限制ftp的自动登录，即不使用；</font></p>
<p><font face="Courier New">　　.n： etrc文件；</font></p>
<p><font face="Courier New">　　-d：使用调试方式；</font></p>
<p><font face="Courier New">　　-g：取消全局文件名。</font></p>
<p><font face="Courier New">　　<strong>FTP内部命令格式(中括号表示可选项):</strong></font></p>
<p><font face="Courier New">　　1.![cmd[args]]：在本地机中执行交互shell，exit回到ftp环境，如：!ls*.zip.</font></p>
<p><font face="Courier New">　　2.$ macro-ame[args]：执行宏定义macro-name.</font></p>
<p><font face="Courier New">　　3.account[password]：提供登录远程系统成功后访问系统资源所需的补充口令。</font></p>
<p><font face="Courier New">　　4.append local-file[remote-file]：将本地文件追加到远程系统主机，若未指定远程系统文件名，则使用本地文件名。</font></p>
<p><font face="Courier New">　　5.ascii：使用ascii类型传输方式。</font></p>
<p><font face="Courier New">　　6.bell：每个命令执行完毕后计算机响铃一次。</font></p>
<p><font face="Courier New">　　7.bin：使用二进制文件传输方式。</font></p>
<p><font face="Courier New">　　8.bye：退出ftp会话过程。</font></p>
<p><font face="Courier New">　　9.case：在使用mget时，将远程主机文件名中的大写转为小写字母。</font></p>
<p><font face="Courier New">　　10.cd remote-dir：进入远程主机目录。</font></p>
<p><font face="Courier New">　　11.cdup：进入远程主机目录的父目录。</font></p>
<p><font face="Courier New">　　12.chmod mode file-name：将远程主机文件file-name的存取方式设置为mode，如：chmod 777 a.out。</font></p>
<p><font face="Courier New">　　13.close：中断与远程服务器的ftp会话(与open对应)。</font></p>
<p><font face="Courier New">　　14.cr：使用asscii方式传输文件时，将回车换行转换为回行。</font></p>
<p><font face="Courier New">　　15.delete remote-file：删除远程主机文件。</font></p>
<p><font face="Courier New">　　16.debug[debug-value]：设置调试方式，显示发送至远程主机的每条命令，如：deb up 3，若设为0，表示取消debug。</font></p>
<p><font face="Courier New">　　17.dir[remote-dir][local-file]：显示远程主机目录，并将结果存入本地文件local-file。</font></p>
<p><font face="Courier New">　　18.disconnection：同close。</font></p>
<p><font face="Courier New">　　19.form format：将文件传输方式设置为format，缺省为file方式。</font></p>
<p><font face="Courier New">　　20.get remote-file[local-file]：将远程主机的文件remote-file传至本地硬盘的local-file。</font></p>
<p><font face="Courier New">　　21.glob：设置mdelete，mget，mput的文件名扩展，缺省时不扩展文件名，同命令行的-g参数。</font></p>
<p><font face="Courier New">　　22.hash：每传输1024字节，显示一个hash符号(#)。</font></p>
<p><font face="Courier New">　　23.help[cmd]：显示ftp内部命令cmd的帮助信息，如：help get。</font></p>
<p><font face="Courier New">　　24.idle[seconds]：将远程服务器的休眠计时器设为[seconds]秒。</font></p>
<p><font face="Courier New">　　25.image：设置二进制传输方式(同binary)。</font></p>
<p><font face="Courier New">　　26.lcd[dir]：将本地工作目录切换至dir。</font></p>
<p><font face="Courier New">　　27.ls[remote-dir][local-file]：显示远程目录remote-dir，并存入本地文件local-file。</font></p>
<p><font face="Courier New">　　28.macdef macro-name：定义一个宏，遇到macdef下的空行时，宏定义结束。</font></p>
<p><font face="Courier New">　　29.mdelete[remote-file]：删除远程主机文件。</font></p>
<p><font face="Courier New">　　30.mdir remote-files local-file：与dir类似，但可指定多个远程文件，如：mdir *.o.*.zipoutfile</font></p>
<p><font face="Courier New">　　31.mget remote-files：传输多个远程文件。</font></p>
<p><font face="Courier New">　　32.mkdir dir-name：在远程主机中建一目录。</font></p>
<p><font face="Courier New">　　33.mls remote-file local-file：同nlist，但可指定多个文件名。</font></p>
<p><font face="Courier New">　　34.mode[modename]：将文件传输方式设置为modename，缺省为stream方式。</font></p>
<p><font face="Courier New">　　35.modtime file-name：显示远程主机文件的最后修改时间。</font></p>
<p><font face="Courier New">　　36.mput local-file：将多个文件传输至远程主机。</font></p>
<p><font face="Courier New">　　37.newer file-name：如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近，则重传该文件。</font></p>
<p><font face="Courier New">　　38.nlist[remote-dir][local-file]：显示远程主机目录的文件清单，并存入本地硬盘的local-file。</font></p>
<p><font face="Courier New">　　39.nmap[inpattern outpattern]：设置文件名映射机制，使得文件传输时，文件中的某些字符相互转换，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如：nmap $1.$2.$3[$1，$2].[$2，$3]，则传输文件a1.a2.a3时，文件名变为a1，a2。该命令特别适用于远程主机为非UNIX机的情况。</font></p>
<p><font face="Courier New">　　40.ntrans[inchars[outchars]]：设置文件名字符的翻译机制，如ntrans 1R，则文件名LLL将变为RRR。</font></p>
<p><font face="Courier New">　　41.open host[port]：建立指定ftp服务器连接，可指定连接端口。</font></p>
<p><font face="Courier New">　　42.passive：进入被动传输方式。</font></p>
<p><font face="Courier New">　　43.prompt：设置多个文件传输时的交互提示。</font></p>
<p><font face="Courier New">　　44.proxy ftp-cmd：在次要控制连接中，执行一条ftp命令，该命令允许连接两个ftp服务器，以在两个服务器间传输文件。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第一条ftp命令必须为open，以首先建立两个服务器间的连接。</font></p>
<p><font face="Courier New">　　45.put local-file[remote-file]：将本地文件local-file传送至远程主机。</font></p>
<p><font face="Courier New">　　46.pwd：显示远程主机的当前工作目录。</font></p>
<p><font face="Courier New">　　47.quit：同bye，退出ftp会话。</font></p>
<p><font face="Courier New">　　48.quote arg1，arg2...：将参数逐字发至远程ftp服务器，如：quote syst.</font></p>
<p><font face="Courier New">　　49.recv remote-file[local-file]：同get。</font></p>
<p><font face="Courier New">　　50.reget remote-file[local-file]：类似于get，但若local-file存在，则从上次传输中断处续传。</font></p>
<p><font face="Courier New">　　51.rhelp[cmd-name]：请求获得远程主机的帮助。</font></p>
<p><font face="Courier New">　　52.rstatus[file-name]：若未指定文件名，则显示远程主机的状态，否则显示文件状态。</font></p>
<p><font face="Courier New">　　53.rename[from][to]：更改远程主机文件名。</font></p>
<p><font face="Courier New">　　54.reset：清除回答队列。</font></p>
<p><font face="Courier New">　　55.restart marker：从指定的标志marker处，重新开始get或put，如：restart 130。</font></p>
<p><font face="Courier New">　　56.rmdir dir-name：删除远程主机目录。</font></p>
<p><font face="Courier New">　　57.runique：设置文件名唯一性存储，若文件存在，则在原文件后加后缀..1，.2等。</font></p>
<p><font face="Courier New">　　58.send local-file[remote-file]：同put。</font></p>
<p><font face="Courier New">　　59.sendport：设置PORT命令的使用。</font></p>
<p><font face="Courier New">　　60.site arg1，arg2...：将参数作为SITE命令逐字发送至远程ftp主机。</font></p>
<p><font face="Courier New">　　61.size file-name：显示远程主机文件大小，如：site idle 7200。</font></p>
<p><font face="Courier New">　　62.status：显示当前ftp状态。</font></p>
<p><font face="Courier New">　　63.struct[struct-name]：将文件传输结构设置为struct-name，缺省时使用stream结构。</font></p>
<p><font face="Courier New">　　64.sunique：将远程主机文件名存储设置为唯一(与runique对应)。</font></p>
<p><font face="Courier New">　　65.system：显示远程主机的操作系统类型。</font></p>
<p><font face="Courier New">　　66.tenex：将文件传输类型设置为TENEX机的所需的类型。</font></p>
<p><font face="Courier New">　　67.tick：设置传输时的字节计数器。</font></p>
<p><font face="Courier New">　　68.trace：设置包跟踪。</font></p>
<p><font face="Courier New">　　69.type[type-name]：设置文件传输类型为type-name，缺省为ascii，如：type binary，设置二进制传输方式。</font></p>
<p><font face="Courier New">　　70.umask[newmask]：将远程服务器的缺省umask设置为newmask，如：umask 3。</font></p>
<p><font face="Courier New">　　71.user user-name[password][account]：向远程主机表明自己的身份，需要口令时，必须输入口令，如：user anonymous my@email。</font></p>
<p><font face="Courier New">　　72.verbose：同命令行的-v参数，即设置详尽报告方式，ftp服务器的所有响应都将显示给用户，缺省为on.</font></p>
<p><font face="Courier New">　　73.?[cmd]：同help。</font></p>
<img src ="http://www.cnblogs.com/meil/aggbug/1026248.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42958/" target="_blank">[新闻]资本寒冬侵袭中国视频网站 营销春天或不远</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Html中Label标记的作用和使用介绍</title><link>http://www.cnblogs.com/meil/archive/2008/01/04/1025922.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Fri, 04 Jan 2008 08:47:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2008/01/04/1025922.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/1025922.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2008/01/04/1025922.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/1025922.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/1025922.html</trackback:ping><description><![CDATA[<p><font face="Courier New"><strong><a href="http://www.livebaby.cn/study/Developer/HTML_CSS/2008/1/Html_Lable_415382424.html"><font face="Courier New"><strong>Label</strong></font></a></strong>标识有两个属性，一个是<strong style="color: red">FOR</strong>，一个是<span style="color: red"><strong>ACCESSKEY</strong></span>。</font></p>
<p><font face="Courier New"><strong style="color: red"><a href="http://www.livebaby.cn/study/Developer/HTML_CSS/2008/1/Html_Lable_415382424.html"><font face="Courier New"><strong style="color: red">FOR</strong></font></a></strong>的意思是，这个Lable是为哪个控件服务的；<br />
<span style="color: red"><strong><a href="http://www.livebaby.cn/study/Developer/HTML_CSS/2008/1/Html_Lable_415382424.html"><span style="color: red"><strong>ACCESSKEY</strong></span></a></strong></span>则定义了访问这个控件的热键。<br />
比如，有一个名字叫Name的文本框，&lt;INPUT TYPE="TEXT" ID="Name" SIZE=30&gt;，<br />
那么，&lt;label&gt;就可以定义成：&lt;LABEL FOR="Name" ACCESSKEY="N"&gt;姓　　名（&lt;U&gt;N&lt;/U&gt;）：&lt;/LABEL&gt;。<br />
可以看见，这个&lt;Label&gt;是为那个ID为&#8220;Name&#8221;控件服务的，而ACESSKEY则定义了，这访问这个控件的热键为&#8220;Alt+N&#8221;。<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">LABEL&nbsp;</span><span style="color: #ff0000">FOR</span><span style="color: #0000ff">="txtName"</span><span style="color: #ff0000">&nbsp;ACCESSKEY</span><span style="color: #0000ff">="N"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">姓　　名（</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">N</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">）：</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">LABEL</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">INPUT&nbsp;</span><span style="color: #ff0000">TYPE</span><span style="color: #0000ff">="TEXT"</span><span style="color: #ff0000">&nbsp;ID</span><span style="color: #0000ff">="txtName"</span><span style="color: #ff0000">&nbsp;SIZE</span><span style="color: #0000ff">=30</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Meil</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">LABEL&nbsp;</span><span style="color: #ff0000">FOR</span><span style="color: #0000ff">="txtUrl"</span><span style="color: #ff0000">&nbsp;ACCESSKEY</span><span style="color: #0000ff">="U"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">个人主页（</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">U</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">）：</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">LABEL</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">INPUT&nbsp;</span><span style="color: #ff0000">TYPE</span><span style="color: #0000ff">="TEXT"</span><span style="color: #ff0000">&nbsp;ID</span><span style="color: #0000ff">="txtUrl"</span><span style="color: #ff0000">&nbsp;SIZE</span><span style="color: #0000ff">=30</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">http://www.livebaby.cn</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">LABEL&nbsp;</span><span style="color: #ff0000">FOR</span><span style="color: #0000ff">="txtPhonebox"</span><span style="color: #ff0000">&nbsp;ACCESSKEY</span><span style="color: #0000ff">="P"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">联系电话（</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">P</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">）：</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">LABEL</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">INPUT&nbsp;</span><span style="color: #ff0000">TYPE</span><span style="color: #0000ff">="TEXT"</span><span style="color: #ff0000">&nbsp;ID</span><span style="color: #0000ff">="txtPhonebox"</span><span style="color: #ff0000">&nbsp;SIZE</span><span style="color: #0000ff">=30</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">LABEL&nbsp;</span><span style="color: #ff0000">FOR</span><span style="color: #0000ff">="areabox"</span><span style="color: #ff0000">&nbsp;ACCESSKEY</span><span style="color: #0000ff">="S"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">留　　言（</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">S</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">）：</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">LABEL</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TEXTAREA&nbsp;</span><span style="color: #ff0000">ID</span><span style="color: #0000ff">="areabox"</span><span style="color: #ff0000">&nbsp;COLS</span><span style="color: #0000ff">="30"</span><span style="color: #ff0000">&nbsp;ROWS</span><span style="color: #0000ff">="3"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TEXTAREA</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<br />
<br />
<p><font face="Courier New">　　单选钮、复选框都要点击控件才能选中控件，而如果使用&lt;label&gt;标识就可以实现点击文字选取。</font></p>
<p><font face="Courier New">点击文字可以选取的多项选择框：<br />
</font></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="CHECKBOX"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="chk1"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="often"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="chkoften"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">label&nbsp;</span><span style="color: #ff0000">for</span><span style="color: #0000ff">="chk1"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">经常来这里</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">label</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="CHECKBOX"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="chk2"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="seldom"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="chkseldom"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">label&nbsp;</span><span style="color: #ff0000">for</span><span style="color: #0000ff">="chk2"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">偶尔来看看</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">label</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<br />
<font face="Courier New">带热键的多项选择框：</font><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="CHECKBOX"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="chk3"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="often"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="chkoften"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">label&nbsp;</span><span style="color: #ff0000">for</span><span style="color: #0000ff">="chk3"</span><span style="color: #ff0000">&nbsp;ACCESSKEY</span><span style="color: #0000ff">="H"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">经常来这里（</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">H</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">）</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">label</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="CHECKBOX"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="chk4"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="seldom"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="chkseldom"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">label&nbsp;</span><span style="color: #ff0000">for</span><span style="color: #0000ff">="chk4"</span><span style="color: #ff0000">&nbsp;ACCESSKEY</span><span style="color: #0000ff">="L"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">偶尔来看看（</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">L</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">U</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">）</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">label</span><span style="color: #0000ff">&gt;</span></div>
</font><br />
原文： <font face="Courier New">http://www.livebaby.cn/study/Developer/HTML_CSS/2008/1/Html_Lable_415382424.html<br />
</font>
 <img src ="http://www.cnblogs.com/meil/aggbug/1025922.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42958/" target="_blank">[新闻]资本寒冬侵袭中国视频网站 营销春天或不远</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>我丫是程序员！"</title><link>http://www.cnblogs.com/meil/archive/2007/11/28/976119.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Wed, 28 Nov 2007 13:05:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2007/11/28/976119.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/976119.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2007/11/28/976119.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/976119.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/976119.html</trackback:ping><description><![CDATA[<p><font face="Courier New">　　MM说："我爱你."</font></p>
<p><font face="Courier New">　　我脸红了.我不想害她："我没钱，更没有房子和车."</font></p>
<p><font face="Courier New">　　MM盯着我的眼睛："我知道."</font></p>
<p><font face="Courier New">　　"我的月薪只有一千五."</font></p>
<p><font face="Courier New">　　MM的目光仍然坚定无比："以后会多的."</font></p>
<p><font face="Courier New">　　我用颤抖的双手拿出一支烟叼在嘴上："我每天要抽一包烟，一喝酒就闹事."</font></p>
<p><font face="Courier New">　　MM笑了，"以后有我在，你放心."</font></p>
<p><font face="Courier New">　　我的脊梁上冒起一阵寒意，结结巴巴地说："其实&#8230;&#8230;其实我很流氓&#8230;&#8230;幼儿园就喜欢去女厕所，小学就没了初吻，中学就&#8230;&#8230;"</font></p>
<p><font face="Courier New">　　MM没等我说完就软在了我的怀里，声音细若蚊鸣："早知道你好色，你老偷偷瞄我胸脯&#8230;&#8230;"</font></p>
<p><font face="Courier New">　　一股鼻血喷涌而出，我抱紧了MM，温热娇小的身体让我热血沸腾.这时我忽然想到了一件很重要的事情，我决定把这事告诉MM.</font></p>
<p><font face="Courier New">　　5秒钟后，MM抬头问我："真的？"我悲愤地点点头.</font></p>
<p><font face="Courier New">　　MM沉默片刻，挣开我的怀抱，抬手给了我一个耳光，她愤怒地朝我喊道："你丫竟然是程序员！"</font></p>
<img src ="http://www.cnblogs.com/meil/aggbug/976119.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42957/" target="_blank">[新闻]金融风暴波及全球创业板 中国概念股难独善其身</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Windows XP SP3 能显著提升SP2性能!</title><link>http://www.cnblogs.com/meil/archive/2007/11/24/970735.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Sat, 24 Nov 2007 02:12:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2007/11/24/970735.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/970735.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2007/11/24/970735.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/970735.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/970735.html</trackback:ping><description><![CDATA[<div class="postEntry">
<h3 class="title"><a href="http://meils.yculblog.com/post.1820510.html" rel="follow">Windows XP SP3 能显著提升SP2性能!</a></h3>
<h4 class="signature"><font size="3">　　在指出Windows Vista SP1不能提升Windows Vista的性能之后,Windows XP Service Pack 3 (v.3244) 的测试人员得出了一个可喜的测试结果,在OfficeBench测试环境下,桌面计算机部署XP SP3能显著提升XP SP2的系统性能,内含图像和测试报告.<br />
查看：</font><a href="http://exo-blog.blogspot.com/2007/11/windows-xp-sp3-yields-performance-gains.html" target="_blank"><font size="3">Windows XP SP3 (v.3244) Review</font></a><br />
</h4>
<div class="content">
<div><font size="3"></font></div>
<div><font size="3"></font></div>
<div><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><strong><font size="3">通过Windows Update更新到最新版Windows XP SP3<br />
</font></strong></div>
<p><font size="3">　　和上次更新Windows Vista SP1的方法一样,我们可以通过Windows Update更新到最新版Windows XP SP3,同样修改注册表键值,方法很简单.</font></p>
<p><font size="3">　　不过安装SP3还请三思而后行,毕竟只是一个测试版本,但是刚刚我们提供的报告显示,SP3能提升不少性能,小白鼠们如果有兴趣的话就赶紧测试,看看他们说的对不对吧.</font></p>
<p><font size="3">　　具体方法如下:</font></p>
<div><font size="3">&nbsp;&nbsp;&nbsp; 1.下载这个文件,利用管理员身份执行,并确认该信息.(用文本编辑器打开,你可以看到注册表键值,其实这就是一个修改注册表的批处理文件.)<br />
<br />
&nbsp;&nbsp;&nbsp; <strong>下载:</strong></font><a href="http://dailyapps.net/wp-content/uploads/2007/11/windowsxpsp3hack.cmd" target="_blank"><font size="3">WindowsXPSP3Hack.cmd</font></a><br />
<br />
<font size="3">&nbsp;&nbsp;&nbsp; * 这个文件可以让微软认为你是一个白鼠.<br />
<br />
&nbsp;&nbsp;&nbsp; 2.检查Windows Update,你可以看见SP3的更新.<br />
&nbsp;&nbsp;&nbsp; 3.下载安装即可<br />
<br />
&nbsp;原文地址：<font face="Arial"><a href="http://www.livebaby.cn/hot/tech/tech/2007/11/249565530.html">http://www.livebaby.cn/hot/tech/tech/2007/11/249565530.html</a></font></font></div>
<!-- <div class="more"><a href="/post.1820510.html">...</a></div>--></div>
</div>
<img src ="http://www.cnblogs.com/meil/aggbug/970735.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42956/" target="_blank">[新闻]携程范敏：CEO从接发传真做起</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>最新消息:@live.com&amp;@live.cn邮箱正式开放注册了!</title><link>http://www.cnblogs.com/meil/archive/2007/11/07/951704.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Wed, 07 Nov 2007 00:51:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2007/11/07/951704.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/951704.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2007/11/07/951704.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/951704.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/951704.html</trackback:ping><description><![CDATA[喜讯:MSN,live.cn邮箱可以注册了!<br />
今天发现不用刷漏洞直接可以注册live.cn或hotmail.com邮箱,开心,注册成功!:-)<br />
试着改IE7的语言为en-US发现不能注册live.com，选项是live.ca和hotmail.com.想要Live邮箱的兄弟们快注册啊！<br />
<br />
<p><strong>注册地址:</strong><a href="http://get.live.com/getlive/overview" target="_blank">Sign up for Windows Live</a><br />
<br />
@live.com注册方法：<br />
将浏览器语言修改为en-us，然后到<a href="http://get.live.com/en-us/wl/signup">http://get.live.com/en-us/wl/signup</a>注册就可以。 </p>
<img src ="http://www.cnblogs.com/meil/aggbug/951704.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42955/" target="_blank">[新闻]2008年10月13日科技博客精选</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>adodb.stream文件操作类详解</title><link>http://www.cnblogs.com/meil/archive/2007/11/01/945898.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Thu, 01 Nov 2007 09:16:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2007/11/01/945898.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/945898.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2007/11/01/945898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/945898.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/945898.html</trackback:ping><description><![CDATA[&lt;%<br />
''/*******************************二进制文件操作类************************************<br />
''/*作者：死在水中的鱼（死鱼）<br />
''/*日期：2004年9月7日<br />
''/*BLOG: http://blog.csdn.net/bpfish<br />
''/*<br />
''/*用法：<br />
''/*Dim obj,sData,iPos,iSize<br />
''/*Set obj=new FileClass<br />
''/*obj.OpenFile "文件绝对路径地址","打开方式" &nbsp; &nbsp; &nbsp; ''打开文件,打开方式的值和ADODB.Stream的Mode属性值相同<br />
''/*打开方式的相关几个值：1 = 只读 &nbsp;2 = 只写 &nbsp;3或空值 = 读写<br />
''/*obj.AppendTo "[追加文件]绝对路径地址" &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''把当前打开的文件追加到[追加文件]的末尾<br />
''/*obj.Move 数值 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''把当前打开的文件指针相对移动[数值]个字节<br />
''/*obj.MoveTo 数值 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''把当前打开的文件指针绝对于文件头移动[数值]个字节<br />
''/*sData=obj.Read(数值)<br />
''/*''说明：obj.Read(数值）读取当前被打开的文件[数值]个字节 &nbsp;''/*注意：读取位置与文件指针有关,如果数值为0则从当前文件位置开始读取数据直到文件尾<br />
''/*sData=obj.ReadAll &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''读取当前打开的文件所有数据<br />
''/*iPos=obj.Position &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''返回当前文件的文件指针位置(Position属性是只读,不能写）<br />
''/*iSize=obj.Size &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''返回当前文件的大小，即字节总数<br />
''/*If obj.Eof Then Response.Write "文件尾" &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
''/*注意：obj.Eof是判断文件指针是否移动到了文件的末尾,当obj.Eof=True时<br />
''/* &nbsp; &nbsp; obj.Position=obj.Size。但obj.Position=obj.Size则不一定obj.Eof=True<br />
''/*obj.SaveAs "另存为文件名","保存模式" &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''将当前打开的文件另存为新文件，保存模式的值是1或2 1=非覆盖 2=覆盖<br />
''/*obj.CloseFile &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''关闭当前打开的文件<br />
''/*obj.NewFile "新文件名",字节数据流 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''将[字节数据流]建立一个新文件，如果文件存在则将覆盖，如果非字节数据流则新建文件失败<br />
''/*obj.AppendFile "文件1","文件2",&#8220;生成文件"<br />
''/*''将[文件1]和[文件2]合并为一个新的[生成文件]，如果[生成文件]存在，则合并失败！如果将[生成文件]置为空，则将[文件2]合并进[文件1去。<br />
''/*Response.Write obj.GetText(字节数据流) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''将[字节数据流]转换成字符串并返回<br />
''/*Set obj=Nothing<br />
''/*<br />
''/*说明：字节数据流是二进制的数据<br />
''/*以下方法可以不需要先OpenFile：NewFile和AppendFile和GetText方法，否则其它则必需要先使用OpenFile方法打开文件<br />
''/**********************************************************************************<br />
Class FileClass<br />
Private ObjStream &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''ADODB.Stream对象变量<br />
Private OpenFlag &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''是否已有打开的文件<br />
Private FileIsEof<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：初始化类<br />
''/**********************************************************************************<br />
Private Sub Class_Initialize<br />
&nbsp;OpenFlag=False<br />
&nbsp;FileIsEof=True<br />
End Sub<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：<br />
''/**********************************************************************************<br />
Private Sub Class_Terminate &nbsp;<br />
&nbsp;Call CloseFile<br />
&nbsp;Set ObjStream=Nothing<br />
End Sub<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：获取文件的大小(-1 = 没有打开的文件)<br />
''/**********************************************************************************<br />
Public Property Get Size<br />
&nbsp; &nbsp;If OpenFlag Then<br />
&nbsp; &nbsp; &nbsp; Size=ObjStream.Size<br />
&nbsp; &nbsp;Else<br />
&nbsp; &nbsp; &nbsp; Size=-1<br />
&nbsp; &nbsp;End If<br />
End Property<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：获取当前文件的文件指针位置(-1 = 没有打开的文件)<br />
''/**********************************************************************************<br />
Public Property Get Position<br />
&nbsp; &nbsp;If OpenFlag Then<br />
&nbsp; &nbsp; &nbsp; Position=ObjStream.Position<br />
&nbsp; &nbsp;Else<br />
&nbsp; &nbsp; &nbsp; Position=-1<br />
&nbsp; &nbsp;End If<br />
End Property<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：获取当前的文件是否在文件尾(True = 文件尾 False = 否)<br />
''/*注意：返回为True时文件只是在最后一个字节处，返回为True是因为被尝试移动指针到文件的尾部(大于文件的大小)<br />
''/* &nbsp; &nbsp; &nbsp;如果外部调用此值时建议当该值为True时，停止任何的读取数据操作，否则有可能会有数据返回<br />
''/**********************************************************************************<br />
Public Property Get Eof<br />
&nbsp; &nbsp;Eof=FileIsEof<br />
End Property<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：打开文件<br />
''/*参数： FileName = 要打开的文件名，绝对地址<br />
''/* &nbsp; OpenMode = 打开文件的模式 值是同Adodb.Stream 对象的Mode属性相同<br />
''/**********************************************************************************<br />
Public Function OpenFile(ByVal FileName,ByVal OpenMode)<br />
On Error Resume Next<br />
Dim sFileName,iMode<br />
&nbsp; &nbsp;If OpenFlag Then &nbsp; &nbsp; &nbsp; &nbsp; ''如果已有打开文件，则关闭前一个文件<br />
&nbsp; &nbsp;Call CloseFile<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;sFileName=Trim(FileName)<br />
&nbsp; &nbsp;If sFileName="" Then<br />
&nbsp; &nbsp; &nbsp; FileIsEof=True<br />
&nbsp; &nbsp; &nbsp; OpenFlag=False<br />
&nbsp; &nbsp;OpenFile=False<br />
&nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;iMode=Cint(OpenMode) &nbsp; &nbsp; ''如果输入的不是数字则采用默认的3打开模式（读写型）<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp;iMode=3<br />
&nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;If iMode&lt;&gt;0 And iMode&lt;&gt;1 And iMode&lt;&gt;2 And iMode&lt;&gt;3 And iMode&lt;&gt;4 And iMode&lt;&gt;8 And iMode&lt;&gt;12 And iMode&lt;&gt;16 And iMode&lt;&gt;4194304 Then<br />
&nbsp; &nbsp; &nbsp; iMode=3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''如果输入的数字不在ADODB.ReadStream的Mode属性所接受的值则采用默认值3<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;''On Error Goto 0<br />
&nbsp; &nbsp;If Not InitObjStream Then &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''初始化对象,如不能初始化则返回一个False值<br />
&nbsp; &nbsp; &nbsp; FileIsEof=True<br />
&nbsp; &nbsp; &nbsp; OpenFlag=False<br />
&nbsp; &nbsp;OpenFile=False<br />
&nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;ObjStream.Type=1<br />
&nbsp; &nbsp;ObjStream.Mode=iMode<br />
&nbsp; &nbsp; &nbsp; ObjStream.Open<br />
&nbsp; &nbsp; &nbsp; ObjStream.LoadFromFile sFileName<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;FileIsEof=False<br />
&nbsp; &nbsp;OpenFlag=True<br />
&nbsp; &nbsp;OpenFile=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：读取指定长度的二进制内容<br />
''/*参数： Numbytes = 要读取的字节数(Numbytes = 0 获取当前文件指针后的所有内容)<br />
''/*返回：读取的字节数据<br />
''/**********************************************************************************<br />
Public Function Read(ByVal Numbytes)<br />
Dim iNum<br />
&nbsp; &nbsp;If Not OpenFlag Then Exit Function<br />
&nbsp; &nbsp;If Not IsInteger(Numbytes) Then Exit Function<br />
&nbsp; &nbsp;iNum=Clng(Numbytes)<br />
&nbsp; &nbsp;FileIsEof=False<br />
&nbsp; &nbsp;If iNum&lt;0 Then<br />
&nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp;ElseIf (iNum+ObjStream.Position)&gt;ObjStream.Size Then<br />
&nbsp; &nbsp;''iNum=ObjStream.Size-ObjStream.Position<br />
&nbsp; &nbsp;FileIsEof=True<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;If iNum=0 Then<br />
&nbsp; &nbsp; &nbsp; Read=ObjStream.Read<br />
&nbsp; &nbsp;Else<br />
&nbsp; &nbsp; &nbsp; Read=ObjStream.Read(iNum)<br />
&nbsp; &nbsp;End If<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：读取文件的所有内容<br />
''/*参数：<br />
''/*返回：读取文件的所有字节数据<br />
''/**********************************************************************************<br />
Public Function ReadAll<br />
&nbsp; &nbsp;If Not OpenFlag Then Exit Function<br />
&nbsp; &nbsp;ObjStream.Position=0<br />
&nbsp; &nbsp;ReadAll=ObjStream.Read<br />
&nbsp; &nbsp;FileIsEof=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：文件另存为<br />
''/*参数：FileName = 另存为文件绝对路径 &nbsp; Options = 文件另存为的模式 (1=非覆盖 2=覆盖)<br />
''/*返回：读取文件的所有字节数据<br />
''/**********************************************************************************<br />
Public Function SaveAs(ByVal FileName,ByVal Options)<br />
On Error Resume Next<br />
Dim sFileName,iOption<br />
&nbsp; &nbsp;If Not OpenFlag Then<br />
&nbsp; &nbsp;SaveAs=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;sFileName=Trim(FileName)<br />
&nbsp; &nbsp;If sFileName="" Then<br />
&nbsp; &nbsp;SaveAs=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;iOption=Cint(Options)<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then &nbsp; &nbsp; &nbsp;''如果非数值型数据，则采用默认值 1 = 非覆盖方式保存<br />
&nbsp; &nbsp;iOption=1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp; &nbsp; If iOption&lt;&gt;1 And iOption&lt;&gt;2 Then &nbsp; &nbsp; &nbsp; ''如果Options的值不在1和2的范围，则采用默认值 1<br />
&nbsp; &nbsp; &nbsp; iOption=1<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;ObjStream.SaveToFile sFileName,iOption<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp; &nbsp; Err.Clear<br />
&nbsp; &nbsp;SaveAs=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;SaveAs=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：追加文件数据到另一个文件<br />
''/*参数：FileName = 被追加的文件绝对路径<br />
''/*返回：True = 追加数据成功 &nbsp;False = 追加文件数据失败<br />
''/**********************************************************************************<br />
Public Function AppendTo(ByVal FileName)<br />
On Error Resume Next<br />
Dim sFileName,AppendObj<br />
&nbsp; &nbsp;If Not OpenFlag Then<br />
&nbsp; &nbsp;AppendTo=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;sFileName=Trim(FileName)<br />
&nbsp; &nbsp;If sFileName="" Then<br />
&nbsp; &nbsp;AppendTo=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;''打开要被追加的文件<br />
&nbsp; &nbsp;Set AppendObj=Server.CreateObject("ADODB.Stream")<br />
&nbsp; &nbsp;AppendObj.Type=1<br />
&nbsp; &nbsp;AppendObj.Mode=3<br />
&nbsp; &nbsp; &nbsp; AppendObj.Open<br />
&nbsp; &nbsp; &nbsp; AppendObj.LoadFromFile sFileName<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp;AppendTo=False<br />
&nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;AppendObj.Position=AppendObj.Size &nbsp; &nbsp;''移动指针到文件尾<br />
&nbsp; &nbsp;AppendObj.Write ReadAll &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''追加数据第一个文件的数据<br />
&nbsp; &nbsp;AppendObj.SaveToFile sFileName,2 &nbsp; &nbsp; ''另存为自己<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp; &nbsp; Err.Clear<br />
&nbsp; &nbsp;AppendTo=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;AppendObj.Close<br />
&nbsp; &nbsp;Set AppendObj=Nothing<br />
&nbsp; &nbsp;AppendTo=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：保存sData数据为一个文件<br />
''/*参数：FileName = 被追加的文件绝对路径<br />
''/*返回：True = 追加数据成功 &nbsp;False = 追加文件数据失败<br />
''/**********************************************************************************<br />
Public Function NewFile(ByVal FileName,ByRef sData)<br />
On Error Resume Next<br />
Dim sFileName,AppendObj<br />
&nbsp; &nbsp;sFileName=Trim(FileName)<br />
&nbsp; &nbsp;If sFileName="" Then<br />
&nbsp; &nbsp;NewFile=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;''打开要被追加的文件<br />
&nbsp; &nbsp;Set AppendObj=Server.CreateObject("ADODB.Stream")<br />
&nbsp; &nbsp;AppendObj.Type=1<br />
&nbsp; &nbsp;AppendObj.Mode=3<br />
&nbsp; &nbsp; &nbsp; AppendObj.Open<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp;NewFile=False<br />
&nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;If Left(TypeName(sData),4)="Byte" Then &nbsp; &nbsp; ''是字节流数据才能追加<br />
&nbsp; &nbsp; &nbsp; AppendObj.Write sData &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''追加数据第一个文件的数据<br />
&nbsp; &nbsp;AppendObj.SaveToFile sFileName,2 &nbsp; &nbsp; &nbsp; &nbsp;''另存为自己<br />
&nbsp; &nbsp;Else<br />
&nbsp; &nbsp;NewFile=False<br />
&nbsp; &nbsp; &nbsp; Exit Function &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp; &nbsp; Err.Clear<br />
&nbsp; &nbsp;NewFile=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;AppendObj.Close<br />
&nbsp; &nbsp;Set AppendObj=Nothing<br />
&nbsp; &nbsp;NewFile=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：文件合并<br />
''/*参数：AppendFileName = 合并文件1 &nbsp; &nbsp;SourceFileName = 合并文件2 &nbsp;TargetFileName = 合并后的文件(如为空，则保存为第一个文件名)<br />
''/*返回：True = 合并成功 &nbsp;False = 合并失败<br />
''/**********************************************************************************<br />
Public Function AppendFile(ByVal AppendFileName,ByVal SourceFileName,ByVal TargetFileName)<br />
On Error Resume Next<br />
Dim sFileName1,sFileName2,AppendObj1,AppendObj2<br />
Dim sTargetFile<br />
&nbsp; &nbsp;sFileName1=Trim(AppendFileName)<br />
&nbsp; &nbsp;sFileName2=Trim(SourceFileName)<br />
&nbsp; &nbsp;sTargetFile=Trim(TargetFileName)<br />
&nbsp; &nbsp;If sFileName1="" Or sFileName2="" Then<br />
&nbsp; &nbsp;AppendFile=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;''打开要被追加和追加的文件<br />
&nbsp; &nbsp;Set AppendObj1=Server.CreateObject("ADODB.Stream")<br />
&nbsp; &nbsp;Set AppendObj2=Server.CreateObject("ADODB.Stream")<br />
&nbsp; &nbsp;AppendObj1.Type=1<br />
&nbsp; &nbsp;AppendObj1.Mode=3<br />
&nbsp; &nbsp; &nbsp; AppendObj1.Open<br />
&nbsp; &nbsp; &nbsp; AppendObj1.LoadFromFile sFileName1<br />
&nbsp; &nbsp;AppendObj2.Type=1<br />
&nbsp; &nbsp;AppendObj2.Mode=3<br />
&nbsp; &nbsp; &nbsp; AppendObj2.Open<br />
&nbsp; &nbsp; &nbsp; AppendObj2.LoadFromFile sFileName2<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp;AppendFile=False<br />
&nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;AppendObj1.Position=AppendObj1.Size &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ''移动指针到文件尾<br />
&nbsp; &nbsp;AppendObj1.Write AppendObj2.Read &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;''追加数据第一个文件的数据<br />
&nbsp; &nbsp;If sTargetFile="" Then<br />
&nbsp; &nbsp; &nbsp; AppendObj1.SaveToFile sFileName1,2 &nbsp; &nbsp; &nbsp; &nbsp; ''另存为自己<br />
&nbsp; &nbsp;Else<br />
&nbsp; &nbsp; &nbsp; AppendObj1.SaveToFile sTargetFile,1 &nbsp; &nbsp; &nbsp; &nbsp;''另存为其它文件时不采用强制覆盖方式<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp; &nbsp; Err.Clear<br />
&nbsp; &nbsp;AppendFile=False<br />
&nbsp; &nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;AppendObj1.Close<br />
&nbsp; &nbsp;Set AppendObj1=Nothing<br />
&nbsp; &nbsp;AppendObj2.Close<br />
&nbsp; &nbsp;Set AppendObj2=Nothing<br />
&nbsp; &nbsp;AppendFile=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：移动文件指针（相对移动）<br />
''/*参数： ToNum = 要移动的字节数<br />
''/* &nbsp;<br />
''/**********************************************************************************<br />
Public Sub Move(ByVal ToNum)<br />
Dim iNum<br />
&nbsp; &nbsp;If Not OpenFlag Then Exit Sub<br />
&nbsp; &nbsp;If Not IsInteger(ToNum) Then Exit Sub<br />
&nbsp; &nbsp;iNum=ObjStream.Position+Clng(ToNum)<br />
&nbsp; &nbsp; &nbsp; FileIsEof=False<br />
&nbsp; &nbsp;If iNum&lt;0 Then<br />
&nbsp; &nbsp;iNum=0<br />
&nbsp; &nbsp;ElseIf iNum&gt;ObjStream.Size Then<br />
&nbsp; &nbsp;iNum=ObjStream.Size<br />
&nbsp; &nbsp;FileIsEof=True<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;ObjStream.Position=iNum<br />
End Sub<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：移动文件指针（绝对移动）<br />
''/*参数： ToNum = 要移动的字节数<br />
''/* &nbsp;<br />
''/**********************************************************************************<br />
Public Sub MoveTo(ByVal ToNum)<br />
Dim iNum<br />
&nbsp; &nbsp;If Not OpenFlag Then Exit Sub<br />
&nbsp; &nbsp;If Not IsInteger(ToNum) Then Exit Sub<br />
&nbsp; &nbsp;iNum=Clng(ToNum)<br />
&nbsp; &nbsp;FileIsEof=False<br />
&nbsp; &nbsp;If iNum&lt;0 Then<br />
&nbsp; &nbsp;iNum=0<br />
&nbsp; &nbsp;ElseIf iNum&gt;ObjStream.Size Then<br />
&nbsp; &nbsp;iNum=ObjStream.Size<br />
&nbsp; &nbsp;FileIsEof=True<br />
&nbsp; &nbsp;End If<br />
&nbsp; &nbsp;ObjStream.Position=iNum<br />
End Sub<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：关闭已打开的文件<br />
''/**********************************************************************************<br />
Public Sub CloseFile<br />
On Error Resume Next<br />
&nbsp;If Not IsNothing(ObjStream) Then<br />
&nbsp; &nbsp; ObjStream.Close<br />
&nbsp;End If<br />
&nbsp;OpenFlag=False<br />
&nbsp;FileIsEof=True<br />
End Sub<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：初始化ObjStream对象<br />
''/**********************************************************************************<br />
Private Function InitObjStream<br />
On Error Resume Next<br />
&nbsp;If IsNothing(ObjStream) Then<br />
&nbsp; &nbsp; Set ObjStream=Server.CreateObject("ADODB.Stream")<br />
&nbsp; &nbsp; If Err.Number&lt;&gt;0 Then<br />
&nbsp; &nbsp; &nbsp; &nbsp;Err.Clear<br />
&nbsp; &nbsp; InitObjStream=False<br />
&nbsp; &nbsp; Exit Function<br />
&nbsp; &nbsp; End If<br />
&nbsp;End If<br />
&nbsp;InitObjStream=True<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：获取二进制转换为字符串的数据<br />
''/**********************************************************************************<br />
Public Function GetText(ByRef vIn)<br />
On Error Resume Next<br />
Dim strReturn, i, ThisCharCode, NextCharCode<br />
&nbsp; &nbsp; &nbsp; &nbsp; strReturn = ""<br />
&nbsp; &nbsp; &nbsp; &nbsp; For i = 1 To LenB(vIn)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ThisCharCode = AscB(MidB(vIn, i, 1))<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If ThisCharCode &lt; &amp;H80 Then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strReturn = strReturn &amp; Chr(ThisCharCode)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NextCharCode = AscB(MidB(vIn, i + 1, 1))<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strReturn = strReturn &amp; Chr(CLng(ThisCharCode) * &amp;H100 + CInt(NextCharCode))<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;i = i + 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If<br />
&nbsp; &nbsp; &nbsp; &nbsp; Next<br />
&nbsp; &nbsp; &nbsp; &nbsp; GetText = strReturn<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：判断OBJ对象是否是空值<br />
''/**********************************************************************************<br />
Private Function IsNothing(Obj)<br />
&nbsp;If Not IsObject(Obj) Then<br />
&nbsp; &nbsp; IsNothing=True<br />
&nbsp; &nbsp; Exit Function<br />
&nbsp;End If &nbsp;<br />
&nbsp;If Obj Is Nothing Then<br />
&nbsp; &nbsp; IsNothing=True<br />
&nbsp; &nbsp; Exit Function<br />
&nbsp;End If<br />
&nbsp;If IsNull(Obj) Then<br />
&nbsp; &nbsp; IsNothing=True<br />
&nbsp; &nbsp; Exit Function<br />
&nbsp;End If &nbsp; &nbsp;<br />
&nbsp;IsNothing=False<br />
End Function<br />
<br />
''/**********************************************************************************<br />
''/* &nbsp; &nbsp; &nbsp; &nbsp; 函数名：判断是否是数字值(0,1,2,3,4,5...........9)<br />
''/**********************************************************************************<br />
Private Function IsInteger(Para)<br />
On Error Resume Next<br />
&nbsp; &nbsp; &nbsp; Dim str<br />
&nbsp; &nbsp; &nbsp; Dim l,i<br />
&nbsp; &nbsp; &nbsp; If isNUll(para) Then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IsInteger=False<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp; &nbsp; End if<br />
&nbsp; &nbsp; &nbsp; str=Cstr(para)<br />
&nbsp; &nbsp; &nbsp; If Trim(str)="" Then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IsInteger=False<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp; &nbsp; End If<br />
&nbsp; &nbsp; &nbsp; l=Len(str)<br />
&nbsp; &nbsp; &nbsp; For i=1 To l<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If Mid(str,i,1)&gt;"9" Or Mid(str,i,1)&lt;"0" Then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IsInteger=False<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit Function<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End if<br />
&nbsp; &nbsp; &nbsp; Next<br />
&nbsp; &nbsp; &nbsp; IsInteger=true<br />
&nbsp; &nbsp; &nbsp; If Err.number&lt;&gt;0 Then Err.clear<br />
End Function<br />
End Class<br />
%&gt;<br />
<br />
使用&#8220;二进制文件操作类编写的[文件分割]和[文件合并]代码例子：<br />
&lt;%<br />
Dim obj<br />
Set obj=New FileClass<br />
''文件分隔<br />
Dim i<br />
Obj.OpenFile "G:\2.mp3",""<br />
i=0<br />
Do While Not Obj.Eof<br />
&nbsp; If Obj.NewFile("G:\2_"&amp;i&amp;".mp3",Obj.Read(2048*1024)) Then &nbsp; &nbsp; &nbsp; &nbsp; ''分隔成2M大小的文件<br />
&nbsp; &nbsp; &nbsp;Response.Write "分隔成文件G:\2_"&amp;i&amp;".mp3成功！&lt;br&gt;"<br />
&nbsp; Else<br />
&nbsp; &nbsp; &nbsp;Response.Write "分隔成文件G:\2_"&amp;i&amp;".mp3失败！&lt;br&gt;"<br />
&nbsp; End If<br />
&nbsp; i=i+1<br />
Loop<br />
Obj.CloseFile<br />
<br />
''合并文件<br />
Dim j<br />
Obj.AppendFile "G:\2_0.mp3","G:\2_1.mp3","G:\Mp3.mp3"<br />
For j=2 To i-1<br />
&nbsp; &nbsp;Obj.AppendFile "G:\Mp3.mp3","G:\2_"&amp;j&amp;".mp3",""<br />
Next<br />
Response.Write "合并文件成功!"<br />
Set Obj=Nothing<br />
%&gt; 
 <img src ="http://www.cnblogs.com/meil/aggbug/945898.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42954/" target="_blank">[新闻]Google Android手机大受欢迎,已经订出150万台</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Visual Studio 2008 RTM 已经对内发布</title><link>http://www.cnblogs.com/meil/archive/2007/11/01/945089.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Thu, 01 Nov 2007 00:12:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2007/11/01/945089.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/945089.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2007/11/01/945089.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/945089.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/945089.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;众多.NET开发人员所期待的Visual Studio 2008终于发布了，从昨天晚上开始微软全球的员工已经可以开始下载这个Internal Release版本。 <br />
虽然正式发布启动仪式要在明年2月底进行，但为了&#8220;先声夺人&#8221;，<a href="http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx"><u>Visual Studio 2008</u></a>和<a href="http://www.microsoft.com/sql/2008/default.mspx"><u>SQL Server 200</u>8</a>、<a href="http://www.microsoft.com/windowsserver2008/default.mspx"><u>Windows Server 2008</u></a>的站点已经上线。<br />
<br />
<p><span style="font-weight: bold">微软主要从3个方面对Visual Studio 2008进行完善：</span><u style="font-weight: bold"><br />
<br />
</u>
<li>提高开发人员工作效率；
<li>便于管理整个项目生命周期；
<li>把最近的技术和开发框架集成到Visual Stuido中； <br />
从具体的开发领域看，这个版本的VS面向不同背景的开发团队，从下面7个领域作了较大的改善：<br />
<br />
<li>为了便于应用的分发和部署，对Smart Client应用增加了一整套的工具和类库，便于把Smart Client应用与既有的和新开发的Web应用集成在一起。另外，本地缓存机制也对脱机应用情形作了完善；
<li>发布新一代VSTO（Visual Studio Tool for Office），在对Word和Excel继续提供便捷开发的同时，着重加强了面向PowerPoint、Outlook的开发能力；
<li>结合Vista和Longhorn平台，提供更丰富的定制扩展能力，在WPF的基础上除了保持对WinForm和WebForm的支持外，对新出现的主动式客户体验驱动和数据内容驱动的应用提供支持；
<li>从.NET语言看，对LINQ的支持将很多以前游离在语言外部的公共机制直接内置到语言内部，便于开发人员开发中以一种更面向对象化的方式完成业务逻辑；
<li>进一步改善开发人员的设计和调试体验；
<li>提供面向AJAX的ASP.NET的模型，尤其在浏览器客户端开发中，JavaScript Intellisense的支持是很多开发人员期盼已久的；
<li>面向项目所有参与者提供多角度的项目生命期管理，提供更为便捷的参与、交互能力；<br />
</li>
<img src ="http://www.cnblogs.com/meil/aggbug/945089.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42954/" target="_blank">[新闻]Google Android手机大受欢迎,已经订出150万台</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript 对象与数组参考大全 </title><link>http://www.cnblogs.com/meil/archive/2007/10/26/938462.html</link><dc:creator>meil</dc:creator><author>meil</author><pubDate>Fri, 26 Oct 2007 03:34:00 GMT</pubDate><guid>http://www.cnblogs.com/meil/archive/2007/10/26/938462.html</guid><wfw:comment>http://www.cnblogs.com/meil/comments/938462.html</wfw:comment><comments>http://www.cnblogs.com/meil/archive/2007/10/26/938462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/meil/comments/commentRss/938462.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/meil/services/trackbacks/938462.html</trackback:ping><description><![CDATA[本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考Online Companion中的超级文本Object Hierarchy页面(<a href="http://www.netscapepress.com/support/javascript/10-9.htm">http://www.netscapepress.com/support/javascript/10-9.htm</a>),以便了解这些对象之间是如何相互关联的。<br />
　　顺便提一下,记住,这里把所有作为另一对象的子对象的对象看作该对象的属性请参见第十章中与此相关的注解。
<p>　　B.1 anchor对象<br />
　　使用&lt;A NAME=&gt;标记创建的HTML描点能被一个链接作为目标如果锚点包括HREF=特性,则它也是一个链接对象。<br />
　　anchor对象是document对象的一个属性,它本身没有属性方法或者事件处理程序。</p>
<p>　　B.2 anchors数组<br />
　　anchors数组是document对象的一个属性,是文档内所有anchor对象的一个列表如果anchor也是一个link(链接),则它会同时出现在anchors和links数组中。<br />
　　属性<br />
　　length 文档内的锚点个数</p>
<p>　　B.3 array对象<br />
　　array对象是Netscape Navlgator 3.0 beta 3中引入的一个新的对象,因而,它不能在Netscape 2.0中使用它是一个内置对象,而不是其它对象的属性。<br />
　　属性<br />
&nbsp;　length 数组中的值个数</p>
<p>　　B.4 button对象<br />
　　它是form对象的一个属性,使用&lt;INPUT TYPE="BUTTON"&gt;标记来创建。<br />
　　属性<br />
　　name HTML标记中的NAME=特性<br />
　　value HTML标记中的VALUE=特性<br />
　　方法<br />
　　click 模拟鼠标单击一按钮<br />
　　事件处理程序<br />
　　Onclick</p>
<p>　　B.5 checkbox 对象<br />
　　它是form对象的一个属性,使用&lt;INPUT TYPE="CHECKBOX"&gt;标记来创建。<br />
　　属性<br />
　　checked 复选框的选择状态<br />
　　defaultChecked 标记的CHECKED=特性<br />
　　name 标记的NAME=特性<br />
　　value 标记的VALUE=特性<br />
　　方法<br />
　　click 模拟鼠标单击按钮<br />
　　事件处理程序<br />
　　onclick</p>
<p>　　B.6 Date对象<br />
　　它是一个内置对象——而不是其它对象的属性,允许用户执行各种使用日期和时间的过程。<br />
&nbsp; 　方法<br />
　　getDate() 查看Date对象并返回日期<br />
　　getDay() 返回星期几<br />
　　getHours() 返回小时数<br />
　　getMinutes() 返回分钟数<br />
　　getMonth() 返回月份值<br />
　　getSeconds() 返回秒数<br />
　　getTime() 返回完整的时间<br />
　　getTimezoneoffset() 返回时区偏差值(格林威治平均时间与运行脚本的计算机所处时区设置之间相差的小时数)<br />
　　getYear() 返回年份<br />
　　parse() 返回在Date字符串中自从1970年1月1日00:00:00以来的毫秒数(Date对象按照毫秒数的形式存储从那时起的日期和时间)但是注意,该方法当前不能正确运行<br />
　　setDate() 改变Date对象的日期<br />
　　setHours() 改变小时数<br />
　　setMinutes() 改变分钟数<br />
　　setMonth() 改变月份<br />
　　setSeconds() 改变秒数<br />
　　setTime() 改变完整的时间<br />
　　setYear() 改变年份<br />
　　toGMTString() 把Date对象的日期(一个数值)转变成一个GMT时间字符串,返回类似下面的值:Weds,15 June l997 14:02:02 GMT(精确的格式依赖于计算机上所运行的操作系统而变)<br />
　　toLocaleString() 把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式<br />
　　UTC() 使用Date UTC(年、月、日、时、分、秒),以自从1970年1月1日00:00:00(其中时、分、秒是可选的)以来的毫秒数的形式返回日期</p>
<p>　　B.7 document对象<br />
　　该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档。<br />
　　属性<br />
　　alinkColor 活动链接的颜色(ALINK)<br />
　　anchor 一个HTMI锚点,使用&lt;A NAME=&gt;标记创建(该属性本身也是一个对象)<br />
　　anchors array 列出文档锚点对象的数组(&lt;A NAME=&gt;)(该属性本身也是一个对象)<br />
　　bgColor 文档的背景颜色(BGCOLOR)<br />
　　cookie 存储于cookie.txt文件内的一段信息,它是该文档对象的一个属性<br />
　　fgColor 文档的文本颜色(&lt;BODY&gt;标记里的TEXT特性)<br />
　　form 文档中的一个窗体(&lt;FORM&gt;)(该属性本身也是一个对象)<br />
　　forms anay 按照其出现在文档中的顺序列出窗体对象的一个数组(该属性本身也是一个对象)<br />
　　lastModified 文档最后的修改日期<br />
　　linkColor 文档的链接的颜色,即&lt;BODY&gt;标记中的LINK特性(链接到用户没有观察到的文档)<br />
　　link 文档中的一个&lt;A HREF=&gt;标记(该属性本身也是一个对象)<br />
　　links array 文档中link对象的一个数组,按照它们出现在文档中的顺序排列(该属性本身也是一个对象)<br />
　　location 当前显示文档的URL。用户不能改变document.location(因为这是当前显示文档的位置)。但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象<br />
　　referrer 包含链接的文档的URL,用户单击该链接可到达当前文档<br />
　　title 文档的标题((TITLE&gt;)<br />
　　vlinkColor 指向用户已观察过的文档的链接文本颜色,即&lt;BODY&gt;标记的VLINK特性<br />
　　方法<br />
　　clear 清除指定文档的内容<br />
　　close 关闭文档流<br />
　　open 打开文档流<br />
　　write 把文本写入文档<br />
　　writeln 把文本写入文档,并以换行符结尾</p>
<p>　　B.8 elements数组<br />
　　它是form对象的一个属性,列举了窗体内各元素的一个数组。<br />
　　属性<br />
　　1ength 窗体内的元素个数<br />
　　B.9 form对象<br />
　　它是document对象的一个属性,文档内的一个窗体。<br />
　　属性<br />
　　action 包含了为一个窗体提交的目标URL的字符串<br />
　　button 窗体内的一个按钮,使用&lt;INPUT TYPE=&#8221;BUTTON&#8221;&gt;标记来创建(该属性本身也是一个对象)<br />
　　checkbox 复选框,使用&lt;INPUT TYPE=&#8221;CHECKBOX&#8221;&gt;标记来创建 (该属性本身也是一个对象)<br />
　　elements array 一个数组,按照其出现于窗体内的顺序列举各窗体元素(该属性本身也是一个对象)<br />
　　encoding 窗体的MIME编码<br />
&nbsp; 　hidden 窗体里的一个隐藏元素(&lt;INPUT TYPE=&#8221;HIDDEN&#8221;&gt;)。窗体对象的一个属性(该属性本身也是一个对象)<br />
　　length 窗体里的元素的个数<br />
　　method 输入窗体的数据传送到服务器上的方式,即(FORM)标记中的METHOD特性<br />
　　radio 设置在窗体里的单选按钮(&lt;INPUT TYPE=&#8221;RADIO&#8221;&gt;)(该属性本身也是一个对象)<br />
　　reset 窗体里的复位按钮((1NPUT TYPE=&#8221;RESET&#8221;&gt;)(该属性自身也是一个对象)<br />
　　select 窗体里的选择框(&lt;SELECT&gt;)(该属性本身也是一个对象)<br />
　　submit 窗体里的提交按钮(&lt;INPUT TYPE=&#8221;SUBMIT&#8221;&gt;)(该属性本身也是一个对象)<br />
　　target 提交窗体后,显示回应信息的窗口的名字<br />
　　text 窗体里的文本元素(&lt;INPUT TYPE=&#8221;TEXT&#8221;&gt;)(该属性本身也是一个对象)<br />
　　textarta 窗体里的文本区元素(&lt;TEXTAREA&gt;)(该属性本身也是一个对象)<br />
　　方法<br />
　　submit 提交窗体(与使用Submit按钮的作用相同)事件处理程序<br />
　　onsubmit</p>
<p>　　B.10 forms数组<br />
　　该数组是document对象的一个属性,即列举了文档内的各窗体的一个数组。<br />
　　属性<br />
　　length 文档内窗体的个数</p>
<p>　　B.11 frame对象<br />
　　它是window对象的一个属性,窗口内的一个框架。除了个别例外,frame对象与window对象的作用相同。<br />
　　属性<br />
　　frames array 列举该框