네트워크 기술의 발전과 인터넷의 대중화로 인해 브라우저/서버가 소프트웨어 개발의 주류가 되었습니다. 저자는 ERP 시스템을 개발할 때 B/S 소프트웨어 모델을 채택했습니다. 구체적인 아키텍처는 SQL Server + IIS + IE입니다. . 웹페이지는 Active Server Page 파일을 사용합니다. 시스템에는 많은 양의 데이터 작업과 쿼리가 포함되므로 순수하게 ASP 스크립트 언어로 작성하면 필연적으로 효율성이 낮아질 수 있습니다. 시스템의 전반적인 효율성과 보안을 향상시키기 위해 저자는 ASP 구성 요소를 사용합니다. ASP 스크립트 언어를 바꾸십시오.
데이터베이스 응용 프로그램 시스템 개발에 있어서 Delphi의 강력한 기능과 매우 높은 효율성으로 인해 저자는 ASP 구성 요소를 개발하는 데 가장 일반적으로 Delphi 5.0을 사용합니다(물론 ASP 구성 요소를 개발하는 데 Visual Basic이나 VC++도 사용할 수 있으며 Delphi 자체도 널리 사용됩니다). 인터넷 및 InternetExPRess 두 구성 요소 패널은 웹 페이지를 직접 생성할 수 있는 다양한 구성 요소를 제공하지만 이러한 구성 요소에는 웹 페이지의 데이터 표시를 위한 공통 페이징 기능이 없습니다. 우리 모두 알고 있듯이 ASP는 데이터베이스에 대한 ADO 연결을 설정하여 RecordSet 개체를 설정한 다음 페이지 위치 지정을 위해 RecordSet의 AbsolutePage를 사용합니다. Delphi 5.0에서는 Microsoft의 ADO 라이브러리를 캡슐화하기 위해 ADO 구성 요소가 제공되었습니다. 페이지 위치 지정 기능이 있습니다. 다음으로 저자는 페이징 웹 페이지를 단계별로 표시하는 일반 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에서 데이터를 가져와야 하므로 Adopage.pas의 Uses 절에 AdoDataModule을 추가한 다음 데이터 모듈의 변수 fadodm을 선언하고 두 개의 메서드 초기화 및 삭제를 추가해야 합니다. 동시에 ASP 그룹에서 데이터 모듈을 생성합니다. Adopage.pas의 구체적인 코드는 다음과 같습니다.
단위 Adopage;
인터페이스
용도
ComObj, SysUtils, 클래스, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule;
//USE 절에 AdoDataModule을 추가합니다.
유형
T Adopage = 클래스(TASPObject, Ibasedata)
사적인
fadodm:TAdoDataModuleform;
보호됨
절차 OnEndPage;
절차 OnStartPage(const AScriptingContext: IUnknown);
절차 get_page(const pconnadsql: WideString);
공공의
프로시저 초기화;재정의;
소멸자 파괴; 재정의;
끝;
구현
ComServ, 양식을 사용합니다.
소멸자 Tadopage.destroy;
시작하다
상속됨;
fadodm.파괴;
끝;
절차 Tadopage.initialize;
시작하다
상속됨;
fadodm:=tadodmform.Create(forms.application);
끝;
4단계: 데이터 표시를 위한 일반적인 페이징 방법인 get_page를 설정합니다. 구체적인 코드는 다음과 같습니다.
프로시저 Tadopage.get_page(const pconnadsql: WideString);
var i,j,n:정수;
connstr,sqlstr:widestring;
rs:_recordset;
cur_url:와이드스트링;
page_no:정수;
시작하다
//먼저 전달된 매개변수에서 연결 문자열과 SQL 문을 꺼냅니다.
pconnadsql:=대문자(pconnandsql);
i:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
i=0 또는 j=0이면
시작하다
response.write('데이터베이스 연결 문자열 또는 SQL 문 오류입니다!');
중단;
끝;
for n:=I+8 ~ j-1 do
connstr:=connstr+pcnnandsql[n];
n:=j+7에서 length(pcnnandsql)로 수행
sqlstr:=sqlstr+pcnnandsql[n];
//얻은 연결 문자열과 SQL 문을 각각 ADOconnection과 ADOQuery에 할당합니다.
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
//다음은 데이터베이스를 오픈하고 페이징을 수행하는 과정이다.
노력하다
fadodm.adoquery1.open;
//데이터베이스 열기
rs:=fadodm.adoquery1.recordset;
//현재 열려 있는 페이지의 URL과 페이지 번호를 가져옵니다.
노력하다
request.servervariable['url'].count>0이면
cur_url:= request.servervariable.item['url'];
request.querystring['page_no'].count>0이면
page_no:=request.querystring.item['page_no']
또 다른
페이지번호:=1;
제외하고
끝;
rs.pagesize:=20;
//페이지당 20줄 설정
rs.AbsolutePage:=page_no;
//페이지 위치 지정
response.write('total'+inttostr(rs.pagecount)+'page& ');
response.write('th'+inttostr(page_no)+'page& ');
//각 페이지 번호에 대한 하이퍼링크 생성
i:=1에서 rs.pagecount로 수행
response.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a>');
//데이터 레코드가 테이블에 표시됩니다.
response.write('<테이블>');
//테이블 제목 가져오기
response.write('<tr>');
I:=0에서 fadodm.adoquery1.fields.count-1로 수행
response.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');
response.write('</tr>');
j:=1
fadodm.adoquery1을 사용하면
while (eof 아님) 및 j<=rs.pagesize do
시작하다
response.write('<tr>');
//테이블 내용 가져오기
i:=1 ~ fields.count do
response.write('<td>'+fields[i].asstring+'</td>');
response.write('</tr>');
다음;
끝;
response.write('</table>');
fadodm.adoquery1.close;
제외하고
response.write('데이터 오류!');
끝;
끝;
위는 범용 페이징 데이터를 얻는 과정입니다. 일부 기능은 컴파일 중에 오류를 일으킬 수 있습니다. USES 절에 sysutils, 클래스 및 adodb 단위를 추가하면 됩니다.
5단계: ASP 코드에서 호출할 수 있는 adopage 구성 요소를 컴파일하고 등록합니다. 호출 예는 다음과 같습니다.
<%
어두운 웹페이지obj
webpageobj=server.createobject(padopage.adopage) 설정
webpageobj.get_page(conn=provider=SQLOLEDB.1;presist 보안 정보=false;
사용자 ID=sa;초기 카탈로그=sale_data;데이터 소스=(로컬),
sqlstr=고객으로부터 선택)
%>
위의 과정을 통해 델파이를 이용하여 페이징 기능을 갖춘 ASP 컴포넌트를 성공적으로 개발하였습니다.