📄 在asp中编写dll的问题.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0047)http://www.abc800.com/news/artdetail.asp?id=739 -->
<HTML><HEAD><TITLE>在ASP中编写DLL的问题</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.3315.2870" name=GENERATOR><LINK
href="在ASP中编写DLL的问题.files/putong_1t" rel=StyleSheet type=text/css>
<SCRIPT language=javascript src="在ASP中编写DLL的问题.files/fun_Script.js"></SCRIPT>
</HEAD>
<BODY background=在ASP中编写DLL的问题.files/r_bg.gif>
<P align=center><BR></P>
<TABLE align=center class=tableFrame height=311 width="90%">
<TBODY>
<TR align=middle>
<TD align=right bgColor=#decbad class=listcelltitle height=274 vAlign=top
width=717>
<P align=center><BR><FONT color=#000000
style="FONT-SIZE: 14px"></FONT><FONT color=#000080
style="FONT-SIZE: 14px"><B>在ASP中编写DLL的问题</B></FONT><FONT color=#000000
style="FONT-SIZE: 14px"><BR></P>
<P align=right>更新日期:2002-10-11 阅读次数:410</FONT></P>
<P align=left style="FONT-SIZE: 14px"><BR>ActiveX DLL
可以用来保护代码的一些部分,因为作为开发人员我们知道,用ASP进行工作时,源代码控制是一个艰难而琐碎的过程。ActiveX DLL
是经过编译的代码,没有工程文件中的源代码就不能对其进行修改。这就给开发人员带来许多可能:开发自动操作公共程序的程序并将它们作为共享软件来分发,分发至少有一些源代码保护的ASP应用程序,不断开发自己的ASP程序指令,以在一个全方位多功能的结果中提高ASP的性能。<BR><BR>
你所安装的第一个ActiveX DLL 文件将注册并安装Visual Basic 6
的运行时间文件,它允许运行经过编译的代码。但是要注意,这还要求重新启动服务器。当一个现存的DLL被安装并使用之后,如果想要对其进行升级,
服务器就将给出一个错误信息提示,说此文件正被另一个过程所使用。要纠正这一问题,也要重新启动服务器后才能完成DLL的升级。请记住在开发中要使用一个测试环境。<BR><BR>
虽然这个例子非常简单,用一个ASP包含文件就可以轻易地实现,但当开发 ActiveX DLL 时,你可以使用 Visual Basic
的全套基本指令、系统外壳指令以及所有控制台所能进行的操作,因此也就允许在线网站和内部互联网的全部自动控制。这样就把原来用ASP包含文件实现的
ActiveX DLL 的性能进行了拓展。<BR><BR>
在用组合框选择填充的数据库域中存储查询关键字的值,提高数据的完整性,轻易地在整个数据库中进行层叠式更新,这些都是很普通的操作。举例来说,现在有一个拼写错误的文本描述,可以在查循表中进行修改,所有选择了这个描述的相关条目都会自动地修改,因为我们已经存储了与这个描述相关的数字。组合框以查询表的内容为基础,这些内容将查询关键字的值与其描述联系起来,如果系统使用了许多查询的话,产生这些组合框的代码会变得非常重复。本文用
ActiveX DLL
来简化创建HTML组合框的程序,用一个数据库查询表中的内容进行填充。例子中的表名为lookup_table,它有以下域:<BR><BR>Lookup_Key:
存储在数据库中的值 <BR>Lookup_Field: 对查询元素进行分类 <BR>Lookup_Description: 显示在组合框中的描述
<BR> 要创建ActiveX DLL,步骤如下:<BR><BR>开始一个新的visual basic 工程文件; <BR>选择ActiveX
DLL 作为工程文件类型; <BR>在Properties 窗口,命名类模块和工程文件。将工程文件命名为keiths_lookup
,将模块命名为lookup 。
ASP引用DLL函数时要使用这些名字。以后在ASP码中,将要引用一个名为keiths_lookup.lookup的服务器对象。
<BR>用同样的名字保存工程文件和模块,其中工程文件的扩展名为.vbp ,类模块的扩展名为.cls 。在本例中
工程文件的名字为keiths_lookup,模块的名字为lookup。 <BR>在工程菜单中,选择References
。这是你可以使用的其它应用程序对象。在本例中,检查Microsoft ActiveX data objects 2.0 库和Microsoft
ActiveX Data Objects Recordset 2.0 库。 <BR>在包含查询表的IIS服务器数据库中创建一个名为Sumnet
的数据集。这个数据库没有用户名和口令。<BR><BR> 现在可以键入以下代码:<BR><BR><BR>Public Function
html_combo(comboname As String, Lookup_field As String) As
String<BR><BR>Dim outstring As String<BR>Dim conn As
ADODB.Connection<BR>Dim rst As ADODB.Recordset<BR>Dim sqlstring As
String<BR> <BR>Set conn =
CreateObject("ADODB.Connection")<BR>Set rst =
CreateObject("ADODB.Recordset")<BR> <BR>Sqlstring =
"SELECT [Lookup_Description],[Lookup_Key] FROM
<BR> [Lookup_Table] WHERE [Lookup_Field] = '" &
Lookup_Field &
"'" <BR> <BR>conn.Open "DSN=Sumnet;UID=;PWD=.;"<BR>rst.Open
sqlstring, conn, 3, 3<BR>If Not rst.EOF
Then<BR> rst.MoveFirst<BR> outstring
= "< Select name='" & comboname &
"' >"<BR> Do While Not
rst.EOF<BR>outstring = outstring & "< Option Value='" &
<BR>rst.Fields("lookup_key") & "' >" &
_<BR>rst.Fields("lookup_description") & "< /Option >
"<BR> rst.MoveNext<BR> Loop<BR>End
If<BR> <BR>outstring = outstring & "< /Select
>"<BR>html_combo =
outstring<BR>rst.Close<BR>conn.Close<BR> <BR>End
Function<BR><BR> 然后,保存工程文件和类模块。<BR><BR> 编译工程文件的步骤如下:<BR><BR>启动Visual
Studio 6.0 工具中的Package Deployment Wizard ; <BR>选择刚才创建的ActiveX 工程文件;
<BR>点击Package; <BR>选择打包脚本名或使用默认值; <BR>选择Standard Setup ;
<BR>选择一个放置安装文件的文件夹; <BR>选择单个cab; <BR>点击Next使用其它默认选项;
<BR>在IIS服务器上运行setup。<BR><BR>
现在可以通过ASP代码使用DLL,因为在系统数据库中它已经被注册了。下面的ASP代码将使用所创建的LL内部的函数。它将产生三个组合框,一个用州来填充,一个用位置填充,另外一个用年龄组。第一个参数将成为网页上的对象名,第二个参数是用来填充组合框中查询域的值。<BR><BR><BR><
%@ Language="VBSCRIPT" % ><BR>< %<BR>Set look =
Server.CreateObject("keiths_lookup.lookup")<BR>%
><BR> <BR><
HTML >< BODY
><BR> <BR><
%=look.html_combo("State","States")% ><BR><
%=look.html_combo("Position","Positions")% ><BR><
%=look.html_combo("Age_group","Age_Groups")%
><BR> <BR><
/BODY ><BR>< /HTML ><BR><BR>
这个例子非常简单。通过使用更多的参数,如表名、域名等,可以创建许多便携式的函数,这些函数可以用在你的工作中所遇到的各种各样的应用程序中。<BR><BR>
因为这些代码是在服务器一端水平上运行的,所以客户机不需要安装任何东西。这仅仅是用ActiveX
DLL所能实现的功能的小小的例子。只需要一点点努力,就可以得到一个在网络用户中不同凡响的多功能应用程序。
<BR><BR><BR>原作者:不详<BR>来 源:不详<BR><BR></P></TD></TR>
<TR>
<TD align=right bgColor=#decbad class=listcelltitle height=29 vAlign=top
width=717><INPUT class=button name=Submit2 onclick=javascript:window.close() style="FONT-SIZE: 9pt" type=button value=关闭窗口>
</TD></TR></TBODY></TABLE><BR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -