分頁 由於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;