Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[12136] 그리드에서 선택 두번 안되게끔 할 수 있나요?
허지훈 [] 1538 읽음    2008-07-19 11:51
계속 걸리는게 많아 잘안되서 그러는데요..
두가지가 궁금해서요..

1 . db 그리드에서 선택이라는 필드(non-db)가 있을때
클릭하면 Y로 바뀌고 다시 클릭하면 Y가 아닌 원상태로 돌아갑니다...
마지막은 Y로 체크된 하나 가지고 저장도 하는 로직인데요...

Y로 선택된 행이 두개 있으면 에러 메시지가 나오게끔 하고 싶거든요...
무조건 Y선택은 하나만 되게끔요...

아래 이벤트는 한번 클릭하면 Y로 바뀌고 다시 클릭하면 Y가 아닌 원상태로 돌아가는 이벤트입니다..
procedure DBGrid1EditButtonClick(Sender: TObject);
begin
  with CDSet_Sum do
  begin
    Edit;
    if FieldByName('SelectCd').Value = '' then
    begin
      FieldByName('SelectCd').Value := 'Y';
    end
    else
    begin
      FieldByName('SelectCd').Value := '';
    end;
    Post;
  end;
end;


2. db그리드 상에서 CDSet_MtrQry의 SelectCd가 'Y' 인 경우만 선택해서 저장하고 싶어요...

CDSet_MtrQry  : 원본 데이터 셋
CDSet_Sum :  원본 데이터에서 선택한 행만 저장

선택모으기 클릭이벤트에서 아래와 같이 작성했는데요..
with CDSet_MtrQry do
     begin
      First;

         while not EOF do
         begin

           if    ( CDSet_MtrQry.FieldByName('SelectCd').Value = 'Y')  then
           begin
             CDSet_Sum.AppendData(CDSet_MtrQry.Data,True);
             Edit;
             Post;
          end;
          Next;
      end;
     
  end;

만약 결과값이 CDSet_MtrQry 가 두개의 행이면 그중에서 한개만 선택해서
한개만 저장하고 싶은데요...
결과를 보면 한개가 아니고 두개가 INSERT되거든요...
선택한 한개만 저장시킬려면 어떻게 하면 될까요???
물론 저장로직은 여기서 나온 행대로 그대로 저장하니까
여기에서부터 결과값이 한개가 나와야 될테데 두개니까 안되는거 같아서요..

고견 부탁드립니다...

+ -

관련 글 리스트
12136 그리드에서 선택 두번 안되게끔 할 수 있나요? 허지훈 1538 2008/07/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.