annike(爱以成歌),你想要的asp调用COM来连接数据库与自做ACTIVEX的用法,现帖如下,大家想学的也可以来看看:)

cmsoft 2002-12-29 03:01:23
加精
一、ActiveX控件的使用
ActiveX控件用于DHTML是将控件嵌入主页中,用户通过浏览器访问该主页时,浏览器会自动下载控件,并在用户机器上注册,控件注册后就驻留在用户本地机器上,下次再访问相同的主页,浏览器将直接运行用户本地的控件。ActiveX控件可以封装和种强大的功能,如与WEB数据库的查询接口、与服务器的资源共享、与本地工作站的交互操作、资料的自动提交与反馈等复杂的功能,当然对于来历不明的ActiveX控件应小心使用。
要使用ActiveX控件,应在Web页中加入ActiveX控件,在HTML页面中使用ActiveX控件包含三个基本操作:
将控件放入HTML中;
将该控件下载给用户;
在用户机器上安装该控件。
对于IE用户,在HTML中插入ActiveX控件比较简单;如果同时兼顾IE和Netscape用户,则较为复杂。
在IE中使用ActiveX控件,需要使用HTML中的标志是<OBJECT>,该标记几个重要的参数特性有:
1.ID:为控件提供一个标识名称,为HTML代码提供一种访问该控件的入口。
2.CLASSID:是该控件唯一的UID,告诉IE装入哪个对象。如果使用已经开发好的控件,它的CLASSID可以在系统的注册表中查找。在注册表中展开HKEY—CLASSES—BOOT项,可以看到按字母顺序排列的注册表,找到需要使用的控件名,展开时可看到—个CLASSID活页夹,里面就是该控件的CLASSID。
3.CODEBASE:如果在用户机器上没有控件的当前版本,该参数告诉用户浏览器在哪里可找到要下载的控件和最新版本号.当控件作了修改后,可以更改版本号强制用户重新下载。
4.PARAM:该标记用于设置控件的初始属性值,它有两个特性:Name 和 Value,即属性名称和属性值。
此外还有一些标记,如:Width表示该控件所占的宽度,Height表示高度等,总体来说,这样一个插入控件的HTML代码和插入Java Applet的HTML代码非常相似。
以下是嵌有ActiveX控件的HTML代码例程:
<OBJECT
ID= "MyControl"
CLASSID="classid:051D1245 - 9821 - 24G5 - 87CI - 01A044C9698AC"
CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0"
WIDTH = 200
HEIGHT = 100
ALIGN = center
HSPACE = 0
VSPACE = 0
> < / OBJECT>
如果希望控件还能在Netscape中运行,除了Netscape需加装插件外,HTML也要加一些附加标记。如果是自己开发的OCX控件,则有些用户第一次访问时除了下载OCX文件外,还要下载相应的DLL文件,使用VB5开发的OCX控件,可以打包成在客户端自解压安装的CAB文件(在以下详述)。以下为Netscape中的例程:
<OBJECT
ALIGN = “CENTER" CLASSID=“clsid:051D1245-9821-24G5-87CI- 01A044C9698AC"
WIDTH =“600" HEIGHT =“300" ID =“marquee""
CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" >
<EMBED
ALIGN = "CENTER" CLASSID = "clsid:051D1245-9821-24G5-87CI-01A044C9698AC"
WIDTH = "1200" HEIGHT = "900" ID ="marquee""
CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" >
TYPE = "application / oleobject"
></ OBJECT>

二、 创建自己的ActiveX控件
下面用VB6来创建自己的ActiveX的控件:
1、创建一个ActiveX控件工程*
在“文件”选单中选择“新建工程”,然后双击“ActiveX控件”图标,生成一个控件工程项目(缺省名UserControl1)。此时设计窗口显示一个类似于窗体的接口(无边框),其属性窗口也类似于窗体的属性窗口,只是有常用的属性没有了,增加了一些一般窗体不具有的属性。
选取“工程选单”最下面的“UserControl1属性”项,在对话框中改工程名称为“MyCtr”。在属性窗口中改控件名称为“MyControl”。在控件的设计窗体中加入一个Label控件,改名为“lblTime”,设其“AutoSize”为“True”,“Caption”属性为空;再在控件设计窗体中加入一个Timer定时器控件,设定时器的“Interval”属性为1000(每秒发生一次);在Timerl-Timer()过程中加入如下代码:
IbITime.Caption=Time ’返回系统当前时间
将当前工程保存。由于控件工程不能独立运行,需要创建一个新的工程来测试一下设计的新控件。
选取“文件”选单上的“添加工程”,创建一个“Standard exe”工程,并将控件工程的设计窗口关闭,这时会发现在控件工具栏的最下边出现了一个名为“MyControl”的新控件。将其放至Forml窗体内,窗体上会出现一行文字,显示的正是当前时间,这就是新创建的MyControl控件。
为使控件具有更实用的属性、事件和方法,需要为控件添加属性、事件和方法。

2、添加控件的“属性”
双击 "MyControl"控件,进入其代码窗口,选择"工具"选单中的"添加过程"项,在对话框中输入名称为 "UpdateInterval",类型选"属性",关闭对话框后代码窗口内将出现两个空过程,填写代码如下:
Pubic Property Get UpdateInterval() As Variant
UpdateInterval = Timerl.Interval
End Property
Public Property Let UpdateInterval(ByVal NewValue As Variant)
Timerl.Interval = NewValue
PropertyChanged "UpdateInterval"
End Property
其中前者用于获取UpdateInterval属性,后者用于设置UpdateInterval属性。
现在关闭控件设计窗口,打开测试工程的窗体,点击窗体中的控件MyControl,看一下其属性窗口,出现了一个 "UpdateInterval"属性,且值为1000,这是我们最初为控件设定的Interval属性。现在改变该属性值为3000,会发现控件上时间更新慢了,与原Timer控件属性一样。
3、添加控件的“事件”
在测试工程的代码窗口中,当前只有GotFocus、LostFocus、DragOver和DragDrop四个事件;而一般常用的事件包括Click、DblClick、KeyDown、KeyPress、KeyUp、MouseDown、MouseMove和MouseUp,下面以Click为例进行说明。
选取“工具”选单中“添加过程”项,在名称中填写“Click”,类型为“事件”。我们会发现代码窗口中“通用”项下出现如下代码:
Option Explicit
Public Event Click ( )
注意这是的“Click”与鼠标的Click毫无关系,为了将它们联系起来,在控件工程的代码设计窗口中加入MyTime 、IblTime的Click事件,代码如下:
Private Sub MyTime-Click ( )
RaiseEvent Click
End Sub
Private Sub IblTime-Click ( )
RaiseEvent Click
End Sub
RaiseEvent的功能是把控件或其上的子控件的事件进行转发,因为控件总是由其它的子控件组成,比如上面lblTime的Click事件转为控件的Click事件。
现在关闭控件设计窗口,打开测试工程,在MyControl的过程列表中,发现多了事件Click,点击Click,添加代码如下:
Private Sub MyControll-Click ( )
MyControll . UpdateInterval = 3000
MsgBox (`UpdateInterval:` &MyControll . UpdateInterval )
End Sub
运行测试工程,点击窗口中显示的时间,会弹出一个Message对话框,显示了刚设定的UpdateInterval属性值是3000。
4、添加控件的“方法”
选取 "工具"选单中 "添加过程"项,在对话框中填写名称 "CallMe",类型为 "函数"。代码窗口将产生如下代码:
Public Function CallMe ( ) As Variant
MsgBox(`当前方法正在运行!`) '加入本行代码
End Function
在测试工程的MyControll-Click()过程中加入语句:MyControll. CallMe,运行后点击显示时间处会出现使用此方法产生的Message对话框。
5、为控件打包
运行VB5的“安装程序向导”可以将已完成的工程生成自解压CAB文件,选择“创建Internet下协载安装程序”项,按提示完成即可。
...全文
41 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdsun 2003-01-18
  • 打赏
  • 举报
回复
1111
annkie 2002-12-30
  • 打赏
  • 举报
回复
搞定!
谢谢,cmsoft!
cmsoft 2002-12-30
  • 打赏
  • 举报
回复
Rs.open database.newConn,sql,1,1 '错了
改为:
Rs.open sql,database.newConn,1,1
cmsoft 2002-12-30
  • 打赏
  • 举报
回复

<%
Set database=Server.CreateObject("DataBase.db")
database.Conn

Dim sql

Set Rs=Server.CreateObject("Adodb.RecordSet")
sql="……"
Rs.open database.newConn,sql,1,1

Do while not Rs.EOF
Response.Write Rs("description")
Response.Write "<br>"
Rs.MoveNext
Loop


%>

我已经PASS了
cmsoft 2002-12-30
  • 打赏
  • 举报
回复
应该是
Set newConn = New ADODB.Connection
昨天我就帮你大致写了一下。
今天我帖出我以前用过的
Option Explicit
Public newConn As ADODB.Connection '定义一个新的连接数据库对象变量
Public conStr As String '连接数据库字符串

'======连接数据库========

Public Function Conn()

On Error GoTo Err '处理数据库连接时发生的意外

'创建连接数据对象并打开数据库连接
Set newConn = New ADODB.Connection
newConn.Open "Provider=SQLOLEDB;Data Source=xxx.xxx.xxx.xxx;UID=sa;PWD=;DataBase=Test"

Exit Function

Err:
MsgBox "数据库连接失败,请联系数据库管理员!", vbCritical, "错误提示"
End

End Function
annkie 2002-12-29
  • 打赏
  • 举报
回复
thanks.
林仪明 2002-12-29
  • 打赏
  • 举报
回复
好啊!
YeeDRain 2002-12-29
  • 打赏
  • 举报
回复
仔细看看,不只是谁写的那个dll中的conn_open是没有参数的,给你我写的吧
Public Enum DBType
SQLServer = 1
Access = 2
End Enum

Private Conn As ADODB.Connection
Private Rs As ADODB.Recordset
Private strError As String

Public Property Get ErrorString() As String
ErrorString = strError
End Property

Public Function BuildConnection(DBType As DBType, DBSource As String, UID As String, PWD As String, DBName As String) As ADODB.Connection
On Error GoTo errHandler:

Dim strConn As String

Set Conn = New ADODB.Connection
Select Case DBType
Case 1
strConn = "Provider=SQLOLEDB;Data Source=" & DBSource & ";User ID=" & UID & ";Password=" & PWD & ";Initial Catalog=" & DBName
Case 2
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBSource & ";User ID=" & UID & ";Password=" & PWD
End Select
Conn.Open strConn
Set BuildConnection = Conn
Exit Function

errHandler:
strError = "错误源:" & Err.Source & vbCrLf & "描述:" & Err.Description
Exit Function
End Function
annkie 2002-12-29
  • 打赏
  • 举报
回复
好的,不用客气呵呵,咱们要相互帮助就好了.
cmsoft 2002-12-29
  • 打赏
  • 举报
回复
谢谢你帮我CB里的问题,我犯了一个低级的错误。我记得我好象有的,可能我修改存储过程的时候漏掉了WHERE。明天我有空帮你写一个例子,发给你。今天就早就休息吧,明天还要上班呢
annkie 2002-12-29
  • 打赏
  • 举报
回复
set Conn=server.createobject("myconn.conn")
Conn.Conn_Open()
sql="Select * From client_information"
Conn.Rs_Open sql,1,1'类型不匹配: 'Rs_Open',这里总是保错.
Do While Not Conn.Rs.EOF
Response.Write Conn.Rs("cclientid")&"<br/>"
Conn.Rs.MoveNext
Loop
annkie 2002-12-29
  • 打赏
  • 举报
回复
呵呵就是 这里阿
这里recordset不知道怎么引用,我这里都是错的
cmsoft 2002-12-29
  • 打赏
  • 举报
回复
应该不会有什么问题了啊:)
annkie 2002-12-29
  • 打赏
  • 举报
回复
Conn.Rs.Open sql,1,1
Do While Not Conn.Rs.EOF
Response.Write Conn.Rs("emp_no")&"<br/>"
Conn.Rs.MoveNext
Loop
这里执行不下去
cmsoft 2002-12-29
  • 打赏
  • 举报
回复
注册组件.你用组件服务器就不必重启了啊,
annkie 2002-12-29
  • 打赏
  • 举报
回复
是不是要重新启动阿,我怎么还是报错?
cmsoft 2002-12-29
  • 打赏
  • 举报
回复
对是Set Conn=Server.CreateObject("DataBase.db")
annkie 2002-12-29
  • 打赏
  • 举报
回复
是Set Conn=Server.CreateObject("DataBase.db") 吗
annkie 2002-12-29
  • 打赏
  • 举报
回复
Set Conn=Server.CreateObject("DataBase.Conn")
调用的时候这句还是有错.
我再看看.
cmsoft 2002-12-29
  • 打赏
  • 举报
回复
Set Conn=Server.CreateObject("DataBase.Conn")
加载更多回复(4)
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧