设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3662|回复: 4
打印 上一主题 下一主题

Windows 脚本组件与 ACCESS [原作]

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2002-6-12 04:18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用记事本新建文件,内容如下:
  1. <SCRIPTLET>

  2. <Registration
  3.         Description="ConvertTemp"
  4.         ProgID="ConvertTemp.Scriptlet"
  5.         Version="1.00"
  6. >
  7. </Registration>
  8. <public>
  9.     <property name="number">
  10.       <get internalname="getNumber"/>
  11.       <put internalname="setNumber"/>
  12.     </property>

  13.         <method name=Celsius>
  14.                 <PARAMETER name=F/>
  15.         </method>
  16.         <method name=Fahrenheit>
  17.                 <PARAMETER name=C/>
  18.         </method>
  19.     <event name="onnumberchange"/>
  20. </public>


  21. <SCRIPT LANGUAGE=VBScript>

  22. dim num

  23. ' Get 属性
  24. function getNumber()
  25.    getNumber = num
  26. End Function

  27. ' Put 属性
  28. function setNumber(newNumber)
  29.    if not IsNumeric(newNumber) then
  30.       num = 0 'return not a number, ignore
  31.    else
  32.       num = newNumber
  33.       fireEvent("onnumberchange")
  34.    end if
  35. End Function

  36. ' 以下为两个 COM 方法
  37. Function Celsius(F)
  38.           Celsius = 5/9 * (F - 32)
  39. End Function

  40. Function Fahrenheit(C)
  41.           Fahrenheit = (9/5 * C) + 32
  42. End Function

  43. </script>

  44. </SCRIPTLET>
复制代码
保存为 "ConvertScriptlet.sct" 文件。

这是一个完整的 Windows 脚本组件文件。
  1. <Registration
  2.         Description="ConvertTemp"
  3.         ProgID="ConvertTemp.Scriptlet"
  4.         Version="1.00"
  5. >
  6. </Registration>
复制代码
这一段为脚本组件注册。ProgID="ConvertTemp.Scriptlet"定义类的名称。

  1.     <property name="number">
  2.       <get internalname="getNumber"/>
  3.       <put internalname="setNumber"/>
  4.     </property>
复制代码
这一段为定义属性和属性过程。

  1.         <method name=Celsius>
  2.                 <PARAMETER name=F/>
  3.         </method>
  4.         <method name=Fahrenheit>
  5.                 <PARAMETER name=C/>
  6.         </method>
复制代码
定义方法和方法参数。

  1. ' Get 属性
  2. function getNumber()
  3.    getNumber = num
  4. End Function

  5. ' Put 属性
  6. function setNumber(newNumber)
  7.    if not IsNumeric(newNumber) then
  8.       num = 0 'return not a number, ignore
  9.    else
  10.       num = newNumber
  11.       fireEvent("onnumberchange")
  12.    end if
  13. End Function
复制代码
这段这属性过程的实现。

  1. Function Celsius(F)
  2.           Celsius = 5/9 * (F - 32)
  3. End Function

  4. Function Fahrenheit(C)
  5.           Fahrenheit = (9/5 * C) + 32
  6. End Function
复制代码
这段是方法的实现。

组件注册:
在 Windows 资源管理器中,右键单击该文件,选择[注册]。

在 ACCESS 中,使用 CreateObject() 函数创建脚本组件的实例:
  1. Set objConvert = CreateObject("ConvertTemp.Scriptlet")
复制代码
这样就可以使用脚本组件所提供的方法和属性了。

文件下载

使用组件的优势是:1、实现商业规则,例子中,就是实现了摄氏和华氏温度的转换这个规则。2、当规则发生变化后,不需要改变应用程序。(这就是我所说的以不变应万变)。3、使用 VB 或 VC 等高级语言开发组件,还可分布在网络其它主机上,实现分布式计算。4、... 总之,好处多多!

[em26][em26][em26]

未经许可,请勿转载
[此贴子已经被zhuyiwen于2002-6-11 20:18:26编辑过]

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖2 订阅订阅

点击这里给我发消息

2#
 楼主| 发表于 2016-5-4 09:49:48 | 只看该作者
参见:
http://www.office-cn.net/home.ph ... 25&do=blog&id=15307

  1. <?xml version="1.0"?>
  2. <component>
  3. <?component error="true" debug="true"?>
  4. <registration
  5.   desciption="ConDB"
  6.   progid="ConDB.wsc"
  7.   version="1.00"
  8.   classid="{9247c2de-a42d-4755-aa60-8b14c1af6b4f}">
  9. </registration>
  10. <reference object="ADODB.Connection.2.8" />
  11. <public>
  12.   <method name="ConToDB">
  13.    <PARAMETER name="servername" />
  14.    <PARAMETER name="dbname" />
  15.    <PARAMETER name="user" />
  16.    <PARAMETER name="password" />
  17.   </method>
  18. </public>
  19. <implements type="ASP" id="ASP" />
  20. <script language="VBScript">
  21. <![CDATA[
  22. Function ConToDB(servername, dbname, user, password)
  23.   On Error Resume Next
  24.   Set con = CreateObject("adodb.connection")
  25.   con.ConnectionTimeout = 25
  26.   con.ConnectionString = "Provider=SQLOLEDB.1" & _
  27.    ";Persist Security Info=False;User ID=" & user & _
  28.    ";pwd=" & password & _
  29.    ";Initial Catalog=" & dbname & _
  30.    ";Data Source=" & servername
  31.   con.Open
  32.   If con.State = 1 Then
  33.    ConToDB = "connection success!"
  34.   End if
  35.   If Err.Number <> 0 Then
  36.    ConToDB = Err.Description
  37.   End If
  38. End Function
  39. ]]>
  40. </script>
  41. </component>
复制代码
使用命令行,为脚本组件(ConDB.wsc)创建一个类型库,生成一个与脚本组件文件名同名的 .tlb 文件。
  1. 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

参见:
http://www.xav.com/perl/Windows/windows_script_components.html



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

3#
 楼主| 发表于 2016-5-4 10:01:49 | 只看该作者
《让你的access支持二次开发,VBS宏执行器》
作者:layaman_999
http://www.office-cn.net/thread-113201-1-1.html

  1. Function RunVbs(subName As String, StrCode As String, Optional obj As Object = Nothing) As Boolean
  2. On Error GoTo cuowu

  3.     Dim vbs As Object
  4.     Set vbs = CreateObject("ScriptControl")
  5.     vbs.Language = "vbs"
  6.    
  7.     If obj Is Nothing = False Then
  8.         vbs.AddObject "Me", obj, True
  9.     End If
  10.    
  11.     vbs.AddObject "Application", Application, True
  12.     vbs.AddCode StrCode
  13.     vbs.ExecuteStatement subName
  14.     Set vbs = Nothing
  15.     RunVbs = True
  16.    
  17.     Exit Function
  18. cuowu:
  19.     MsgBox Err.Description
  20.     RunVbs = False

  21. 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






4#
发表于 2016-5-4 10:03:37 | 只看该作者
多谢朱老师 以不变应万变 的组件,要好好地学习一下,不懂可要请教哟!
5#
发表于 2016-5-4 10:08:35 | 只看该作者
祝老师的东西看上去很厉害,先留个印子,回头慢慢品
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-17 09:08 , Processed in 0.114287 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表