Q&A

  • [질문] ZEOS RowsAffected

ZEOS 에 관해 또 질문할게요.

 

ADOQuery를 사용하다 ZEOS로 변경해서 기존 프로그램을 수정하는 중입니다.

 

ADOQuery에서 UPDATE 쿼리를 날리고

  ADOQuery.RowsAffected  를 하면 수정된 Row의 수를 리턴합니다.

그런데 Zeor Query를 사용하면 분명 USERMENU Table 수정할 자료가 있고

수정도 성공을 했는데

    if ZQuery1.RowsAffected <= 0 then 에서 0을 리턴해서 Duplicate 오류가 발생합니다.

 

ZEOS 고수님의 한 수 부탁합니다.

 

    ZQuery1.Sql.Clear;
    ZQuery1.Sql.Add('UPDATE USERMENU SET EXCELPRINT = 1');
    ZQuery1.Sql.Add('WHERE USERID = ''' + edtUSERID.Text + '''');
    ZQuery1.ExeCSql;
    if ZQuery1.RowsAffected <= 0 then
    begin
        ZQuery1.Sql.Clear;
        ZQuery1.Sql.Add('INSERT INTO USERMENU(USERID, EXCELPRINT) VALUES(');
        ZQuery1.Sql.Add('''' + edtUSERID.Text + ''',');
        ZQuery1.Sql.Add('1)');
        ZQuery1.ExeCSql;
    end;

1  COMMENTS
  • Profile
    백록화 2013.05.25 01:03
    Zeos 는 써본지 오래되서 관련 이슈는 모르겟고요.. DB 종류가 먼가요? 다른방법으로 바꾸시는게 편하실듯 하네요.. MySQL 의 경우 http://dev.mysql.com/doc/refman/4.1/en/insert-on-duplicate.html  이런 문법이 지원됩니다. 키 기반으로 해서 없으면 인서트 하고 있으면 업데이트 하는거죠. 다른 DB들도 이런게 있는것도 있습니다.

    아니면 select 를 먼저해서 분기 하는것도...