用Delphi開發ASP分頁組件

來源:互聯網
上載者:User
分頁 由於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;



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.