Q&A

  • 탭페이지에서 데이타셋 핸들링에 관한 질문..도와주세요..흐흑
탭페이지 1, 2, 3 페이지가 있는데..

이중 1번 페이지의 dbgrid에서 특정 row를 선택한것에 대해서만

2페이지의 dbgrid가 조회가 되게 하고 싶은데..



1페이지 에서 2 페이지로 changing 될때 먼저 특정로우를 선택하라는

메세지를 보여줘야 하구요.(근데 이경우 데이타셋이 오픈되면 이미오픈된 데이타셋의

첫 번째 레코드 값으로 포이터가 자동으로 위치가 되더라구요)



그래서 1페이지 그리드에서 특정 로우를 반드시 선택이 되어야만

2페이지로 넘어 갈 수 있고 동시에 1페이지 그리드에서 선택된 로우와

관련된 내용만을 2페이지 에서 보여주고 싶어요..

2, 3 페이지의 관계도 같은 관계입니다..



관련된 어떤 팁이라도 알려 주세요..

부디..여러 고수님들의 도움을..





3  COMMENTS
  • Profile
    하얀까마귀 2000.05.13 00:57
    안녕하세요 하얀까마귀 입니다...



    어제 휴일은 잘 보내셨는지요.. 후후...



    음 말씀하신 내용에서 사용하는 탭의 이벤트는 두개가 있습니다.



    onChanging , onChange



    음.. changing는 Before 이벤트와 비슷하죠.. 여기서 특정 조건을 만족해야만 넘어가게



    할수 있죠..이 이벤트의 파라메터중에서 AllowChange 의 값을 False로 주면 됩니다.



    그럼.. 특정 레코드일때만 넘어가게 하는건 된것 같구요..



    이제 그 값에 따라서 오픈하는건



    onChange에 넣으세요... 같이 넣어도 되긴 하는데.. 페이지가 여러개이면 코딩이 좀



    보기 싫어 질수 있거든요....



    이건 after 이벤트라고 이해하시면 되겠네요.. 바뀐후 발생하는 페이지입니다..



    따라서 페이지인덱스의 값도 변해 잇겠죠??



    답변이 제대로 되었는지 모르겠네요..



    (근데 이경우 데이타셋이 오픈되면 이미오픈된 데이타셋의

    첫 번째 레코드 값으로 포이터가 자동으로 위치가 되더라구요)



    <-- 이말이 이해가 안되서...



    그럼.. 즐거운시간 되세요



    - 하얀까마귀 -





    주희 wrote:

    > 탭페이지 1, 2, 3 페이지가 있는데..

    > 이중 1번 페이지의 dbgrid에서 특정 row를 선택한것에 대해서만

    > 2페이지의 dbgrid가 조회가 되게 하고 싶은데..

    >

    > 1페이지 에서 2 페이지로 changing 될때 먼저 특정로우를 선택하라는

    > 메세지를 보여줘야 하구요.(근데 이경우 데이타셋이 오픈되면 이미오픈된 데이타셋의

    > 첫 번째 레코드 값으로 포이터가 자동으로 위치가 되더라구요)

    >

    > 그래서 1페이지 그리드에서 특정 로우를 반드시 선택이 되어야만

    > 2페이지로 넘어 갈 수 있고 동시에 1페이지 그리드에서 선택된 로우와

    > 관련된 내용만을 2페이지 에서 보여주고 싶어요..

    > 2, 3 페이지의 관계도 같은 관계입니다..

    >

    > 관련된 어떤 팁이라도 알려 주세요..

    > 부디..여러 고수님들의 도움을..

    >

    >

  • Profile
    주희 2000.05.13 02:12
    감사합니다..꾸~벅~~하얀까마귀님..

    알려주신 팁 감사드립니다.



    > (근데 이경우 데이타셋이 오픈되면 이미오픈된 데이타셋의

    > 첫 번째 레코드 값으로 포이터가 자동으로 위치가 되더라구요)

    >

    > <-- 이말이 이해가 안되서...

    >

    이 말은 기준이 되는 1페이지에서 데이타셋이 오픈될때

    자동으로 포인터가 가장 첫번째를 가르키더라구요 .따라서

    내가 특정 로우를 사용자가 굳이 선택하지 않아도 자동(?)으로

    첫번째 로우가 선택이 되어 onchanging 에서 allowchange를 false

    를 해도 다음 페이지로 넘어갑니다..



    참고로 다음과 같이 코딩이 되어 있는 상태입니다..



    procedure TCST31004A.PageControl1Change(Sender: TObject);

    begin

    Screen.Cursor := crHourglass;

    if PageControl1.ActivePage = tabsheet1 then

    begin

    query1.close;

    query1.parambyname('h_user_no').value := edit4.text;

    query1.open; //실제로 페이지 1에서 보여지는 데이타 셋입니다.



    //여기에서 특정한 것을 사용자가 선택해야만 다음 페이지로 넘어가서

    페이지 1의 데이타셋에서 선택된것과 관련된 데이타가 페이지 2의

    데이타 셋에서 조회가 되는 거죠 ..



    if query1.IsEmpty then

    begin

    messagedlg('회선데이타를 찾을 수 없습니다 ',mtwarning, [mbOk], 0);

    Edit1.SetFocus;

    exit;

    end;

    end ;

    end;





    procedure TCST31004A.PageControl1Changing(Sender: TObject;

    var AllowChange: Boolean);

    begin

    ls_user_no := Query1.fieldbyname('user_no').asstring;

    // 페이지 1에 있는 데이타셋에서 측정 user_no 를 가져왔어요..



    ls_user_no2 := Query2.fieldbyname('user_no').asstring;

    // 페이지 2에 있는 데이타셋에서 측정 user_no 를 가져왔어요..





    if length(ls_user_no) = 0 then allowchange := false ;

    // 페이지 1에서 선택이 안되면 페이지 2로 못감

    if length(ls_user_no2) = 0 then allowchange := false ;

    // 페이지 2에서 선택이 안되면 페이지 3로 못감



    end;



    대충 이런식으로 코딩이 되있거든요.... *^^*...맞나요?..쩝!!

    이해 하시겠지요 ?.. 도와주세요..







  • Profile
    하얀까마귀 2000.05.13 03:50
    안녕하세요 하얀까마귀 입니다...



    음.. 우선 changing 에서 어느 텝에서 발생을 하는지를 첵크 하세요...



    이부분은 있어야 합니다... change가 텝1에서도 텝2에서도 텝3에서도 발생 할테니까.



    각각 텝에서 발생할때를 고려해 주셔야 합니다...



    둘째.. change에서 오픈하시는 이유가 아마도 다른 텝에서 query1의 테이블을 건드리는



    것 같은데.. 아마 그래서 갱신된 내용을 가져오기 위해서 오픈하시는 것 같은데....



    이렇게 꼭 해야 하신다면...



    이전의 레코드의 값을 가지고 있는게 좋습니다.



    TBookMark 형 변수를 하나 지정을 하시구요. 물론 이놈은 폼의 private에 들어가야



    되겠죠?



    GetBookmark 로 변수에 값을 저장하고



    GotoBookmark(변수)로 이전의 값을 찾아가면 됩니다...



    쿼리를 갱신하기 이전에



    DisableConstraints을 그래고 오픈한뒤에 EnableConstraints을 하시면 속도도 조금 나아



    질꺼고요...



    그럼 즐거운시간 되세요..



    - 하얀까마귀 -





    • 안희준
    • 2000.05.13 01:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.05.13 02:42
      안녕하세요. 최용일입니다. 타이머를 이용하세요. 타이머에서 [오류]창이 떠있는가를 검색해서 떠 있다...
    • 힙합인
    • 2000.05.13 01:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.05.13 03:16
      힙합인 wrote: > 안녕하세요 저는 슈퍼 왕초보 델파이하는 사람입니다. > 제가 하드에 저장된 DB자료가 ...
    • 어린왕자
      2000.05.13 02:40
      힙합인 wrote: > 안녕하세요 저는 슈퍼 왕초보 델파이하는 사람입니다. > 제가 하드에 저장된 DB자료가 ...
    • 최석기
      2000.05.13 00:46
      확인해보지 않아서 맞는가 모르겠네요.. 아마 다음과 같이 해야 할꺼 같은데... WorkSheet.Range['A1...
    • 이창영
    • 2000.05.13 00:29
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.05.13 01:21
      이재식 Wrote : 안녕하세요? 그런경우가 있을 것입니다. 이유는 like '뭐%'가 사실 Ansi SQL임에도 불...
    • 이창영
      2000.05.13 01:45
      이재식 wrote: > 이재식 Wrote : > 안녕하세요? > > 그런경우가 있을 것입니다. > 이유는 like '뭐%'...
    • 이재식
      2000.05.13 18:53
      > 역시 답변이 빠르군요. 감사! > 하지만 #은 쓸수없군요. 아마도 %만 쓸수있을듯 싶네요. > 제가 몇번해...
    • 바보
      2000.06.23 00:13
      > 죄송합니다. 제가 실수를 했군요. #이 아니라 *입니다. > 죄송합니다. 오타가 발생했군요. > 님의 말씀...
    • 조규춘
      2000.05.13 00:44
      대전왕초보입니다. wrote: > 인덱스가 중복이 되어서들 그렇다고 하는데요.... > 재가 이해가 안되는것은...
    • 2000.05.13 00:43
      대전왕초보입니다. wrote: > 인덱스가 중복이 되어서들 그렇다고 하는데요.... > 재가 이해가 안되는것은...
    • 이은정
      2000.05.12 22:54
      대전왕초보입니다. wrote: > 저는 TABLE를 DATABASE DESKTOP으로 만들었습니다. > 그래서 TABLE이 하드에...
    • azure
    • 2000.05.12 22:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.05.13 00:30
      azure wrote: > 퀵 레포트 중에 QRband나 QRgroup이 포함하고 있는 > DBText나 QRLabel보다 먼저 print ...
    • 레마
    • 2000.05.12 22:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • seagod
      2000.05.13 00:24
      sql을 클리어 하면 쿼리 컴포넌트에는 sql문이 없으니 open하면 에러나 나겠지요? 레마 wrote: > 콤...
    • 주희
    • 2000.05.13 00:47
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.05.13 00:57
      안녕하세요 하얀까마귀 입니다... 어제 휴일은 잘 보내셨는지요.. 후후... 음 말씀하신 내용에서 사...
    • 주희
      2000.05.13 02:12
      감사합니다..꾸~벅~~하얀까마귀님.. 알려주신 팁 감사드립니다. > (근데 이경우 데이타셋이 오픈되면 ...
    • 하얀까마귀
      2000.05.13 03:50
      안녕하세요 하얀까마귀 입니다... 음.. 우선 changing 에서 어느 텝에서 발생을 하는지를 첵크 하세요.....
    • 하얀까마귀
      2000.05.13 01:09
      안녕하세요 하얀까마귀 입니다.. 이것도 몇번 답변한것 같은데.... 지로용지의 경우에 A3용지 크기의...
    • Mr.Q
    • 2000.05.12 21:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.05.12 22:26
      안녕하세요. 최용일입니다. Tab 키와 같은 다이얼로그키는 Key이벤트에서 잡히지 않습니다. 14543번 ...
    • 고보강
    • 2000.05.12 21:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.05.12 21:56
      고보강 wrote: > BDE를 사용한 로컬DB가 있습니다. 작업을 하다 비정상적으로 프로그램이 다운되었을때 작...
    • 강민주
      2000.05.12 22:41
      델초보... wrote: > STringGrid에서 문자열이 길경우 제한을 주고 '...'으로 대체할라구 하는데 > 어떻게...
    • heimdal
    • 2000.05.12 21:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.05.13 01:33
      안녕하세요 하얀까마귀 입니다.. 음.. 이거 설명하자면 쬐끔 길어질것 같네요... 간단하게 설명할께...
    • 한창희
      2000.05.14 13:41
      상현이라는 초보입니다. wrote: > procedure TForm1.Button1Click(Sender: TObject); > begin > With D...
    • 하얀까마귀
      2000.05.13 01:18
      안녕하세요 하얀까마귀 입니다.. 에러는 다른곳이 아니라 SQL문에서 day가 key word라서 생기는 겁니다....
    • 어린왕자
      2000.05.12 20:33
      음...방금 다른 컴퓨터에서 되네요.. 이상타..날씨가 흐려서 컴퓨터가 기분이 조아서 그런가..
    • cos
      2000.05.12 20:43
      황선희 wrote: > > 테이블을 Paradox로 쓰고 있습니다.(Local DB) > > 그런데, current 값을 읽어오...
    • 황선희
      2000.05.13 01:03
      cos wrote: > 황선희 wrote: > > > > 테이블을 Paradox로 쓰고 있습니다.(Local DB) > > > > 그런데...