Q&A

  • 이 쿼리문 보시고 조언좀 해주세요.
with qryFind do
  begin
    Close;
    Sql.Clear;
    Sql.Add('SELECT b.NM P_NM, b.NM P_NM1, c.SE_NM1 P_SEMOK, ');
    Sql.Add('GIBUN, GWASE_DD, HANG_CD, ');

    //과세번호 '-'삽입
    Sql.Add('GOJI_NO1||''-''||GOJI_NO2 P_GOJI, ');

    //주민번호 '-' 삽입
    Sql.Add('SUBSTR(JUMIN_NO, 0, 6)||''-''||SUBSTR(JUMIN_NO, 7, 13) P_JUMIN, ');

    //과세 년월의 년월 구분
    Sql.Add('SUBSTR(GWASE_CYM,0,4)||''년''||SUBSTR(GWASE_CYM,5,2)||''월'' p_GWASE, ');

    //납부기한 년월일 구분
    Sql.Add('SUBSTR(NAP_DT, 0, 4)||''년''||SUBSTR(NAP_DT, 5, 2)||''월''|| ');
    Sql.Add('                              SUBSTR(NAP_DT, 7, 2)||''일'' P_NAP,  ');

    //납기후 날짜 년월일 구분
    Sql.Add('SUBSTR(AFT_DT, 0, 4)||''년''||SUBSTR(AFT_DT, 5, 2)||''월''|| ');
    Sql.Add('                              SUBSTR(AFT_DT, 7, 2)||''일'' p_AFT, ');

    //소액불 (구분 0 = N, 1 = Y)
    Sql.Add('DECODE (SMALL_YN, ''0'', ''N'', ');
    Sql.Add('                  ''1'', ''Y'') P_SMALL, ');

    //감액분 (0 = 전액, 1 = 일부)
    Sql.Add('DECODE (GAMEK_YN, ''0'', ''전액'', ');
    Sql.Add('                  ''1'', ''일부'') P_GAMEK, ');

    //자동납부신청구분 (0 = N, 1 = Y)
    Sql.Add('DECODE (AUTO_YN, ''0'', ''N'', ');
    Sql.Add('                 ''1'', ''Y'') P_AUTO, ');

    //기분 (1 = 정기, 2 = 수시)
    Sql.Add('DECODE (GIBUN, ''1'', ''정기'', ');
    Sql.Add('               ''2'', ''수시'') P_GIBUN, ');

    Sql.Add('a.BUBIN_CD, a.NAME, a.SAUP_NO, ');
    Sql.Add('a.SANGHO, a.BOSS, a.MGT_NO, a.MDESC, a.GWASE_GU, a.BGAM_CD, a.AUTO_YN, ');
    Sql.Add('a.DATA_GU, a.NAP_DT, a.AFT_DT, a.TAX_AMT, a.AFT_AMT, ');
    Sql.Add('a.CHE_AMT, a.BON_AMT, a.GBON_AMT, a.BON_YN, a.JO1_AMT, a.GJO1_AMT, ');
    Sql.Add('a.JO1_YN, a.JO2_AMT, a.GJO2_AMT, a.JO2_YN, a.JO3_AMT, a.GJO3_AMT, ');
    Sql.Add('a.JO3_YN, a.JO4_AMT, a.GJO4_AMT, a.JO4_YN ');
    Sql.Add('FROM AC0100 a, AA0100 b, AA0300 c');
    Sql.Add('WHERE ROWNUM < 10 AND (a.BUBIN_CD = b.CODE AND b.GUBUN = ''132'') ');
    Sql.Add('AND a.semok_cd = c.semok_cd1 ');

    //이름으로 찾기
    if edtName.Text <> '' then
      Sql.Add('AND a.NAME = '''+ edtName.Text +''' ');
    //주민번호로 찾기
    if mkedtJumin_no.Text <> '' then
      Sql.Add('AND a.JUMIN_NO = '''+ Trim(mkedtJumin_no.Text) +''' ');

    Open;
  end; //with end;
자세한 설명이 있어야 되겠지만, 질문하는 저도 헷갈리는 터라 할수가 없는점 양해해주시구요. 컴파일 에러는 안나는데... 저거 하면 결과물이 안나옵니다 ㅠ.ㅠ. 혹시 뭔가 이상이 있는건 아닌지?  많은 님들의 조언을 기다리겠습니다.
3  COMMENTS
  • Profile
    조복기 2002.03.20 09:14
    이런경우에는 sql문을 텍스트로 저장해서
    sql+같은 곳에서 테스트해보시기 바랍니다..
    아마도 제가 생각하기엔 띄어쓰기 문제로 보이네요..
    ...
      qryFind.Sql.SaveToFile('c:test.sql');
      open;
    ...
  • Profile
    강환춘 2002.03.20 19:24
    사용 디비는 오라클이거든요.
    음 쿼리문을 작성할때는 띄어쓰기 문제또한 생각해야
    되는 건가요? 그런건 몰랐는데 ㅜ.ㅜ
    아! WHERE절에 name과 jumin_no 로 비교하는 부분을
    하지 않으면 결과물이 쫙 나옵니다. name과 jumin_no가
    키필드가 아니거든요. 혹 그거때문에 그런건 아닌지요?
  • Profile
    나두초보!! 2002.03.20 19:39
    파라미터로 처리하고..
      값 대응 해보세여..

      Sql.Add('AND a.NAME = :edt');
      parambyname('edt').value := trim(edtname.text);
      open;