function iseof
if eof()
return .t.
else
return .f.
endif
function isbof
if bof()
return .t.
else
return .f.
endif
function getbookno
return bookno
function getpubdate
if empty(pubdate)
return ""
else
return pubdate
endif
function geteditor
return editor
function getbookname
return bookname
function goto
lparameter recnum
if type("recnum")< >"N" &&error data type
return
endif
if recnum< 1 .or. recnum >reccount()
return
else
goto (recnum)
endif
return
EndDefine
----在菜单Project,选中SetMain,然后Build,在Build对话框中选BuildOLEDLL。好了,我们到此就完成了一个OLE Server,并且它已经自动注册在我们的机器上。我们可以在菜单Project|ProjectInfo弹出的Project Information对话框中看到这个组件的信息:
Server Classes:onerecord
Project Name:Classes
OLE
---- Server 的 引 用 方 法 是createobject("ProjectName.ClassName"), 对 于 我 们 这 个 组 件, 就 是:createobject("classes.onerecord")。 可 以 直 接 在VFP 的Command 窗 口 中 交 互 式 地 测 试 之, 在Command 窗 口 中 键 入:
ox=createobject("classes.onerecord")
ox.setdatapath("d:/vfpweb/data")
?ox.bookname
?ox.getbookname
ox.movenext
?ox.getbookname
ox.goto(30)
?ox.getbookname
----可以直接看到执行结果,最后不要忘了释放该组件:
release ox
----这个组件是针对特定数据库进行操作的,测试很方便。下面,我们再实现一个更为一般的类ClsQ2T,其功能是任意指定一条SQL查询语句(针对任意一个或多个数据库),将查询结果以表格的形式显示在Web页面上,其中使用了ASP的接口。它不仅封装了数据处理,而且通过ASP接口,也封装了数据显示。----仍在Classdef.prg之中,接着最后一行代码,键入:
define class clsq2t as custom olepublic
mcontext=.null.
function onstartpage(ocontext)
this.mcontext=ocontext &&对ASP接口的引用
return
function init
set exclu off
set safety off
return
function setdatapath(strpath)
merrnum=0
on error merrnum=error( )
set default to (strpath)
if merrnum< >0
return "Error in setdatapath"+message()+chr(13)
endif
on error
return "OK,setdatapath"+strpath+chr(13)
*函数querytotable要求传入一个SQL Select串,如:
* "select bookname,editor from booksno where charnum >500"
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。