Q&A

  • 한번에 여러레코드를 update하기....
가능한가요??????????

  With ADOQuery1 do Begin    
       Close;
       SQL.Clear;
       SQL.Add('UPDATE Table');
       SQL.Add('SET Date = :Date, Class = :Class, S3 = :S3');
       SQL.Add('WHERE 날짜 = ''' + DateTemp + '''');
    
    for i:=0 to 39 do begin
        Parameters.ParamByName('Date').Value := DateTemp;
         Parameters.ParamByName('Class').Value := RealGrid.Cells[0,i].AsString;
         Parameters.ParamByName('S3').Value := RealGrid.Cells[2,i].AsString;
    
       ExecSql;
      end;
    end;
이렇게 하면 40개가 수정되긴 하는데... 전부 마지막 Row인 40번째인것만 40개가 들어가요...!!! 어케 방법이 없나요????? 고수님들 좀 도와주세요(__)
3  COMMENTS
  • Profile
    김도성 2003.11.15 04:07
    제가 예전에 했었던것 같은데요

    Select 하는곳에서 파라미터를 받아오시겠죠?
    만약 select Query 컴포넌트가  Query1이라면
    Select문자 아래
    query1.Next <----  요거 추가해줘 보세요
    될껍니다.  그래서 레코드 총수를 구하시던지 아니면
    With문 쓰셔서 EOF일때 까지 루프돌리시면 됩니다.

    첨올리는 답변이라..... ㅡㅡ;;  
    난 언제나 고수에 길로 가려나....  멀고도 험한...


  • Profile
    이윤도 2003.11.15 05:44
    update쿼리에서 다시 검색해서 파라미터를 받은거여서....여!!!
    알고보니 ExecSQL은 한번에 넘겨버리는 같아서리.....!!!
    그러니까 아래코딩처럼하면 40개를 한번에 넘기고
    또 40개를 한번에 넘기고해서 마지막 Row값을 넘겨버리니까 마지막값만
    40개가 되는거였어요!!!!!! 어케해야하죠?????
    도저히 감히 않잡히네요!!!!!!!!
    다시 한번만 도와주세요!!!!!(__)

  • Profile
    성더기 2003.11.16 00:36
    쿼리를 40번을 실행하면 되는거죠?
      With ADOQuery1 do Begin    
         for i:=0 to 39 do begin
            Close;
            SQL.Clear;
            SQL.Add('UPDATE Table');
            SQL.Add('SET Date = :Date, Class = :Class, S3 = :S3');
            SQL.Add('WHERE 날짜 = ''' + DateTemp + '''');
            Parameters.ParamByName('Date').Value := DateTemp;
            Parameters.ParamByName('Class').Value := RealGrid.Cells[0,i].AsString;
            Parameters.ParamByName('S3').Value := RealGrid.Cells[2,i].AsString;
            ExecSql;
         end;
       end;