ネットワーク技術の発展とインターネットの普及により、ERP システムを開発する際にはブラウザ/サーバーが主流になりました。具体的なアーキテクチャは SQL Server + IIS + IE です。 . Web ページは Active Server Page ファイルを使用します。システムには大量のデータ操作とクエリが含まれるため、単純に ASP スクリプト言語で記述すると必然的に効率が低下します。システム全体の効率とセキュリティを向上させるために、著者は ASP コンポーネントを使用します。 ASP スクリプト言語を置き換えます。
Delphi の強力な機能とデータベース アプリケーション システムの開発効率が非常に高いため、著者は ASP コンポーネントの開発に Delphi 5.0 を最もよく使用しています (もちろん、ASP コンポーネントの開発には Visual Basic または VC++ も使用できます)。インターネットと InternetExPRess 2 つのコンポーネント パネルには、Web ページを直接生成できる多数のコンポーネントが用意されていますが、これらのコンポーネントには、Web ページにデータを表示するための共通のページング機能がありません。ご存知のとおり、ASP はデータベースへの ADO 接続を確立することによって RecordSet オブジェクトを確立し、ページの位置決めに RecordSet の AbsolutePage を使用します。Delphi 5.0 では、Microsoft の ADO ライブラリをカプセル化するために ADO コンポーネントが提供されています。ページ位置決め機能を搭載しています。次に、著者は、ページング Web ページを段階的に表示する一般的な ASP コンポーネントを開発します。
最初のステップ: PadoPage という名前の新しい Activex ライブラリを作成し、次に AdoPage という名前の新しい Active Server オブジェクト クラスを作成します。つまり、AdoPage という名前の ASP コンポーネントが作成され、ファイルの名前は Adopage.pas になります。
ステップ 2: タイプ ライブラリを開き、新しいメソッド Get_Page を作成し、パラメータ Pconnandsgl を Get_Page に追加して、データベース接続ステートメントと SQL ステートメントを渡します。パラメータの選択は BSTR タイプです。
ステップ 3: 新しい DataModule を作成し、Adoconnection コンポーネントと AdoQuery コンポーネントを配置し、データ モジュールに AdoDataModule という名前を付けます。新しく作成したコンポーネントの Get_Page メソッドは DataModule からデータを取得する必要があるため、AdoDataModule を Adopage.pas の Uses 句に追加し、データ モジュールの変数 fadodm を宣言し、2 つのメソッド Initialize と Destroy を追加する必要があります。同時に、ASP グループでのデータ モジュールの生成が機能するようになります。 Adopage.pas の具体的なコードは次のとおりです。
ユニットアドページ。
インタフェース
用途
ComObj、SysUtils、クラス、ActiveX、AspTlb、Pbasedata_TLB、StdVcl、AdoDataModule。
// AdoDataModule を USE 句に追加します
タイプ
T Adopage = class(TASPObject, Ibasedata)
プライベート
fadodm:TAdoDataModuleform;
保護された
プロシージャ OnEndPage;
プロシージャ OnStartPage(const AScriptingContext: IUnknown);
プロシージャ get_page(const pconnandsql: WideString);
公共
プロシージャの初期化;オーバーライド;
デストラクタ 破棄;オーバーライド;
終わり;
実装
ComServ、フォームを使用します。
デストラクター Tadopage.destroy;
始める
継承された。
fadodm.破壊します。
終わり;
プロシージャ Tadopage.initialize;
始める
継承された。
fadodm:=tadodmform.Create(forms.application);
終わり;
ステップ 4: データを表示するための一般的なページング メソッド get_page を確立する 具体的なコードは次のとおりです。
プロシージャ Tadopage.get_page(const pconnandsql: WideString);
変数 i,j,n:整数;
connstr,sqlstr:ワイド文字列;
rs:_レコードセット;
cur_url:ワイド文字列;
ページ番号:整数;
始める
//まず渡されたパラメータから接続文字列とSQL文を取り出します。
pconnandsql:=uppercase(pconnandsql);
i:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
i=0 または j=0 の場合
始める
response.write('データベース接続文字列または SQL ステートメントのエラー!');
アボート;
終わり;
for n:=I+8 to j-1 do
connstr:=connstr+pcnnandsql[n];
for n:=j+7 to length(pcnnandsql) do
sqlstr:=sqlstr+pcnnandsql[n];
//取得した接続文字列とSQL文をそれぞれADOconnectionとADOQueryに代入します
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
//以下はデータベースを開いてページングを実行するプロセスです
試す
fadodm.adoquery1.open;
//データベースを開く
rs:=fadodm.adoquery1.レコードセット;
//現在開いているページのURLとページ番号を取得する
試す
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']
それ以外
ページ番号:=1;
を除外する
終わり;
rs.pagesize:=20;
//1 ページあたり 20 行を設定します
rs.AbsolutePage:=page_no;
//ページの位置決め
response.write('total'+inttostr(rs.pagecount)+'page& ');
response.write('th'+inttostr(page_no)+'page& ');
// 各ページ番号にハイパーリンクを作成します
for i:=1 から rs.pagecount を実行します
response.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a>');
//データレコードはテーブルに表示されます
response.write('<テーブル>');
//テーブルのタイトルを取得する
応答.write('<tr>');
for I:=0 から fadodm.adoquery1.fields.count-1 まで
response.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');
応答.write('</tr>');
j:=1
fadodm.adoquery1 を使用して実行します
while (eof ではない) と j<=rs.pagesize は実行します
始める
応答.write('<tr>');
//テーブルの内容を取得する
for i:=1 から field.count への実行
response.write('<td>'+fields[i].asstring+'</td>');
応答.write('</tr>');
次;
終わり;
response.write('</table>');
fadodm.adoquery1.close;
を除外する
response.write('データエラー!');
終わり;
終わり;
上記はユニバーサル ページング データを取得するプロセスです。sysutils、classes、adodb ユニットを USES 句に追加するだけで、一部の関数はエラーを引き起こすことに注意してください。
ステップ 5: ASP コードで呼び出すことができる adopage コンポーネントをコンパイルして登録します。 呼び出しの例は次のとおりです。
<%
薄暗いウェブページオブジェクト
set webpageobj=server.createobject(padopage.adopage)
webpageobj.get_page(conn=provider=SQLOLEDB.1;presist security info=false;
ユーザーID=sa;初期カタログ=sale_data;データソース=(ローカル)、
sqlstr=顧客から選択)
%>
以上の手順により、Delphi を使用したページング機能付き ASP コンポーネントの開発に成功しました。