Office中国论坛/Access中国论坛
标题:
Windows 脚本组件与 ACCESS [原作]
[打印本页]
作者:
zhuyiwen
时间:
2002-6-12 04:18
标题:
Windows 脚本组件与 ACCESS [原作]
用记事本新建文件,内容如下:
<SCRIPTLET>
<Registration
Description="ConvertTemp"
ProgID="ConvertTemp.Scriptlet"
Version="1.00"
>
</Registration>
<public>
<property name="number">
<get internalname="getNumber"/>
<put internalname="setNumber"/>
</property>
<method name=Celsius>
<PARAMETER name=F/>
</method>
<method name=Fahrenheit>
<PARAMETER name=C/>
</method>
<event name="onnumberchange"/>
</public>
<SCRIPT LANGUAGE=VBScript>
dim num
' Get 属性
function getNumber()
getNumber = num
End Function
' Put 属性
function setNumber(newNumber)
if not IsNumeric(newNumber) then
num = 0 'return not a number, ignore
else
num = newNumber
fireEvent("onnumberchange")
end if
End Function
' 以下为两个 COM 方法
Function Celsius(F)
Celsius = 5/9 * (F - 32)
End Function
Function Fahrenheit(C)
Fahrenheit = (9/5 * C) + 32
End Function
</script>
</SCRIPTLET>
复制代码
保存为 "ConvertScriptlet.sct" 文件。
这是一个完整的 Windows 脚本组件文件。
<Registration
Description="ConvertTemp"
ProgID="ConvertTemp.Scriptlet"
Version="1.00"
>
</Registration>
复制代码
这一段为脚本组件注册。ProgID="ConvertTemp.Scriptlet"定义类的名称。
<property name="number">
<get internalname="getNumber"/>
<put internalname="setNumber"/>
</property>
复制代码
这一段为定义属性和属性过程。
<method name=Celsius>
<PARAMETER name=F/>
</method>
<method name=Fahrenheit>
<PARAMETER name=C/>
</method>
复制代码
定义方法和方法参数。
' Get 属性
function getNumber()
getNumber = num
End Function
' Put 属性
function setNumber(newNumber)
if not IsNumeric(newNumber) then
num = 0 'return not a number, ignore
else
num = newNumber
fireEvent("onnumberchange")
end if
End Function
复制代码
这段这属性过程的实现。
Function Celsius(F)
Celsius = 5/9 * (F - 32)
End Function
Function Fahrenheit(C)
Fahrenheit = (9/5 * C) + 32
End Function
复制代码
这段是方法的实现。
组件注册:
在 Windows 资源管理器中,右键单击该文件,选择[注册]。
在 ACCESS 中,使用 CreateObject() 函数创建脚本组件的实例:
Set objConvert = CreateObject("ConvertTemp.Scriptlet")
复制代码
这样就可以使用脚本组件所提供的方法和属性了。
文件下载
使用组件的优势是:1、实现商业规则,例子中,就是实现了摄氏和华氏温度的转换这个规则。2、当规则发生变化后,不需要改变应用程序。(这就是我所说的以不变应万变)。3、使用 VB 或 VC 等高级语言开发组件,还可分布在网络其它主机上,实现分布式计算。4、... 总之,好处多多!
[em26][em26][em26]
未经许可,请勿转载
[此贴子已经被zhuyiwen于2002-6-11 20:18:26编辑过]
作者:
zhuyiwen
时间:
2016-5-4 09:49
参见:
http://www.office-cn.net/home.ph ... 25&do=blog&id=15307
<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
desciption="ConDB"
progid="ConDB.wsc"
version="1.00"
classid="{9247c2de-a42d-4755-aa60-8b14c1af6b4f}">
</registration>
<reference object="ADODB.Connection.2.8" />
<public>
<method name="ConToDB">
<PARAMETER name="servername" />
<PARAMETER name="dbname" />
<PARAMETER name="user" />
<PARAMETER name="password" />
</method>
</public>
<implements type="ASP" id="ASP" />
<script language="VBScript">
<![CDATA[
Function ConToDB(servername, dbname, user, password)
On Error Resume Next
Set con = CreateObject("adodb.connection")
con.ConnectionTimeout = 25
con.ConnectionString = "Provider=SQLOLEDB.1" & _
";Persist Security Info=False;User ID=" & user & _
";pwd=" & password & _
";Initial Catalog=" & dbname & _
";Data Source=" & servername
con.Open
If con.State = 1 Then
ConToDB = "connection success!"
End if
If Err.Number <> 0 Then
ConToDB = Err.Description
End If
End Function
]]>
</script>
</component>
复制代码
使用命令行,为脚本组件(ConDB.wsc)创建一个类型库,生成一个与脚本组件文件名同名的 .tlb 文件。
rundll32.exe c:\Windows\System32\scrobj.dll,GenerateTypeLib -name:ConDBLib -file:e:\component\ConDB.tlb -doc:"ConDB component typelib" -guid:{9247c2de-a42d-4755-aa60-8b14c1af6b4f} -major:1 -minor:0-URL:e:\components\ConDB.wsc
复制代码
Windows Script Component Wizard 下载:
https://download.microsoft.com/download/d/9/5/d95c9a66-718f-45b3-946f-1f43677e6c8b/wz10en.exe
[attach]58950[/attach]
参见:
http://www.xav.com/perl/Windows/windows_script_components.html
作者:
zhuyiwen
时间:
2016-5-4 10:01
《让你的access支持二次开发,VBS宏执行器》
作者:layaman_999
http://www.office-cn.net/thread-113201-1-1.html
Function RunVbs(subName As String, StrCode As String, Optional obj As Object = Nothing) As Boolean
On Error GoTo cuowu
Dim vbs As Object
Set vbs = CreateObject("ScriptControl")
vbs.Language = "vbs"
If obj Is Nothing = False Then
vbs.AddObject "Me", obj, True
End If
vbs.AddObject "Application", Application, True
vbs.AddCode StrCode
vbs.ExecuteStatement subName
Set vbs = Nothing
RunVbs = True
Exit Function
cuowu:
MsgBox Err.Description
RunVbs = False
End Function
复制代码
How To Use Script Control Modules and Procedures Collections 如何使用脚本控制模块和过程集合:
https://support.microsoft.com/en-us/kb/184745
https://support.microsoft.com/zh-cn/kb/184745
How To Call Functions Using the Script Control 如何使用脚本控件的函数调用:
https://support.microsoft.com/en-us/kb/184740
https://support.microsoft.com/zh-cn/kb/184740
How To Use the Script Control Error Object 如何使用脚本控制错误对象:
https://support.microsoft.com/en-us/kb/184742
https://support.microsoft.com/zh-cn/kb/184742
作者:
purplerose
时间:
2016-5-4 10:03
多谢朱老师 以不变应万变 的组件,要好好地学习一下,不懂可要请教哟!
作者:
天昕
时间:
2016-5-4 10:08
祝老师的东西看上去很厉害,先留个印子,回头慢慢品
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3