Q&A

  • 부-자 query 의 자료 수정? 제발
두개의 query를 부자 관계로 설정해 놓고,

자 쿼리에서 새로운 내용이 입력되면 부 쿼리의 일부 필드를 수정하려고 합니다.



ex>

부 쿼리 - p_query

자 쿼리 - c_query



procedure Tdatamodule1.c_queryAfterPost(DataSet: TDataSet);

begin

p_query.edit;

p_query['position'] := c_query['position'];

p_query.post;

end;



이와 같이 했는데 에러메시지도 없이 잘수행 하는 척만하고

자료를 열어보면 전혀 수행이 안됩니다.

제발 제발 도와주십시요.......

2  COMMENTS
  • Profile
    까마귀 2000.12.13 18:42
    안녕하세요. 까마귀입니다.



    어떤 DB를 어떻게 사용하고 있는지를 잘 모르겠는데요.

    아마 이걸 알려주셨으면 많은 분들이 금방 답을 주셨을겁니다.

    Query 콤포넌트를 아래와 같은 식으로는 쓰지를 않는다고 알고 있는데요.

    일단 c 에 자료가 입력되면 p 에도 같은 자료가 입력이 되어야 하는것 같네요.

    부자 관계라... Master/Detail 관계이겠지요.

    그러면 키는 설정이 되어 있겠지요?

    c_query에 입력이 된후에...

    With p_query do

    begin

    Close;

    SQL.Clear;

    SQL.Add('Update Table명 Set position =:position ');

    SQL.Add('Where KeyField명 =:KeyField인수명');

    ParamByName('position').AsInteger := c_query.FieldByName('position').AsInteger;

    ParamByName('KeyField인수명').AsString := ....;

    Prepare;

    ExecSQL;

    end;

    이렇게 하셔야 할것 같네요.



    부자 관계로 엮으셨다.... 어떤 상황에서 그렇게 설정을 하셨는지 모르겠네요.

    부자 관계 = Master/Detail 관계가 맞겠지요?

    보통 Master/Detail 이면 Master가 변하면 Detail은 그에따라 다른 내용을 보여주는

    등의 이유로 많이 설정을 하는데...

    어떤 경우라도 아래처럼 해서는 제대로 저장이 되지는 않아요.



    혹 제가 설명드린게 원하는 내용이 아니면 다시 질문하시기 바랍니다.

    DB는 뭘 쓰고... 등등 좀 자세하게 내용을 설명을 하면 많은 분들이 도움을 주실겁니다.







    위대한 단군혼이 살아있는 나라.... 대한민국.



    남주희 wrote:

    > 두개의 query를 부자 관계로 설정해 놓고,

    > 자 쿼리에서 새로운 내용이 입력되면 부 쿼리의 일부 필드를 수정하려고 합니다.

    >

    > ex>

    > 부 쿼리 - p_query

    > 자 쿼리 - c_query

    >

    > procedure Tdatamodule1.c_queryAfterPost(DataSet: TDataSet);

    > begin

    > p_query.edit;

    > p_query['position'] := c_query['position'];

    > p_query.post;

    > end;

    >

    > 이와 같이 했는데 에러메시지도 없이 잘수행 하는 척만하고

    > 자료를 열어보면 전혀 수행이 안됩니다.

    > 제발 제발 도와주십시요.......

  • Profile
    남주희 2000.12.13 20:41
    부족한 질문에 대한 답변 감사합니다.



    일단 문제는 해결을 했습니다(만 하루를 꼬박 허비하고....)

    코딩순서의 문제였습니다.

    제가 질문한 사항에는 일단 논리적인 오류는 없었습니다.

    질문 예제에는 빠진 내용중에서 오류가 발생했었습니다.



    저처럼 혼자서 책보고 머리 싸매고 있는 분들을 위해 정리..? 또는 저같은 오류를

    범하지 않도록 상황을 다시 설명드립니다.



    > 부자 관계라... Master/Detail 관계이겠지요.

    --> 예

    > 그러면 키는 설정이 되어 있겠지요?

    --> 일부는 아니오..

    처음에는 table을 그냥 가져와서 사용했는데 수많은 조건에의한 filter때문에

    수행속도가 무지하게 떨어지더군요..

    그래서 쿼리를 사용하기로하고 DataModule을 구성했습니다.(아래내용은 쿼리임)

    Master 는 사번을 주키로 설정

    Detail에서 datasource 속성을 'Master의 datasource 컴포넌트'를 지정하고,

    SQL문에서 where 조건의 파라메타를 조인할 필드로 지정했습니다.

    --> 이상은 책에있는 내용대로 작성한 것입니다.



    --> 또한 detail에서 변한 내용을 Master에 넣는 것에 대해서는

    일전에 이것때문에 질문을 한적이있습니다.

    즉 master에 연결된 detail자료 중 가장 마지막 자료만 조인하는 것이지요.

    한데 이것을하기위해서는 부질의를 수행하게 되는데 시간이 엄청나게 걸립니다.

    (master 약 1천건, detail이 약 3천건이고 한번수행하는데 약 4~10초정도,

    이작업을 사용자가 반복해서 수행할 경우 버튼한번 누르고 물한모금, 또 한번

    누르고 물한모금....헤)



    해서 RDB의 정규화와 전혀 상관없이 detail의 일부 필드를 master에도 두고,

    detail의 내용에 수정이나 입력이 가해지면 master의 필드를 자동으로 수정해서

    다른 쿼리의 수행없이 항상 최종값을 볼수 있도록 했습니다.





    --> 추가 질문.....

    위의 설정에 대한 자세한 사항이....

    한개의 폼에 DataModule을 연결하고 DataModule에는 table하고, query하고

    약 20개 정도가 있습니다.

    구조 자체는 대단히 간단합니다. 한개의 Master에(query임) 줄줄이 query,table

    들이 detail로 연결 되어있습니다.

    -- 이렇게 해놓으니 프로그램 시작시 로딩하는 시간이 엄청걸림니다.

    (처음에 active속성을 false로하고 필요시 true로 해도 마찬가지 더군요.)

    일단 시작한하면 어느정도 사용하는데 불편치는 않지만 자료가 늘어날수록....

    좀 불안합니다.



    -- 책에서는 이렇에 많은 table을 처리하는 방법들은 잘 나와있지 않더군요

    db운용이 서툴러서 프로그램 만들고도 잘했는지 잘 못했는지 알수가 없습니다.

    delphi에서 대규모 DB운용에 대한 조언 부탁드립니다.



    저처럼 혼자서 독학하는 불상한 중생에게 자비를.......

    • 주경래
    • 2000.12.13 06:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 칠라기
      2001.01.11 22:40
      아래와 같이 하면 됩니다. VAR hTaskBar : integer; BEGIN hTaskBar := FindWindow('Shell_TrayWnd',...
    • cha
    • 2000.12.13 05:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
      2000.12.13 19:05
      cha wrote: > 밖에는 눈발이 날리구 있슴다...^^ > 포커스에 관한 문제인데여... > dbgrid1,dbgrid2,dbg...
    • 액션가묜
      2000.12.13 05:43
      cha wrote: > 밖에는 눈발이 날리구 있슴다...^^ > 포커스에 관한 문제인데여... > dbgrid1,dbgrid2,dbg...
    • 타락천사
      2000.12.13 22:46
      안녕하세여..타락임다..^^ TSession 만 추가해두 원하시는 대루 되지 않을까여? 그래서 안되면.. ...
    • 김종언
      2000.12.13 19:40
      한군데서 접속하면.. 다른곳에서 접속할수 없게... Lock을 걸어여... 이성호 wrote: > 안녕...
    • srookie
      2000.12.13 07:36
      임하나 wrote: > 두 응용프로그램 사이의 정보를 전달 할 수 있는 방법이 있나여 ? > text나 registry말...
    • 윤돌
    • 2000.12.13 03:16
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김종언
      2000.12.13 19:39
      쩝..... 이런 간단한걸 질문하시다니.... HTML 확인하세요.... 거기에 적힌거 지우면 되니깐... 폼...
    • TriCLove
      2000.12.13 19:35
      아래에 나오는 메세지는 html 코드로 만들어지는 것 입니다. ActiveForm을 띄우는 html에서 아래 메세지 ...
    • 윤돌
      2000.12.13 20:16
      제질문은 그게 아니라요... 그 처음부터 HTML생성시 그 문장자체가 안만들어지게 안되냐? 는건데요... 쩝...
    • TriCLove
      2000.12.13 20:26
      제가 알기로는 없습니다. 하지만 자동으로 생성되는 html파일을 그냥 사용하는 일은 없을텐데요. 대개 사...
    • srookie
      2000.12.13 07:32
      곽성현 wrote: > 안녕하세요 > > 델파이에서 함수 사용시 > 결과값을 여러개 받을 수 있는 방법좀 갈...
    • kiwi
      2000.12.13 03:04
      곽성현 wrote: > 안녕하세요 > > 델파이에서 함수 사용시 > 결과값을 여러개 받을 수 있는 방법좀 갈...
    • 김성진
    • 2000.12.13 02:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • linuxwiz
      2000.12.13 02:55
      델파이가 .dcu파일을 찾고 있는 거거든여... 경로에 없는 곳에 .dcu가 있어서리 그렇져 해결 방법은 ...
    • 각시탈
    • 2000.12.13 01:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.12.13 03:01
      자료실에 가보심 FFT 컴퍼넌트가 있습니다. FFT로 검색해보세요. 그게 님께서 원하는 작업을 하는 컴퍼넌...
    • 남주희
    • 2000.12.13 01:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
      2000.12.13 18:42
      안녕하세요. 까마귀입니다. 어떤 DB를 어떻게 사용하고 있는지를 잘 모르겠는데요. 아마 이걸 알려주셨...
    • 남주희
      2000.12.13 20:41
      부족한 질문에 대한 답변 감사합니다. 일단 문제는 해결을 했습니다(만 하루를 꼬박 허비하고....) 코...
    • 최은석
      2000.12.13 01:06
      다음은 브라우저를 실행해서 주어진 URL을 찾아가게 하는 프로시저입니다. uses .., ComObj; va...
    • 꼬마악마
      2000.12.13 01:49
      너무 감사합니다.. 그러나.. 제가 원한건.. 흑흑흑.. ..바탕화면에 인터넷 바로가기를 만드는 건...
    • 최은석
      2000.12.13 02:20
      바탕화면에 바로가기 만들기 { 예제: CreateShortcut('c:winntsystem32notepad.exe', _DESKTOP); } ...
    • 꼬마악마
      2000.12.13 02:25
      최은석 wrote: > 바탕화면에 바로가기 만들기 > { 예제: CreateShortcut('c:winntsystem32notepad.ex...
    • 안나
    • 2000.12.13 00:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 지승현
    • 2000.12.13 00:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아이언
      2000.12.15 01:57
      뭐.. 자세히 설명은 못 드리겠구요.. 제가.. 여기 저기 지나다니면서 얻은 팁입니다.. 물론 제가 작성한 ...
    • 2000.12.12 23:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 2000.12.13 00:49
      먼저 트리뷰에는 팝업메뉴라는 프로퍼티가 있고 거기에 팝업메뉴컴포넌트 걸어주면 별 짓 안해주면 오른쪽...
    • 초보여요.
      2000.12.13 05:01
      알려주신대로 마우스다운 이벤트의 오른쪽 마우스 선택시 처리하였습니다.. 마우스다운 이벤트에 TMouse...
    • 배움이
    • 2000.12.12 23:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김종언
      2000.12.12 23:34
      아직 안나왔습니다...... 배움이 wrote: > 델파이로 리눅스용 어플을 개발해야 되는 상황입니다. > ...