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
[8862] 값이 있으면 update를 없으면 insert를 ...
야망 [] 966 읽음    2003-07-04 18:28
오늘이  벌써  금요일..

나이를 먹을수록 시간이 점점 빨리가는 듯..

쩝.. 죄송(ㅋㅋ 아직 핏덩이랍니다.)

아직 초보라서리..

진도는 잘 안나가구 답답한 마음에..  <(ㅠㅛㅠ)>

각설하구 질문으로 들어가겠씀돠..

폼이 하나 있구여..

그 폼위 2개의 디비 그리드가 있답니다.

특정 버튼을 클릭하면..

왼쪽의 그리드에서 오른쪽의 그리드로..

값을 넘겨주게 되어있답니다.

디비로 저장이 되는거져..

Multi Select도 가능하게 말이져.

근데..

값이 없는 경우엔.. insert를

있는 경우엔 update를 하려 합니다.

var
  i,j:integer;
begin
   // Multi Select 대비
   if DBGrid.SelectedRows.Count>0 then begin
      with DBGrid.DataSource.DataSet do begin
        for i := 0 to DBGrid.SelectedRows.Count-1 do begin
          GotoBookmark(pointer(DBGrid.SelectedRows.Items[i]));
          for j := 0 to FieldCount-2 do begin
            s[i] := Fields[j].AsString;
          end;            { for end }
        end;   { for end }
      end;    { with end }
   end; { if end }

위의 소스는 왼쪽에 있는 그리드에서 primery key 값을 가지구 있는

필드의 값들을 저장하는 부분입니다.

글구..

아래 소스는..

오른쪽 그리드의 primery key 값을 가지구 있는 필드값을

메모컴포넌트에 넣어서리..

왼쪽 그리드의 값들과 for을 사용해서 비교하는 함수의 소스죠..

    for j := 0 to memo.Lines.Count -1 do begin
     for i := 0 to DBGrid.SelectedRows.Count-1 do begin
       if s[i] <> memo.Lines.Strings[j] then begin
          result := true;
       end  { if end }
       else begin
        result := false;
       end;
     end;    { for end }
   end;      { for end }

위와 같이 값을 비교해서..

boolean형태로 넘겨 줍니다.

그리곤..

     db.StartTransaction;
    try
     // 2개의 그리드를 비교해서  값이 같은지 비교하는 함수
      if check(DBGrid2) = true then begin                                    
         showmessage('insert');
         grp_insert(Query1);    // 그룹등록 (insert)
      end  { if end }

        // 2개의 그리드를 비교해서  값이 같은지 비교하는 함수
      else if check(DBGrid2) = false then begin
         showmessage('update');
         grp_update(Query1);  // 그룹 업데이트 (update)
      end;  { if end }

      db.commit;
      showmessage('저장성공');
    except
      db.Rollback;
      showmessage('저장실패');
    end;

위와 같이 왼쪽의 디비 그리드에서

셀렉트한 값이 오른쪽 디비 그리드에

있으면..

update를

없으면

insert를 하려고 합니다.

그런데 안타깝게도

잘 안되는군여.

ㅠ.ㅠ

도와 주세여~~

+ -

관련 글 리스트
8862 값이 있으면 update를 없으면 insert를 ... 야망 966 2003/07/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.