메뉴 건너뛰기

넷서버 사용 팁/강좌

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

admin 2008.01.24 19:29 조회 수 : 4398

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 4451
공지 넷서버 동영상 강좌 admin 2008.01.23 3852
공지 넷서버 소개문서 넷서버 2008.01.19 5040
31 midaslib를 추가해 주십시오 admin 2015.08.19 216
30 XE2 이후 unit scope table admin 2014.02.28 1675
29 Java 1.6버젼과 windows server 2008 r2 문제 admin 2011.12.13 3659
28 넷서버 에러코드 및 설명 admin 2011.06.04 4756
27 윈도우서버 2008 R2에서의 닷넷의 문제 admin 2010.05.27 16496
26 패키지의 설치시 폴더의 설정 admin 2009.03.17 5740
25 XP모드에서 TPanel의 Color 사용방법 admin 2008.05.23 4415
24 FibPlus에서 Boolean 필드사용방법 admin 2008.03.18 11437
23 SQLite의 사용상의 주의 admin 2008.02.28 4308
22 디버그컴포넌트(MaxExcept, EurekaLog...)의 사용시 유의사항 admin 2008.02.16 5042
21 Open Source ODBC DBX Driver admin 2008.02.05 3312
20 넷서버의 설치 방법 admin 2008.01.24 4778
19 [동영상] 넷서버 클라이언트 프로그램의 제작 admin 2008.01.24 2974
18 [동영상] 넷서버 서버의 제작 admin 2008.01.24 2650
17 Ch7. 채팅클라이언트 프로그램의 제작 admin 2008.01.24 3110
16 Ch6. 채팅서버 프로그램의 제작 admin 2008.01.24 3062
15 ch 5. 비즈니스오브젝트를 클라이언트에서 사용하기 admin 2008.01.24 2653
» ch 4. 비즈니스오브젝트의 작성-서버 admin 2008.01.24 4398
13 ch 3.메세지클라이언트의 제작 admin 2008.01.24 4473
12 ch 2. 간단한 클라이언트프로그램의 제작 admin 2008.01.24 2891
위로