六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用Delphi開發ASP分頁組件

[摘要]隨著網絡技術的發展和Internet的普及,Browser/Server在軟件開發中已成為主流,筆者在開發一個ERP系統時,就采用了B/S軟件模式,具體架構為SQL Server+IIS+IE網頁采用的是Active Server Page文件。由于系統涉及大量的數據操作和查詢,若純粹采用ASP...
隨著網絡技術的發展和Internet的普及,Browser/Server在軟件開發中已成為主流,筆者在開發一個ERP系統時,就采用了B/S軟件模式,具體架構為SQL Server+IIS+IE網頁采用的是Active Server Page文件。由于系統涉及大量的數據操作和查詢,若純粹采用ASP腳本語言編寫勢必造成效率低下,為了提高系統的整體效率和安全性,筆者采用了ASP組件來代替ASP腳本語言。


  由于Delphi在開發數據庫應用系統中具有的強大的功能和極高的效率,所以筆者開發ASP組件較常用的是Delphi 5.0(當然也可采用Visual Basic或VC++開發ASP組件),Delphi本身在Internet和InternetExpress兩個組件面板提供了眾多的組件可以直接生成Web頁面,但是這些組件都缺少網頁中數據顯示常見的分頁功能。眾所周知,ASP是通過建立ADO連接數據庫后建立RecordSet對象,然后利用RecordSet的AbsolutePage進行頁面定位,而在Delphi 5.0中,已提供了ADO組件封裝了Microsoft的ADO庫,所以同樣具有頁面定位功能。下面筆者將分步來開發一個通用的顯示分頁Web頁面的ASP組件。

  第一步:新建一個Activex Library,命名為PadoPage,然后再新建一個Active Server Object Class,命名為AdoPage,即建立了一個名為AdoPage的ASP組件,文件命名為Adopage.pas。

  第二步:打開Type Library,新建一個方法Get_Page,然后在Get_Page加入一個參數Pconnandsgl,用于傳遞數據庫連接語句和SQL語句,參數選擇為BSTR類型。

  第三步:新建一個DataModule,放入Adoconnection組件和AdoQuery組件,將Data Module命名為AdoDataModule。由于新建立的組件中的方法Get_Page要從DataModule中取得數據,所以需在Adopage.pas的Uses子句中加入AdoDataModule,然后聲明一個數據模塊的變量fadodm,同時加入Initialize和Destroy這兩個方法,以便在ASP組作中生成數據模塊。Adopage.pas具體代碼如下所示:

  unit Adopage;

  interface

  uses

   ComObj, SysUtils, Classes, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule;

   //將AdoDataModule加入USE子句

  type

   T Adopage = class(TASPObject, Ibasedata)

   private

   fadodm:TAdoDataModuleform;

   protected

   procedure OnEndPage; safecall;

   procedure OnStartPage(const AScriptingContext: IUnknown); safecall;

   procedure get_page(const pconnandsql: WideString); safecall;

   public

   procedure initialize;override;

   destructor destroy;override;

   end;

  implementation

  uses ComServ,forms;

  destructor Tadopage.destroy;

  begin

   inherited;

   fadodm.Destroy;

  end;

  procedure Tadopage.initialize;

  begin

   inherited;

   fadodm:=tadodmform.Create(forms.application);

  end;

  第四步:建立通用的分頁顯示數據的方法get_page,具體代碼如下:

  procedure Tadopage.get_page(const pconnandsql: WideString);

  var i,j,n:integer;

  connstr,sqlstr:widestring;

  rs:_recordset;

  cur_url:widestring;

  page_no:integer;

  begin

  //首先從傳遞過來的參數中分別取出連接串和SQL語句

  pconnandsql:=uppercase(pconnandsql);

  i:=pos('CONNSTR',pconnandsql);

  j:=pos('SQLSTR',pconnandsql);

  if i=0 or j=0 then

   begin

   response.write('數據庫連接串或SQL語句錯誤!');

   abort;

   end;

  for n:=I+8 to j-1 do

   connstr:=connstr+pconnandsql[n];

  for n:=j+7 to length(pconnandsql) do

   sqlstr:=sqlstr+pconnandsql[n];

  //將取得的連接串和SQL語句分別賦給ADOconnection和ADOQuery

  fadodm.adoconnection1.connstring:=connstr;

  fadodm.adoquery1.sql.add(sqlstr);

  //以下為打開數據庫并進行分頁的過程

  try

   fadodm.adoquery1.open;

  //打開數據庫

   rs:=fadodm.adoquery1.recordset;

  //取得當前打開頁面的URL和頁碼

   try

   if request.servervariable['url'].count>0 then

   cur_url:= request.servervariable.item['url'];

   if request.querystring['page_no'].count>0 then

   page_no:=request.querystring.item['page_no']

   else

   page_no:=1;

   except

   end;

   rs.pagesize:=20;

  //每頁設為20行

   rs.AbsolutePage:=page_no;

  //頁面定位

   response.write('共'+inttostr(rs.pagecount)+'頁& ');

   response.write('第'+inttostr(page_no)+'頁& ');

  //對每個頁碼建立超鏈接

  for i:=1 to rs.pagecount do

  response.write('<a href="'+cur_url+'?page_no='+inttostr(i)+'">'

  +inttostr(i)+'</a>');

  //數據記錄按表格顯示

  response.write('<table>');

  //取得表格標題

  response.write('<tr>');

  for I:=0 to fadodm.adoquery1.fields.count-1 do

   response.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');

  response.write('</tr>');

  j:=1

  with fadodm.adoquery1 do

   while (not eof) and j<=rs.pagesize do

   begin

   response.write('<tr>');

  //取得表格內容

  for i:=1 to fields.count do

   response.write('<td>'+fields[i].asstring+'</td>');

   response.write('</tr>');

   next;

   end;

  response.write('</table>');

  fadodm.adoquery1.close;

  except

  response.write('數據出錯啦!');

   end;

  end;

  以上即為取得通用分頁數據的過程,需要注意的是編譯時部分函數會出錯,只需在USES子句中加入sysutils、classes和adodb單元即可。

  第五步:編譯并注冊adopage組件,即可在ASP代碼中調用,調用示例如下:

  <%

  dim webpageobj

  set webpageobj=server.createobject("padopage.adopage")

  webpageobj.get_page("conn=provider=SQLOLEDB.1;presist security info=false;

  user id=sa;initical catalog=sale_data;data source=(local),

  sqlstr=selectfrom customer")

   %>

  通過以上步驟,我們就順利地利用Delphi開發出了具有分頁功能的ASP組件了。



主站蜘蛛池模板: 日韩 亚洲 翔田千里 在线 | 天堂资源中文在线 | 亚洲高清毛片 | 青青成人福利国产在线视频 | 亚洲精品视频在线观看免费 | 日韩福利影视 | 日本乱人伦片中文字幕三区 | 一二三四影视在线观看免费视频 | 亚洲狠狠| 午夜黄色网址 | 午夜精品久久久久久久2023 | 亚洲国产99 | 伊人二区 | 伊人色在线观看 | 亚洲第一视频区 | 日韩成人免费aa在线看 | 日本黄网站高清色大全 | 亚洲a网| 午夜手机福利 | 亚洲成在人线影视天堂网 | 婷婷伊人网 | 亚洲一级片免费 | 色综合天天综合网国产成人 | 欧美香蕉视频在线观看 | 伊人影库 | 中文字幕精品视频在线观看 | 色噜噜狠狠成人中文小说 | 日本伊人网 | 青春草视频在线观看免费 | 亚洲成人婷婷 | 山河令彩蛋免费播放完整版 | 日本草草视频 | 色婷婷久 | 日韩毛片免费视频 | 日本欧美在线 | 新版天堂中文资源官网 | 无码免费一区二区三区免费播放 | 天天干夜夜欢 | 亚洲精品日韩专区在线观看 | 天天操狠狠干 | 五月婷婷激情网 |