Q&A

  • 쿼리문제.. 같은값을 가진 필드가 여러개???
고민하다가 올립니다.
A, B 2개의 테이블이 있습니다.
A필드와 B필드에서 같은 조건을 따져
구분을 짓고 싶은데 중복되는 값에 대한 처리 문제입니다.

A와 B의 테이블에서 동명, 본번, 부번을 검색해서 같은 값이 있으면
A테이블의 NO1의 데이타값을 B테이블의 NO2라는 필드에 업데이트 시키는 내용입니다.

근데 아래와 같은 방법으로 하니깐 중복되는 데이타는 그냥 넘겨버리더군요
예를 들자면
"가동 100-1번지"라는 값을 가진 필드가 A에는 한개뿐이지만 B에는 1개이상이 될 수 가 있더군요.
아래와 같은 방법으로 쿼리를 실행하면 B테이블에서 같은 값이 몇개가 되더라도 한 필드에만 업데이트가 됩니다.
어떤 방법으로 접근을 해야할까요? 조언 부탁드립니다.
DB는 ACCESS입니다.

소스일부내용입니다.

  try
  database1.StartTransaction;
  with query1 do begin
    Close;
    SQL.Clear;
    SQL.Add(' select * from A ');
    Open;

    while not EOF do begin
      with query2 do begin
        Close;
        SQL.Clear;
        SQL.Add(' select * from B ');
        SQL.Add(' where ');
        SQL.Add(' 동명=:동명 ');
        SQL.Add(' and 본번=:본번 ');
        SQL.Add(' and 부번=:부번 ');
        Prepare;

        ParamByName('동명').AsString := Query1.FieldByName('동명').ASString;
        ParamByName('본번').AsString := Query1.FieldByName('본번').ASString;
        ParamByName('부번').AsString := Query1.FieldByName('부번').ASString;
        Open;

        with Query3 do begin
          Close;
          SQL.Clear;
          SQL.Add(' Update B ');
          SQL.Add(' set ');
          SQL.Add(' NO2=:NO2 ');
          SQL.Add(' where ');
          SQL.Add(' ID=:ID ');
          Prepare;

          ParamByName('NO2').AsString := Query1.FieldByName('NO1').ASString;
          ParamByName('ID').AsString := Query2.FieldByName('ID').ASString;

          ExecSQL;
        end;
      end;
      Next;
    end;
  end;
  database1.Commit;
  Except on Exception do
    database1.Rollback;
  end;
  ShowMessage('Completed');
end;
1  COMMENTS
    • 궁금이
    • 2003.02.04 21:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.02.05 06:23
      ClientSocket의 Receive 이벤트를 사용해서 데이터를 받으심이 좋을듯합니다. 만약 타이머를 사용할때 시스...
    • 강석찬
    • 2003.02.04 20:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강석찬
      2003.02.05 00:20
      해결했습니다 -_-;;
    • 성더기
      2003.02.05 03:50
      QRRICHTEXT 의 프로퍼티중에 AutoScretch(맞나?) 그걸 True로하고 출력해보세엽..^^
    • 최진술
      2003.02.06 01:55
      감사합니다!  AutoScretch문제와 DetailBand의높이에 문제가 있었네요! 문제해결했습니다!
    • 최임정
      2003.02.04 21:11
      혹시... 퀵레포트의 object inspector 에서 PrinterSettings 의 옵션들중에 First Page와 Last Page...
    • 최진술
      2003.02.06 01:58
      감사합니다!  AutoScretch문제와 DetailBand의높이에 문제가 있었네요! 문제해결했습니다
    • KDDG_BaSTaD
    • 2003.02.04 20:14
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.02.05 10:32
      예전에 여기저기서 찾아서 바탕화면에 배경넣기했던건데... 참조하세요... unit Unit1; interface...
    • 구창민
      2003.02.05 04:05
      저 같으면 그냥 윈도그의 위치를 중앙에 두고 Form 스타일을 bsNone 로 만들고 움직이지못하게 만든...
    • KDDG_BaSTaD
      2003.02.05 18:42
      ==> ZZOM님.. 민님 감솨합니다.. 리플을 ㅠ_ㅠ.. 배경화면 넣기네요 ^^; 배경화면 넣기는 제가 만들어...
    • 정주희
    • 2003.02.04 19:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2003.02.04 19:00
      안녕하세요 하얀까마귀 입니다. Components 와 ComponentCount 를 이용하시면 될것 같네요.. 자세...
    • 구창민
      2003.02.04 19:00
      for i := 0 to ComponentCount do begin   if Components[i] is TEdit then   beg...
    • KDDG_hyun
      2003.02.04 19:30
      for i := 0 to ComponentCount do 여기에서요 리스트 인덱스 바운드 에러가 나드라구요 그래서 for i...
    • 구창민
      2003.02.04 20:19
      ㅋㅋ 막썼더니 그렇게 되는군.. ComponentCount - 1 하는게 맞다 왜냐면 시작이 0 부터니까 갯수는 ...
    • KDDG_hyun
      2003.02.04 20:44
    • 구창민
      2003.02.04 21:16
      쓰고보니 판넬의 자식들을 찾으려면 그렇게 하면 안된다. 아래처럼 for i := 0 to Pane1.ControlCou...
    • 김민아
    • 2003.02.04 18:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2003.02.04 18:48
      안녕하세요 하얀까마귀 입니다. 구조체의 변수가 로그인폼에 있는것 같은데... 첫번째방법은 메인폼...
    • 알롱
    • 2003.02.04 18:01
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2003.02.05 00:06
      number 가 문자열일 경우는 Order by 하세여.. select number, name, deposit, withdr ,   ...
    • 알롱
      2003.02.05 00:23
      답변 감사합니다. number는 자동증가 필드입니다. 수고하세요
    • 김진호
    • 2003.02.04 06:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재훈
      2003.02.04 09:32
      저도 관심이 있어서 "DirectX8.0(한글판)도움말"다운 받아놓고 한번도 보지 못했네요... 일본어로 번역된...
    • 김진호
      2003.02.04 21:17
      .
    • 이충무
    • 2003.02.04 06:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.02.04 22:07
      일단 첫째 첫번째질문은 DB Connection을 공유하는 것이 맞습니다. 둘째는 두번째방법을 해도 큰 ...
    • 이충무
      2003.02.05 01:16
      먼저 답변 감사합니다.. 그런데, 제가 공력이 딸려서인지 5번째 방법을 잘 모르겠습니다.. 조금만 더 ...
    • 이경아
    • 2003.02.04 04:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하병준
      2003.02.04 23:10
      예를 들어 a  라는 테이블에 001  라는 데이터가 잇는데 b 라는 테이블에 001 ...
    • 박성훈
      2003.02.04 04:29
      안녕하세요? 질문하신 내용이 좀 애매한데요. 혹시 필터를 말하는 것인가요? 필터는 TQuery나 TTable의...
    • 임형호
      2003.02.04 17:58
      첫번째 질문   DBGrid에는 그런기능을 지원하지 않는걸로 아는데요.  그렇다고 방법...
    • 김민아
    • 2003.02.04 03:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.04 03:52
      안녕하세요~ 구창민입니다. 질문의 너무 간략하군요. 구조체 값을 넘긴다는 말씀은 특정 폼에 있는 ...
    • 전원이
    • 2003.02.04 03:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.02.04 12:19
      10061은 소켓연결이 되지 않았을경우이거나 연결후 연결이 끊긴상태입니다. 연결을 복원시킬 방법은 관리...
    • 김동석
    • 2003.02.04 03:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2003.02.04 04:31
      안녕하세요? Tools-Environment에서 경로설정이 제대로 되어있는지 확인하시구요. rx*.bpl파일을 시스...
    • 최은규
    • 2003.02.04 02:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임우식
      2003.02.05 01:09
      서버가 느릴수도 있구요. mysql연결을 ODBC로 하면 원래 느리고요.-zeos로 연결하면 빨라요... 그런데 아...
    • 이경남
    • 2003.02.04 01:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.02.04 06:58
      485통신은 1:N이라는 개념보다는 어떤 장비에게 준비신호를 준다는 개념에서 틀리지여.. 1:N이라는 개념...
    • KDDG_RNStone
      2003.02.04 03:53
      저도 초보라 이렇다 말씀 드릴 순 없지만 한 4년 전 쯤 한번 써 본 기억이 납니다. 걍 메인에 해당되...
    • 박성훈
      2003.02.04 04:37
      안녕하세요? 윗쪽에 rxLib설치 에러 질문에 대한 답을 참고해 보세요.
    • 용이...
    • 2003.02.04 01:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.02.05 06:25
      위에 질문과 중복되는 질문이네여..