Q&A

  • 값이 있으면.. insert를 없으면 update
오늘이  벌써  금요일..

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

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

아직 초보라서리..

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

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

폼이 하나 있구여..

그 폼위 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를 하려고 합니다.

그런데 안타깝게도

잘 안되는군여.

ㅠ.ㅠ

도와 주세여~~
1  COMMENTS
  • Profile
    KDDG_ZZOM 2003.07.05 04:16
    무식하지만 저는 이런식으로 합니다...

    먼저 입력을 한다...

    만약에 있으면 중복오류코드를 리턴시키므로
    다시 업데이트명령을 한다... 정상이면 그냥 끝나고...

    무식하지만 제일 편한것같아서...

    즐프하세요...


    • 김준영
    • 2003.07.05 19:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.07.06 03:31
      안녕하세요 언제나 초보 바보감자입니다.. 윈도우 의 메세지 큐에 바로 다이렉트로 메세지를 박아주는놈이...
    • neperz
    • 2003.07.05 19:38
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이승근
    • 2003.07.05 08:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2003.07.06 03:14
      footer 에 있는합계부분을 summary 부분에 넣으시면될거같은데요 별다른 코딩이 없어서 좋지만 단점은 ...
    • 박관우
    • 2003.07.05 06:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김상경
    • 2003.07.05 04:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.07.06 03:28
      안녕하세요 언제나 초보 바보감자입니다.. 필터그래프에디터라고 DIrect X 를 깔면 생기는 프로그램이있습...
    • 김상경
      2003.07.07 19:16
      ㄴㄴ
    • KDDG_ZZOM
      2003.07.05 04:12
      테이블구성이랑 인덱스는 어떻게 되어있나요? 글구 처리방식은 어떤식으로 했나요??? 1000건이면 별루 ...
    • 남궁혁
    • 2003.07.05 03:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.07.05 04:16
      무식하지만 저는 이런식으로 합니다... 먼저 입력을 한다... 만약에 있으면 중복오류코드를 리턴시키...
    • 박대석
    • 2003.07.05 03:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
    • 2003.07.05 02:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.07.05 02:52
      안녕하세요. 최용일입니다. 저도 이번에 델파이 7쓰는데... 있던데요... dclqrt70.bpl =>QuickRep...
    • 브래드
    • 2003.07.05 02:26
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_RNStone
      2003.07.05 02:49
      당연히 숫자는 그냥 써도 에러가 안나겠죠. 우리가 숫자값 변수에 넣을때와 문자열 넣을 때를 생각해 보...
    • 한용석
      2003.07.05 02:46
      Table1.Filter := 'ID2 = ''LOT12'' ' 소스 상태에서는 이렇게 써보세요 사실상 String 값으로는 ID2 = '...
    • 브래드
      2003.07.05 03:33
      답변 감사합니다.. 그런데 한가지만 더 허접한 질문 하겠습니다. Data중에 아무 글자나 맞으면 검색을 ...
    • 못난이
    • 2003.07.05 02:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • LuckyBoy
      2003.07.05 02:48
      델파이 자체는 한글판이니.. 중국어판이니 하는 것이 없는 것으로 알고 있습니다.. 델파이는 그냥 영문판...
    • 구경덕
      2003.07.05 02:17
      안녕하세요!!! 저는 그런 경험은 없지만 참고로 몇자 적습니다. 델파이 자체가 중국어인지 애플이 중국...
    • 최용일
      2003.07.05 02:25
      안녕하세요. 최용일입니다. 아래와 같이 해보세요... const     Vertices: arr...
    • 박영목
      2003.07.05 02:44
      최용일씨  안뇽..... 무지...   감사..... ㅋㅋㅋ.... 오늘 밤까지 다 해야 하는데...
    • 안복환
    • 2003.07.05 01:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이광철
      2003.07.05 06:15
      printer object를 사용하여 출력을하면 Enddoc에서 말씀하신대로 page skip이 됩니다.. Dot 프린터나...
    • 한용석
      2003.07.05 02:19
      TeeChart는 제가 보기에는 나름대로 유용한 컴퍼넌트입니다 엑셀의 차트나 fxChart와 비교해도 손색이 없...
    • 김양원
    • 2003.07.04 23:39
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.07.05 02:28
      안녕하세요. 최용일입니다. #13을 #13#10으로 바꾸어 보세요... 문장을 표시하는 컴포넌트나 함수에...
    • 김양원
      2003.07.05 02:37
      제가 질문이 잛았네요. 문장1♪ 문장2♪ 는 스트링 리스트에 저장된 값이구요. 그 스트링리 ...
    • 최용일
      2003.07.05 02:48
      안녕하세요. 최용일입니다. 흠~ 그렇군요... StringReplace란 함수를 써보세요... var   ...
    • 김양원
      2003.07.05 03:19
      데이타 셈플을 추가 하였습니다. 첨부자료를 editplus 에서 오픈하면 '♪'가 추가되어 나옵니다. 첨부자...
    • mute
      2003.07.05 04:57
      쩝.... ㅡㅡ; 읽어오는 방법문제입니당... 걍 LoadFromFile() 로 불러오면 ♪을 엔터로 미리 처리해서 가...
    • 최용일
      2003.07.05 04:37
      안녕하세요. 최용일입니다. 아마 EditPlus에서는 '♪'를 지원을 안하나 보네요... '♪'이게 #13인지 #10인...
    • 홍성락
      2003.07.04 20:20
      hsr////////////////////////////////////////// GetWindowsDirectory함수를 써보세요. 이 종류를 help에...
    • 김정식
      2003.07.04 20:46
      ..