Q&A

  • DBGrid에 있는 모든 내용을 한번에 디비로 저장하려면..
어떻게 해야 하나요?
알려주세요..
3  COMMENTS
  • Profile
    김성원 2002.05.17 13:57
    Dbgrid에 내용이 나왔다면 이미 어떤 Db에든 내용이 있다는 거고여.
    그내용을 이미 검색을 해서 화면에 보여 주었다는 거겠져..

    따라서 그내용을 검색한 조건 그대로 다른 디비에 넣어주면 되는거니까 아래 처럼 쿼리를 네려주면 될꺼 같네염.. 적다보니.. 아래분이 답변을 해주셨네염.

    insert into 새로운디비
    select  * from  검색할 디비
    where 검색조건

    그냥 적는김에 참고나 하시라고..
  • Profile
    머슴 2002.05.17 05:42
    제 질문을 잘이해를 못했을수도 같은 느낌 인데요..
    현재의 질문이 A 테이블에서 쿼리한 결과를 그대로 B 테이블로
    insert하는 과정이란 전제로 이야기를 하겠습니다...

    대략적으로 코딩을 해보면....

      QUERY1.First;

      while NOT (QUERY1.EOF) do
       begin
        
          with QUERY2 do
           begin
             Append;
               FieldByName('QUERY2의필드1').AsString  :=    
                     QUERY1.FieldByName('QUERY1의필드1').AsString;
               <중략>
             FieldByName('QUERY2의필드N').AsString  :=            
                    QUERY1.FieldByName('QUERY1의필드N').AsString;
             post;
            ApplyUpdate;
         end;
        
        QUERY1.Next;
       end;

      간략히   Query1(DBGrid에 조회된것을 ...) 오픈한뒤에...

      그것을  Query2에 연결된 DB로 하나씩 붙이는 과정을 반복합니다...

      그런데 이런 방법은 최악의 방법이라고 하던군요...

    왜냐하면 자료가 1000개이면 1000번의 트랜잭션이 일어나기 때문에
    그렇습니다...

    조회된 조건을 그대로 읽어서 그걸 바로 insert하게 되면 1번의 트랙잭션
    으로 해결을 볼수 있겠지요...

      insert into 테이블2
      (테이블2의 필드1,....,테이블2의 필드n)
    select
      테이블1의 필드1,....,테이블1의 필드n
    from 테이블1
    where DBGrid의 조회조건;

    으로 하시면 될것 같습니다....

    원하시는 답이 아니면 우짜지요... 나도 열심히 쳤는데...

  • Profile
    귄펭이지루 2002.05.17 18:03