Q&A

  • 클래스 안에 선언한 Query, DataSouce 등 폼에서 사용하는 방법??
안녕하세요!!

지금 제가 프로그램 하고 있는 프로젝트가....

데이터 처리 class 들과 폼 DB Module 을 구분지어..

화면 처리는 폼에서만 처리하고,

데이터 관리는 데이터 처리 class에서

DB Module에선 DB 접속들을 관리 합니다.

문제는 DB Module에 query를 올려 놓구 사용하니..

2개 이상 폼에서 같은 query나 teble을 접속하면..

한쪽에서 filtering을 하면 다른 쪽에도... 영향이 미치지 않을까 하는

거정에서 이리 글을 씁니다. 아직 테스트를 안해봤지만...

거짐 확실하게 영향을 미칠거 같아서..

데이터 처리 class에서 query와 datasouce를 선언하고

그걸 사용하여 폼 Grid와 datasouce를 연결하면 될꺼 같어...

그렇게 코딩을 하였습니다..

Grid가 퀀턴 그리드고, 그리드 레이아웃으로 그리드내용을 구성

그리드 레이아웃과 datasocue를 연결하니 여기서 에러가 나네요..

더 좋은 방법은 없을까 해서.. 고수님들 도움 요청합니다...
3  COMMENTS
  • Profile
    너구리 2004.03.25 22:04
    DB Class에서는 클래스만 구현해주고.

    각각의 유닛에서 객체를 만들어서 사용해야 겠지요..

    Form1 과 Form2가 잇고 DB class 이름이 TDBClass이라면

    Form1에서는

    Form1DBObj := TDBClass.Create;

    Form2에서는

    Form2DBObj := TDBClass.Create;

    이렇게 해야 클래스란 개념을 잘 살린거 같아요..

    그냥 DB 유닛파일에

    var
      DBClass : TDBCLass

    이렇게 선언하고 DBCLass를 쓰는 구조라면 그냥 파일을 나눴을 뿐이라는

    의미밖에 없다고 생각됩니다.

    저렇게 되면 Form마다 DBModuls이 하나씩 있어야 겠지요..

  • Profile
    연기훈 2004.03.25 22:19
    네.. 폼에서 클래서 정의 및 생성하고 사용합니다.. DB module에서 Query,

    DataSouce 컴포넌트를 공유해서 사용하는 것에서 문제가 발생하는 건데요..

    이걸 해결하기 위해서 class안에 query, datasouce 컴포넌트를 너어서

    사용할려고 합니다.

    문제는 여기서 grid에 datasouce연결에서 에러가 발생하네요...

    그리고,

    query 컴포에서 open하면 에러가 발생하네요..

    지금 여러가지 방법으로 테스트 중인데..

    제가 포인트 개념을 잘 몰라서 포인트 공부중.....

    포인트로 주소를 넘겨 주면 될껐도 같은데.. 흠..

  • Profile
    너구리 2004.03.25 22:38
    DB Class파일하고 적용된 부분을 보여주세요..

    그리고 에러 메세지도....모여주시면 답을 드리는데 도움이 될거 같은데요.

    구조 상으로는 문제가 없을거 같은데요..

    뭔가 자잘한 부분을 놓치신게 아닌가 싶습니다.큰것일수도 잇고..

    //////////////////////////////////////////////////////////////

    올리지 않으시니 별의미 없는 글이 될까하여 제생각을 약간 적습니다.

    TDBControl 이란 클래스가 있다면 그안에 DataSource와 Query가 있다면
    (제생각엔 그리드도 같이 올려 놓고 세트로 쓰면 좋을텐데....)

    이와 같다면 생성자를 재정의 해서 파라미터로 그리드의 포인터를 받습니다.

    type
      TPGrid = ^Grid;

    type
      TDBControl = Class;  
      .........
      private
      procedure ControlsConnect;
      constructor create(PGrid : TPGrid); reintroduce;  
      end;

    MyDBControl := TDBControl.Create(@Grid1);
    MyDBControl.ControlsConnect;

    위 문법이 맞는지는 모르겠습니다만 저렇게 하는게 좋을듯 합니다.

    사실 더 좋은 방법이 있는데 제가 모를수도 있으니 양해 바랍니다.



    • 김현철
    • 2004.03.26 05:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.26 18:51
      데이타셋의 구성을 이용해서 뿌려주니깐 TField쪽을 보셔야 할거 같은데요.. 저도 저런 현상을 본적...
    • 김현철
      2004.03.26 22:35
      db의 값이 0입니다.... TField의 자료형도 real타입으로 해 봤는데도... 결과가 같습니다.. 임시로 lable...
    • 류동완
    • 2004.03.26 05:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2004.03.26 07:39
      에스큐엘 익스플로러에서  잡혀져 있는 알리어스를 더블클릭하신후 sql 란에서 select * from...
    • 너구리
    • 2004.03.26 03:14
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.03.26 10:11
      안녕하세요. 최용일입니다. 둘 다 메소드를 재정의 할 때 쓰입니다. override는 똑같은형태의 메소드...
    • 너구리
      2004.03.26 18:41
      그렇다면 reintroduce를 쓰면 overroad는 안써도 되나요?? 헬프에 보니깐 overroad와 reintroduce를 같...
    • 최용일
      2004.03.26 20:33
      안녕하세요. 최용일입니다. override와 overload는 다른 것입니다. overload는 같은 이름을 가지며 ...
    • KDDG_BaSTaD
      2004.03.26 23:45
    • 왕초보
    • 2004.03.26 02:22
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한주영
      2004.03.26 18:37
      멀티유저환경이라면 위험한 방법입니다. Select max(num) from.. 으로 들어가는 방법역시 위험합니다. ...
    • 너구리
      2004.03.26 02:43
      num 이란것이 PK라면 recordCount보다는 select max(num) from table_name 이렇게 구해 오셔야 될겁...
    • 왕초보
      2004.03.26 21:28
      답변감사합니다. max값 구해서 한다면.. 아래처럼 하니까 type mismatch 에러가 생기는데요.. 에구.. 코...
    • 돌아버려
      2004.03.26 02:39
      컬럼 type을 autoincrement로 설정하시면... 레코드 추가 할때 자동증가 되는걸로 기억하는데요.^^; ...
    • Galaxy
    • 2004.03.26 00:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Cali
      2004.03.26 00:47
      .DB 는 원래 database 화일 .PX 는 Primary key 화일 .MB 는 BLOB 필드가 있는경우에 생성되는 화일로 알...
    • 강동균
      2004.03.26 01:21
      전에 저도 궁금하여 김영대님께 여쭈었더니 다음과 같이 보내주시더군요. 몰라도 되구요.  참...
    • Galaxy
      2004.03.26 02:05
    • 메디컴
    • 2004.03.25 23:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2004.03.26 02:19
      아래 소스처럼 바꿔 보셨어요? procedure TForm1.SpeedButton2Click(Sender: TObject); var  &...
    • 연기훈
    • 2004.03.25 21:43
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.25 22:04
      DB Class에서는 클래스만 구현해주고. 각각의 유닛에서 객체를 만들어서 사용해야 겠지요.. Form1 과...
    • 연기훈
      2004.03.25 22:19
      네.. 폼에서 클래서 정의 및 생성하고 사용합니다.. DB module에서 Query, DataSouce 컴포넌트를 공유...
    • 너구리
      2004.03.25 22:38
      DB Class파일하고 적용된 부분을 보여주세요.. 그리고 에러 메세지도....모여주시면 답을 드리는데 도움...
    • 왕초보
    • 2004.03.25 21:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 꿈의대화
      2004.03.25 23:46
      .
    • 왕초보
      2004.03.26 00:23
      답변 감사합니다. shellApi를 통해서 하면 될 것 같다고 하신 김문수라는 분이 계시네요. 근데 제가 워...
    • KDDG_Apine
      2004.03.26 05:59
      안녕하세요.. 제가 알고 있기로는 인디에 있는 mailClient로 smtp의 서버 주소 그리고 포트  ...
    • KDDG_BaSTaD
      2004.03.26 20:41
      ==> 안녕하세요 BaSTaD 입니다. 전송이 중간에 취소되거나 연결이 종료될때 Exception 이 발생하...
    • 채태숙
      2004.03.25 20:18
      select aaa[--필드명], count(*) from table1 group by aaa having count(aaa) > 1 이렇게 하시...
    • 박수영
      2004.03.25 19:46
      Key값이 아니라면 select하는 것이 가장 정확하지 않을까요???
    • 연기훈
      2004.03.25 19:09
      하나의 중복 값만 찾으면 되는건지...? group by 로 그룹 잡고 count 해주면 중복 데이타 수랑 다나오자...
    • Galaxy
      2004.03.26 00:10
    • 너구리
      2004.03.25 20:30
      저 한테 있기는 한데 델파이 6버젼이 있기는 한데.. 버젼이 맞을지..그리고 FreeWare라면 드릴께요.. ...
    • 박대원
    • 2004.03.25 02:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 권영길
      2004.03.25 02:15
      http://www.techvanguards.com/products/eventsinkimp/ 여기서 제공되는 툴을 써서 이벤트관련 TLB를 생성...
    • 박대원
      2004.03.25 03:34
      답변 감사합니다. EventSinkImp 라는 프로그램을 설치하고 TypeLibrary 에서 Import 해줬습니다. 그...
    • 권영길
      2004.03.25 04:45
      제가 자세한건 살펴볼수 없으나 EventSinkImp에서 생성해주는 유닛을 사용할 경우 대략의 스토리는 이렇습...
    • 1학년
    • 2004.03.25 01:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.25 01:26
      우선 출력할 부분이 열자리면 열자리만큼을 스패이스로 채운뒤에 숫자의 길이만큼 for i := lengt...
    • 김승재
    • 2004.03.25 00:47
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최성준
      2004.03.25 01:16
      질문1 : 델파이 project - options에서 forms tab에서        &n...
    • 별볼일없는
      2004.03.25 01:10
      저두 초보지만 아주 초보적인 질문이네요.. ㅋㅋ 1번건은 메인 메뉴에 porject 에서 options 들어...
    • 김승재
      2004.03.25 18:26
      ㅎㅎ
    • 서기원
      2004.03.30 02:22
      벌써 답을 찾으셨을 것 같긴 한데... ActiveX의 Destory 메소드에서 처리하시면 될겁니다. 그럼..
    • 김기원
      2004.03.25 01:17
      QRCompositeReport 를 사용해보세요... QuickRep 를 한 폼에 두개 만드시고 각각 QuickRep에 Grid1의 내용...
    • 장덕곤
      2004.03.26 07:43
      이방법도 있을거같네요 프린터버튼을 클릭할때 따로 SQL을 작성해서 돌리는 겁니다 sql은 select * from...
    • 송종환
    • 2004.03.25 00:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이강승
    • 2004.03.25 00:06
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.25 02:52
      그런데 프로그램 업데이트를 하면 파일을 카피하더라도 이미 실행중인 프로그램하고 이름이 같을텐데.. ...
    • KDDG_Cali
      2004.03.25 00:18
      폼의 FormPaint 부분에서 처리하심이..... 그럼.. GG KDDG_
    • 이강승
      2004.03.25 00:47
      답변감사합니다. 하지만 심각한 에러가 발생하더군요 ;; 다음의 방법으로도 가능하네요. 조잡한 방법같은...
    • 김기원
      2004.03.25 01:40
      FormCreate 이벤트에서 PostMessage 를 이용 해보세요...