VFP与ASP相结合开发Web数据库应用

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  function querytotable(querystring)
  merrnum=0
  on error merrnum=error( )
  oResp=this.mcontext.response &&引用ASP对象response
  tempname=SUBSTR(SYS(2015), 3, 10) &&产生唯一的文件名
  &querystring into cursor (tempname)
  if merrnum< >0
  return "Error in querytotable,create sql view"+message()
  +alltrim(str(lineno( )))+chr(13)
  endif
  outstring="< table border=1 >"+chr(13)+"< tr >"+chr(13)
  oresp.write(outstring)
  if merrnum< >0
  return "Error in querytotable,oresp.write"+message()
  +alltrim(str(lineno( )))+chr(13)
  endif
  outstring=""
  fc=fcount()
  for i=1 to fc
  if type("eval(field(i))")="G"
  loop
  endif
  outstring=outstring+"< td >"+field(i)+"< /td >"+chr(13)
  next
  outstring=outstring+"< /tr >"+chr(13)
  oresp.write(outstring)
  outstring=""
  if merrnum< >0
  return "error in oresp.write header"+message()
  +alltrim(str(lineno( )))+chr(13)
  endif
  scan
  outstring=outstring+"< tr >"+chr(13)
  for i=1 to fc
  if type("eval(field(i))")="G"
  loop
  endif
  mt=eval(field(i))
  do case
  case type("mt")="C"
  outstring=outstring+"< td >"+mt+"< /td >"
  case type("mt")="T"
  outstring=outstring+"< td >"+ttoc(mt)+"< /td >"
  case type("mt")="D"
  outstring=outstring+"< td >"+dtoc(mt)+"< /td >"
  case type("mt")$"NY"
  outstring=outstring+"< td >"+alltrim(str(mt,5))+"< /td >"
  endcase
  outstrin=outstring+chr(13)
  next
  outstring=outstring+"< /tr >"+chr(13)
  endscan
  oresp.write(outstring)
  outstring="< /table >"
  oresp.write(outstring)
  use
  on error
  return "OK of querytotable, ended"+chr(13)
  endfunc
  EndDefine

  ----键入代码后Build,在Build对话框中仍选Build OLE DLL,在确认覆盖时选择"Y",在Project Information对话框中看到这个组件的信息已有变化:
  Server Classes:onerecord clsq2t
  Project Name:Classes

  ----加上了新增的clsq2t。----这段代码中较特别的是onstartpage(ocontext),它在每次.asp页面启动时由IIS自动调用,并传入一个参数。该参数是对ASP的一个容器ScriptingContext的引用,通过它可以引用ASP的所有内在对象(Intrinsic Object),如response、reuqest。通过这些内在对象,VFP可以直接读取用户在Web页面上的输入,也可以把结果直接写回Web页面。

  ----组件clsq2t的调试要困难得多。可以在函数querytotable中注释掉与oResp有关的行以及define classclsq2tascustomolepublic和EndDefine两行,然后增加一些代码直接调用各个函数,以进行调试排错。确认无误后再恢复上述各行,并重新Build。

  5.在ASP中使用VFP组件

  ----下面将建立两个ASP页面:Onerecord.asp和Clsq2t.asp测试我们完成的这两个组件。启动Visual InterDev,开始一个新的工程:NewProjects,然后选取Web Project Wizard,在Project Name中输入VFP Classes,点击OK后,Visual InterDev产生一些辅助文件,为新的工程做好准备,然后打开该工程。我们在该工程中首先建立一个HTML页面index.htm,以调用上述两个ASP页面。点击菜单File|New,在New对话框中选Files|HTMLPage,并指定HTML页面的名字:index.htm。Visual InterDev将会为我们产生一个空的框架,在其中用手工加入代码,也可用Visual InterDev附带的FrontPage Editor等可视化工具编辑代码,完成后的HTML页面如下:
  < HTML >
  < HEAD >
  < /HEAD >
  < BODY >
  < p >< a href="Onerecord.asp" >To scan the records< /a >
  < /p >
  < p >To send a query:< br >
  < form action="Clsq2t.asp" method="post" name="input" >
  < input type="submit" name="Btoquery" value="Query" >
  < input type="text" size="40" name="qstring"
  value="Input a query here" >
  < /p >
  < /form >
  < /BODY >
  < /HTML >

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答