메뉴 건너뛰기

넷서버 사용 팁/강좌

강좌 ch 4. 비즈니스오브젝트의 작성-서버

admin 2008.01.24 19:29 조회 수 : 4473

ch 4. 비즈니스오브젝트의 작성-서버

이번장에서는 N-Tier프로그램의 하이라이트인 비즈니스오브젝트의 구현의 예를 구현합니다.

서버상의 비즈니스오브젝트는 ch1에서 만든 서버를 사용하여 제작하기로 합니다.


 

1. ch1에서 만든 서버의 폼에 추가로 TBOManager를 놓고 NetServer.BOManager와 연결한다.

2. BOManager1.BOItems를 클릭하여 새로운 비즈니스오브젝트를 추가한다.

여기서는 ServerStatus와 DBStatus의 두가지 오브젝트를 추가한다.

ServerStatus는 서버의 상태를 보여주는 것이며 DBStatus는 현재의 DB정보를 테이블형태로 보여준다.

3, ServerStatus항목의 OnExecute이벤트를 열고 다음의 내용을 추가한다.

function TForm1.BOManager1BOItems0Execute(Sender: TBOItem; aUser: TnsUser;

  sParams: TStrings; aParams, aResult: TnsParams; var aDataset: TDataSet;

  var AutoFreeDataset: Boolean): Boolean;

var

  f: TNSTable;

begin

  //서버의 상태를 보여준다.

  f := TNsTable.Create(nil);

  f.FieldDefs.Add('TIME', ftDateTime); //서버시간을 보여줄 필드

  f.FieldDefs.Add('USERS', ftInteger); //서버의 현재 접속사용자를 보여줄 필드

  f.FieldDefs.Add('BANNER',ftString, 30); //배너

  f.Open;

  f.Append;

  f['TIME'] := Now;

  f['USERS'] := NetServer1.UserCount;

  f['BANNER'] := NetServer1.ConnectProp.Banner;

  f.Post;

  aDataSet := f;

  result := true;

end;

4. uses에 nsUserBase, nsParams,  db,  NsMemDS, dbTables 를 추가한다.

nsUserBase는 TNsUser, nsparams는 TnsParams가 선언되어 있고 NsMemDS는 임시테이블인 TNsTable이 선언되어 있다.

그리고 dbtables는 다음 5번에서 사용할 TQuery의 클래스원형을 사용하기 위해서 추가한다.

 

5. DBStatus의 OnExecute이벤트에서 다음과 같이 적는다.

function TForm1.BOManager1BOItems1Execute(Sender: TBOItem; aUser: TnsUser;

  sParams: TStrings; aParams, aResult: TnsParams; var aDataset: TDataSet;

  var AutoFreeDataset: Boolean): Boolean;

var

  q: TQuery;

  f: TnsTable;

begin

  //결과를 저장할 임시테이블을 생성한다.

  f := TNsTable.Create(nil);

  with f.FieldDefs do begin

    Add('NAME', ftString, 32);

    Add('RECCOUNT', ftInteger);

  end;

  f.Open;

 

  //aUser의 세션아래에 새로 TQuery를 생성한다.

  //''대신에 직접 SQL문을 적어도 된다.

  q :=  NsBDEDataProvider1.CreateQuery(aUser, '') as TQuery;

 

  //레코드를 추가한다.

  q.SQL.Text := 'select count(*) from customer';

  q.Open;

  f.Append;

  f['NAME'] := 'customer';

  f['RECCOUNT'] := q.Fields[0].AsInteger;

  f.Post;

  q.Close;

  q.SQL.Text := 'select count(*) from customer';

  q.Open;

  f.Append;

  f['NAME'] := 'customer';

  f['RECCOUNT'] := q.Fields[0].AsInteger;

  f.Post;

  q.Close;

  q.SQL.Text := 'select count(*) from orders';

  q.Open;

  f.Append;

  f['NAME'] := 'orders';

  f['RECCOUNT'] := q.Fields[0].AsInteger;

  f.Post;

  q.Close;

  q.SQL.Text := 'select count(*) from parts';

  q.Open;

  f.Append;

  f['NAME'] := 'parts';

  f['RECCOUNT'] := q.Fields[0].AsInteger;

  f.Post;

  q.Close;

 

  q.Free; //다사용하고난 쿼리는 제거

 

  aDataset := f; //결과값반환

  result := true; //제대로수행되었다.

end;

번호 제목 글쓴이 날짜 조회 수
공지 이전게시판의 질문과답변 및 사용팁 메뉴얼관련 링크 admin 2008.01.23 4633
공지 넷서버 동영상 강좌 admin 2008.01.23 3915
공지 넷서버 소개문서 넷서버 2008.01.19 5110
28 넷서버의 엔터프라이즈환경에서의 사용 방식의 개선 넷서버 2008.01.19 1825
27 Intergate 로드밸런스 서버 넷서버 2008.01.19 1682
26 로드밸런스의 라이센스 배포와 관련하여 넷서버 2008.01.19 1744
25 Synchronize 쉽게 사용하기 admin 2008.01.19 3948
24 Integate를 사용하지 않은 다른 로드밸런스 구현 방법(4tier) 넷서버 2008.01.19 2032
23 파일업로드나 다운로드후 파일이 닫힐때 원하는 작업처리하기 admin 2008.01.19 1981
22 DLL과 Deadlock admin 2008.01.20 6347
21 ch 1. 간단한 BDE서버의 제작 admin 2008.01.24 4000
20 ch 2. 간단한 클라이언트프로그램의 제작 admin 2008.01.24 2988
19 ch 3.메세지클라이언트의 제작 admin 2008.01.24 4526
» ch 4. 비즈니스오브젝트의 작성-서버 admin 2008.01.24 4473
17 ch 5. 비즈니스오브젝트를 클라이언트에서 사용하기 admin 2008.01.24 2722
16 Ch6. 채팅서버 프로그램의 제작 admin 2008.01.24 3116
15 Ch7. 채팅클라이언트 프로그램의 제작 admin 2008.01.24 3176
14 [동영상] 넷서버 서버의 제작 admin 2008.01.24 2700
13 [동영상] 넷서버 클라이언트 프로그램의 제작 admin 2008.01.24 3035
12 넷서버의 설치 방법 admin 2008.01.24 4873
위로