Q&A

  • list index out of bounds(0)... 답변좀 부탁드립니다.
델파이 이제 막 시작한 초짜입니다.
회사서 조회관련 프로그램 작성중 에러가 나서요..
고수님들의 답변을 얻고자 글을올립니다.

문제의 쏘쑤는..
SELECT1.DatabaseName := DataBase1.DatabaseName;
   With SELECT1 Do begin
   SELECT1.Close;
   SELECT1.SQL.Clear;
   SELECT1.SQL.Add(' SELECT  CARD_DT     AS CARDDT,                              ');
   SELECT1.SQL.Add('         COUNT(a)    AS SSUM,                                ');
   SELECT1.SQL.Add('         COUNT(b)    AS KSUM,                                ');
   SELECT1.SQL.Add('         COUNT(c)    AS YSUM,                                ');
   SELECT1.SQL.Add('         COUNT(d)    AS HSUM,                                ');
   SELECT1.SQL.Add('         COUNT(e)    AS BSUM,                                ');
   SELECT1.SQL.Add('         COUNT(f)    AS GSUM,                                ');
   SELECT1.SQL.Add('         COUNT(g)    AS ASUM,                                ');
   SELECT1.SQL.Add('         COUNT(h)    AS LSUM,                                ');
   SELECT1.SQL.Add('         COUNT(CARD_DT) AS CNT                               ');
   SELECT1.SQL.Add('   FROM (                                                    ');
   SELECT1.SQL.Add('         SELECT CARD_DT,                                     ');
   SELECT1.SQL.Add('         decode(card_co_id, ''01'', CARD_DATA) a, decode(card_co_id, ''02'', CARD_DATA) b, ');
   SELECT1.SQL.Add('         decode(card_co_id, ''03'', CARD_DATA) c, decode(card_co_id, ''04'', CARD_DATA) d, ');
   SELECT1.SQL.Add('         decode(card_co_id, ''05'', CARD_DATA) e, decode(card_co_id, ''06'', CARD_DATA) f, ');
   SELECT1.SQL.Add('         decode(card_co_id, ''07'', CARD_DATA) g, decode(card_co_id, ''08'', CARD_DATA) h  ');
   SELECT1.SQL.Add('           FROM  CARD_OUT_NEW                                  ');
   SELECT1.SQL.Add('          WHERE  SUBSTR(CARD_DT, 1, 6) = :hCARDDT              ');
   SELECT1.SQL.Add('            AND  STOR_CD = :hSTORCD                            ');
   SELECT1.SQL.Add('            AND  STOR_CD <> ''01800''                          ');
   SELECT1.SQL.Add('            AND  SALE_AMT <> ''1991''                          ');
   SELECT1.SQL.Add('         GROUP BY CARD_DT, CARD_CO_ID, CARD_DATA) X            ');
   SELECT1.SQL.Add(' GROUP BY CARD_DT                                              ');

   ParamByName('hSTORCD').AsString  := TRIM(edStorcd.Text);
   ParamByName('hCARDDT').AsString  := Trim(MaskEdit1.Text);

   try
    SELECT1.Open;
     if SELECT1.RecordCount = 0 then
       begin
         ShowMessage ('선택한 월 카드매출이 없습니다...');
         SELECT1.Close;
         Exit;
       end;
   except
    Exit;
   end;
  wiCount := SELECT1.RecordCount;
  StringGrid1.RowCount := wiCount + 1;
  For wRet1 := 1 To SELECT1.RecordCount Do
    begin
     StringGrid1.Cells[0, wRet1] := FIELDBYNAME('CARDDT').AsString;
     StringGrid1.Cells[1, wRet1] := FIELDBYNAME('SSUM').AsString;
     StringGrid1.Cells[2, wRet1] := FIELDBYNAME('KSUM').AsString;
     StringGrid1.Cells[3, wRet1] := FIELDBYNAME('YSUM').AsString;
     StringGrid1.Cells[4, wRet1] := FIELDBYNAME('HSUM').AsString;
     StringGrid1.Cells[5, wRet1] := FIELDBYNAME('BSUM').AsString;
     StringGrid1.Cells[6, wRet1] := FIELDBYNAME('GSUM').AsString;
     StringGrid1.Cells[7, wRet1] := FIELDBYNAME('ASUM').AsString;
     StringGrid1.Cells[8, wRet1] := FIELDBYNAME('LSUM').AsString;
     StringGrid1.Cells[9, wRet1] := FIELDBYNAME('CNT').AsString;

     next;
     statusBar1.Panels[0].Text := '데이터 조회가 완료되었습니다.';
    end;
   Button2.SetFocus;
  end;
이겁니다.
아직 초보단계라 어느부분이 문제가 있는것인지 파악이 잘안되더군요.
고수님들의 조언좀 부탁드리겠습니다.

3  COMMENTS
  • Profile
    일그니 2004.10.07 05:59
    닐리리님의 말씀을 참조하시는것도 좋은것 같습니다.

    하지만..

    질문하신 것과 관련해서는
    델파이 디버깅 모드를 사용하시는것이. 더욱 정확하실것입니다.
    해당 이벤트의 시작부분에 F5를 눌러서. 브레이크 포인트를 걸어놓으신후
    실행하세요.

    그리고.
    F8,F7로 하나씩 따라가보세요.
    어느부분이 문제인지 아실수 있습니다.


  • Profile
    박수엽 2004.10.07 20:00
    감사합니다.
    말씀하신대로 해보았더니 어느부분에서 문제가 있는지 확인이 되었고
    해결도 쉽게 할수 있었네요. ^0^..
    정말 고맙습니다.


  • Profile
    nilriri™ 2004.10.07 03:45
    list index out of bounds(0) 는

    배열항목에 해당 하는 아이템이 없어서 발생하는 에러입니다.

    statusBar1.Panels[0] <- 이부분이 에러가 아닌가요?

    ...