日期:2009-11-02  浏览次数:21062 次

One disadvantage of ASP is that when using a component, the component's constants aren't immediately avaialable. For example, if you want to use the ADO constant adOpenStatic you need to include adovbs.inc. While there is nothing wrong with this, wouldn't it be nice not to have to always be sure to include adovbs.inc each time that you wanted to use an ADO constant?

Your days of including adovbs.inc are over! The METADATA tag can be used to automatically import the constants from a DLL or TBL file. For example, imagine that we wanted to crate a recordset object with a Keyset cursor. We'd have to use code similar to:

<!--#include virtual="/adovbs.inc"-->
<%
   Dim objConn, strSQL
   Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "DSN=Blah"

   strSQL = "SELECT * FROM Table1"

   Dim objRS
   Set objRS = Server.CreateObject("ADODB.Recordset")
   objRS.Open strSQL, objConn, adOpenKeyset

   '...
%>




We can use the METADATA tag in place of the <!--#include virtual="/adovbs.inc"-->. The METADATA tag has the following form:

<!--METADATA
     TYPE="typelib"
     FILE="FileName"
     UUID="TyleLibraryUUID"
-->




First off, you need to set TYPE="typelib". Concerning the other two parameters, FILE and UUID, you need to only specify one. You can either specify the TBL or DLL file directly with the FILE property, or through the UUID. For example, on my machine, the following two statements would be identical:

<!-- METADATA
        TYPE="typelib"
        UUID="00000200-0000-0010-8000-00AA006D2EA4"
-->




and

<!-- METADATA
        TYPE="typelib"
        FILE="C:\Program Files\Common Files\System\ADO\msado20.tlb"
-->




You can then place this METADATA tag in place of the #include. For example, the first script we examined would be changed to:

<!-- METADATA
        TYPE="typelib"
        FILE="C:\Program Files\Common Files\System\ADO\msado20.tlb"
-->

<%
   Dim objConn, strSQL
   Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "DSN=Blah"

   strSQL = "SELECT * FROM Table1"

   Dim objRS
   Set objRS = Server.CreateObject("ADODB.Recordset")
   objRS.Open strSQL, objConn, adOpenKeyset

   '...
%>




Now, why would anyone want to use this longer METADATA tag on each page as opposed to the standard #include file="adovbs.inc"? Well, no one probably would want to do that. However, you can place the METADATA tag in your Global.asa file, which will give every ASP page in your web application knowledge of the ADO constants! Pretty sweet,