除了使用自定义业务对象以外,下列客户端 Microsoft® Visual Basic® Scripting Edition 代码实现的操作与前面的 RDSServer.DataFactory 代码相同。您仍然可以在客户端上使用 RDS.DataSpace 对象创建服务器中业务对象的实例(在这种情况下是 MyCustomBusinessObject)。
<HTML>
<HEAD></HEAD>
<BODY>
<!-- RDS.DataControl -->
<OBJECT classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33" ID=ADC1>
</OBJECT>
<!-- RDS.DataSpace -->
<OBJECT ID="ADS1" WIDTH=1 HEIGHT=1
CLASSID="CLSID:BD96C556-65A3-11D0-983A-00C04FC29E36">
</OBJECT>
.
.
.
<SCRIPT LANGUAGE="VBScript">
Option Explicit
Sub GetRecords()
Dim objMyCustomBusinessObject, myRS
Set objMyCustomBusinessObject = _
ADS1.CreateObject("MyCustomBusinessObject", _
"http://<%=Request.ServerVariables("SERVER_NAME")%>")
' 假定 MyCustomBusinessObject 具有
' 称为 GetData 的方法,该方法可获得连接字符串和SQL 参数。
' parameters.
Set myRS = _
objCustomBusinessObject.GetData _
("DSN=pubs;UID=sa;PWD=permission;", _
"Select * From Authors")
' 将返回的记录集赋给 SourceRecordset。
ADC1.SourceRecordset = myRS
End Sub
</SCRIPT>
</BODY>
</HTML>
假定使用 Visual Basic 创建位于中间层上的 MyCustomBusinessObject ActiveX DLL,那么 MyCustomBusinessObject 类中 GetData 方法的代码应该与如下代码类似。注意您可以直接使用 ActiveX® 数据对象 (ADO)。
'返回 ADO 结果集。
Public Function GetData(szCnStr As String, szSQL _
As String) As Object
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open szCnStr
' ADODB.Recordset 应该生成 Recordset
' 对象,该对象可以被断开,随后
' 再恢复连接以处理批更新。
rs.CursorLocation = adUseClientBatch
' 使用非指定参数,ADO/R
'记录集被返回。
rs.Open szSQL, cn, _
adOpenUnspecified, adLockUnspecified, _
adCmdUnspecified
Set GetData = rs
End Function
提示
? | 在试图将 Recordset 对象返回之前,把一个简单的方法放在服务器组件中来测试最小的功能。 |
? | 在用 Internet Explorer 部署和测试服务器组件之前,构造简单的客户应用程序对它进行测试。 |
? | 在本地测试 Web 服务器上开发应用程序要更方便一些。在每次编译后需要在测试服务器上复制并注册 .dll。 |
? | 传送到业务对象的 DSN 应该是服务器上的“系统 DSN”。如果它不存在或没有正确设置,那么用户组件将失败。最好用其它的 ODBC 应用程序(例如 MSQuery)来测试服务器上的 DSN 以确保正确设置 DSN。 |
? | 自定义业务对象上的方法名不能超过 255 个字符,以确保能兼容 RDS 支持的所有协议(HTTP、HTTPS、DCOM 和进程内)。 |
? | 如果使用 Visual Basic 创建的自定义业务对象使用以前与 ADOR 1.0 类型库的绑定,那么应该将自定义业务对象重新构造为使用 ADOR 2.0 类型库。 |