Q&A

  • ACCESS 에서 쿼리문 오류좀 봐주세요..
안녕 하세요.. ^^

OS : 윈도우 2000
개발도구 : 델파이 6
DB : ACCESS

<!--CodeS-->
with qrRank do begin
    Close;
    SQL.Clear;
    SQL.Add('Select Gs.BunHo, (Gs.FChongJum+Gs.FChongJum2) as Total ');
    SQL.Add('  From GSum Gs ');
    SQL.Add(' Where Gs.YYYY = ''' + YEAR + ''' ');
    SQL.Add('   and Gs.Bunya = ''' + qrBunya.FieldByName('Code').AsString + ''' ');
    SQL.Add('   and Gs.Sex = ''' + IntToStr(iSex) + ''' ');
    SQL.Add('   and Gs.FHap_Ck = ''1''');
    SQL.Add('   and Gs.FHap_Ck2 >= ''0''');
    SQL.Add('   and Gs.FHap_Ck2 <= ''2''');
    SQL.Add('Order By Total Desc');
    Open;
end;
<!--CodeE-->

위에처럼 쿼리를 만들었는데 오류가 납니다.  "Table is read only" 이런 오류가 나네요..
제가 보기에는 (Gs.FChongJum+Gs.FChongJum2) as Total  <- 요부분이 문제 같은데..
둘다 숫자 형(실수(Double)) 잡혀 있거든요..

당연히 계산 되어야 되지 않을까요??

아님 다른 문제라도 있나요??

부탁드립니다.. 그럼..
4  COMMENTS
  • Profile
    장우석 2005.12.24 01:26
    이부분은 쿼리에 문제가 없어 보입니다.
    그러나 쿼리의 Properties 에 RequesLive가 있습니다.
    그곳이 True 여야 합니다.

  • Profile
    김병윤 2005.12.23 23:17
    그러고 보니 쿼리문에 약간에 실수가 있긴하네요

    <!--CodeS-->
    [ 원본SQL문 ]
    SQL.Add('Select Gs.BunHo, (Gs.FChongJum+Gs.FChongJum2) as Total '
               + '  From GSum Gs '
               + ' Where Gs.YYYY = ''' + YEAR + ''' '
               + '     and Gs.Bunya = ''' + qrBunya.FieldByName('Code').AsString + ''' '
               + '     and Gs.Sex = ''' + IntToStr(iSex) + ''' '
               + '     and Gs.FHap_Ck = ''1'''
               + '     and Gs.FHap_Ck2 >= ''0'''
               + '     and Gs.FHap_Ck2 <= ''2'''
               + '  Order By Total Desc'); // <-- Alias로 별칭을 붙인 Total로 소트가 안되네요!!
    <!--CodeE-->

    <!--CodeS-->
    [ 변경SQL문 ]
    SQL.Add('Select * from ( '
               + 'Select BunHo, (FChongJum+FChongJum2) as Total '
               + '  From GSum '
               + ' Where YYYY = ''' + YEAR + ''' '
               + '     and Bunya = ''' + qrBunya.FieldByName('Code').AsString + ''' '
               + '     and Sex = ''' + IntToStr(iSex) + ''' '
               + '     and FHap_Ck = ''1'''
               + '     and FHap_Ck2 >= ''0'''
               + '     and FHap_Ck2 <= ''2'''
               + ' ) Order By Total Desc');
    <!--CodeE-->

    그런데 저것 때문에 "Table is read only" 이런 오류가 나지는 않는데요...
    문제 해결되면 좀 일러주세요...^^ 뭐가 문제였는지 궁금하네요
  • Profile
    박홍재 2005.12.23 14:15

      --> 이부분이 Double 형이라면 이렇게 바꾸어야 겠지요. 아니면 문자형이라면 위에 처럼 +로 해서 구분을 해 주셔야 하구요.
        SQL.Add(' and Gs.FHap_Ck = 1')
        SQL.Add(' and ( Gs.FHap_Ck2 >= 0')
        SQL.Add(' and Gs.FHap_Ck2 <= 2)')
        SQL.Add('Order By Gs.Total Desc');

    그리고 MDB 자체가 설정이 잘못 되어있는거 같습니다. Access로 열어서 DB 설정을 보심이 좋을 거 같습니다. 쿼리 자체에는 별다른 문제점은 보이지 않습니다. 참 ORDER BY 부분이 필드를 합쳐진 것에 대해서는 먹지 않는 군요. 다른 부분으로 테스트를 해 보니 그러네요. 아무튼 그럼^^
  • Profile
    김병윤 2005.12.23 05:35
    쿼리문 자체는 그다지 잘못된 부분을 찾을 수가 없네요

    (의심이 가시면 빼고 쿼리를 돌려보셔요...)

    (제 생각에도...^^;)


    계속 같은 현상이 생긴다면
    쿼리문 오류보다는 MDB파일이 읽기전용이 아닐까 살짝...의심이 가네요...^^
    (읽기전용이라도...select는 되지 않나? 싶은디;;)

    ㅎㅎ 퇴근해야지...ㅡ.ㅡv