...... sql="select EMPLID from Employee order by Score desc" with rs .open sql,conn,1,3 if .eof and .bof then exit sub else i=1 do while (not .eof) and (i<=100) dim oEmployee as new Employee oEmployee.Create trim(.Fields("EMPLID")) colQualifiedList.Add oEmployee set oEmployee=nothing i=i+1 loop end if .close end with ... 然后把DLL重新编译,注册就可以了,ASP程序完全不必修改。 四.一些说明和注意事项 1. 由于这个例子比较简单,在Employee类中可以没有Create方法,而在Employees类中将员工的所有信息(工号,姓名,性别,成绩)都读出来并将其赋给Employee对象对应的属性。但在实际应用中,当Employee对象的属性增多,或表的数量增多,表之间关系变复杂时,还是本文所示的方法更有效,代码重用的机会更大。 2. 当DLL被修改后,在MTS中只能将其删除后重新注册,因为每次重新编译后在注册表中对象的ID值都将重新生成。 3. 从ASP中调用带参数的类方法和函数时,所有的变量参数一定要用相应的类型转换函数转换后再传入,否则会引起类型不匹配错误,因为VBScript中只有Variant类型,它不能自动转换成其它类型。例如,有如下的函数定义: Public Function Fun1(p1 as string,p2 as integer) as integer End Function 在ASP程序中应如下调用: <% p1=obj.property1 " Property1 is a string property p2=obj.property2 "Property2 is an integer property a=obj.Fun1(cstr(p1),cint(p2)) a=obj.Fun1("aaa",10) " constant parameter need not be changed %> 而下面的两种写法是错误的: <% p1=obj.property1 " Property1 is a string property p2=obj.property2 "Property2 is an integer property a=obj.Fun1(p1,p2) " incorrect,p1 and p2 are variant variables p1=cstr(p1) p2=cint(p2) a=obj.Fun1(p1,p2) " still incorrect %> 这里第二种写法仍然是错误的,即使经过了类型转换,p1和p2仍然是Variant变量。在VBScript中,数据类型和类型转换函数只在表达式运算中起作用,变量只有Variant一种类型。 结束语 以上对多层结构的理论和实践进行了一番探讨,希望能对您的开发有所帮助。这里还有一个问题,即类和类的成员该如何设计。这既涉及面向对象编程的理论,也需要一定的实践经验。请参考相关的OOP理论书籍并在实践中不断总结,相信您一定能设计出自己的完美的多层结构的应用程序。
上一页 [1] [2]
|