亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

用Delphi開發ASP分頁組件

2019-11-18 20:37:37
字體:
來源:轉載
供稿:網友
  隨著網絡技術的發展和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組件了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色无极影院亚洲| 911国产网站尤物在线观看| 久久久久久久97| 欧美极品少妇xxxxⅹ裸体艺术| www.久久久久| 国产精品1区2区在线观看| 欧美日韩亚洲高清| 成人av在线网址| 国产精品久久久久久久久免费| 亚洲成色777777在线观看影院| 亚洲香蕉成人av网站在线观看| 欧美日韩久久久久| 欧美午夜精品久久久久久久| 亚洲色图第一页| 亚洲欧美精品一区二区| 91在线观看免费高清完整版在线观看| 亚洲精品在线看| 97视频在线观看播放| 性色av一区二区三区红粉影视| 一个人看的www欧美| 国产精品国产福利国产秒拍| 国产亚洲人成a一在线v站| 日韩精品电影网| 亚洲成人国产精品| 日韩av一区二区在线| 97久久超碰福利国产精品…| 久久精品人人爽| 国产精品视频1区| 久久全球大尺度高清视频| 91视频国产精品| 欧美激情视频一区| 国产精品久久精品| 国产不卡av在线| 国产美女久久精品香蕉69| 久久久久久91香蕉国产| 欧美激情免费观看| 色七七影院综合| 日韩在线免费视频| 91亚洲精华国产精华| 九九热这里只有在线精品视| 久久久久久久一区二区| 菠萝蜜影院一区二区免费| 永久免费毛片在线播放不卡| 久久久久久国产精品三级玉女聊斋| 日本高清视频一区| 亚洲欧洲国产一区| 亚洲免费视频网站| 91国内揄拍国内精品对白| 韩剧1988在线观看免费完整版| 久久综合国产精品台湾中文娱乐网| 伊人伊成久久人综合网小说| 成人网欧美在线视频| 久久这里只有精品99| 国产亚洲美女精品久久久| 精品在线欧美视频| 色婷婷综合久久久久| 欧美性猛交xxxxx免费看| 亚洲天堂2020| 欧美第一黄色网| 4438全国亚洲精品在线观看视频| 欧日韩不卡在线视频| 国产欧美在线观看| 日韩电影免费在线观看| 成人免费视频网| 亚洲精品一二区| 国产精品一区二区三| 亚洲福利小视频| 久久国产精品亚洲| 欧美性视频精品| 欧美专区国产专区| 亚洲自拍在线观看| 国外视频精品毛片| 热久久免费视频精品| 国产成人综合av| 精品国产乱码久久久久久虫虫漫画| 亚洲欧美综合v| 欧美性极品少妇精品网站| 69久久夜色精品国产69乱青草| 亚洲成人在线网| 久久久久久久一| 日韩中文字幕免费视频| 国产91在线高潮白浆在线观看| 亚洲精品日韩激情在线电影| 欧美大人香蕉在线| 久久的精品视频| 亚洲一区二区久久久久久| 久久亚洲综合国产精品99麻豆精品福利| 国产色综合天天综合网| 最近2019中文字幕大全第二页| 成人美女免费网站视频| 欧美精品在线第一页| 91探花福利精品国产自产在线| 亚洲人成网在线播放| 久久精品国亚洲| 国产激情久久久久| 911国产网站尤物在线观看| 亚洲日韩欧美视频一区| 91在线国产电影| 日韩在线观看你懂的| 亚洲第一网站男人都懂| 日韩中文字幕在线播放| 欧美黑人性生活视频| 国产亚洲成精品久久| 亚洲精品免费在线视频| 久久久91精品国产一区不卡| 欧美激情2020午夜免费观看| 国模精品视频一区二区| 午夜精品福利视频| 国产精品久久av| 国外色69视频在线观看| 亚洲欧美资源在线| 欧美日韩国产中文字幕| 亚洲专区中文字幕| 欧美大片免费观看在线观看网站推荐| 日韩小视频网址| 亚洲人成在线观| 人人澡人人澡人人看欧美| 91在线高清免费观看| 精品中文字幕久久久久久| 欧美亚洲另类激情另类| 欧美精品999| 国产精品爱啪在线线免费观看| 国产91免费看片| 日韩一级黄色av| 不卡av在线播放| 色妞色视频一区二区三区四区| 精品一区精品二区| 国产亚洲精品综合一区91| 久久手机免费视频| 日韩一区二区福利| 亚洲片在线资源| 久久伊人精品一区二区三区| 亚洲欧美日韩直播| 成人黄在线观看| 色黄久久久久久| 美女国内精品自产拍在线播放| 97在线观看免费高清| 清纯唯美亚洲综合| 91精品视频在线| 自拍偷拍亚洲精品| 国产99久久精品一区二区永久免费| 久久国产精品影视| 91网在线免费观看| 亚洲开心激情网| 91久久久久久久久久| 国产精品美乳在线观看| 欧美激情视频一区二区| 国语自产精品视频在线看一大j8| 日本久久久久久久久久久| 国产日韩精品一区二区| 成人动漫网站在线观看| 亚洲裸体xxxx| 韩国精品久久久999| 欧洲美女7788成人免费视频| 粉嫩av一区二区三区免费野| 国产在线观看一区二区三区| 日韩精品有码在线观看| 在线成人免费网站| 色av吧综合网| 国产亚洲欧美日韩一区二区| 欧美老少做受xxxx高潮| 日韩有码在线视频| 尤物九九久久国产精品的特点| 欧美日韩电影在线观看|