자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi StringGrid에 RowCount수가 건수는 447개인데 최대 190개까지밖에 안나옵니다.
2017.10.26 15:34
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
델파이 완전 초보자인데 델파이 고수님들의 해결을 고대하고 있습니다.
StringGrid에 검색된 결과를 표현하는데,, 검색된 건수는 446개인데,,
StringGrid에는 190개 밖에 표현이 않됨니다. 즉 Rwo수는 건수대로 446개로 나타납니다.
그런데 190개까지는 데이터가 제대로 표시되는데,, 그 이후는 모두 공백입니다.
혹시 StringGrid에서 표현되는 숫자를 지정하는 곳이 있는가 찾아보니 없는것 같아
고수님들에게 질문을 합니다. 좋은 해결책 부탁드립니다.
개발환경은 Windows7이고 델파이 버젼은 Embarcadero® Delphi 10.1 Berlin 입니다.
개발은 Delphi 교재 258페이지의 Stringgrid의 내용을 참조하여 작성했습니다.
교재에는 오류가 없으니까 데이터가 표현되는데 다른 속성 지정에 문제가 있을까요?
작성된 코드는 다음과 같습니다.
with qryAccountH do
begin
Close;
SQL.Clear;
SQL.ADD('SELECT * ');
SQL.ADD('FROM npl_ACCOUNT_H ');
SQL.ADD('WHERE ACCT_NBR = :acct_nbr ');
SQL.ADD('ORDER BY TX_DT,TX_SEQ_NBR ');
ParamByName('acct_nbr').AsString := edAccntNbr.Text ;
Open;
end;
qryAccountH.Last; //최종 데이터까지 가져오기 위한 처리
edTotCnt.text := IntToStr(qryAccountH.RecordCount);
for I := 1 to qryAccountH.RecordCount do //초기화 처리
begin
StrAccountH.Cells[0,i] := '';
StrAccountH.Cells[1,i] := '';
StrAccountH.Cells[2,i] := '';
StrAccountH.Cells[3,i] := '';
StrAccountH.Cells[4,i] := '';
StrAccountH.Cells[5,i] := '';
StrAccountH.Cells[6,i] := '';
StrAccountH.Cells[7,i] := '';
StrAccountH.Cells[8,i] := '';
end;
StrAccountH.RowCount := qryAccountH.RecordCount + 1;
qryAccountH.First; //위치를 제일 처음으로 가서
for I := 1 to qryAccountH.RecordCount do
WITH StrAccountH do
begin
Cells[0,i] := IntToStr(i);
Cells[1,i] := Copy(qryAccountH.FieldByName('TX_DT').AsString,1,4);
Cells[2,i] := Copy(qryAccountH.FieldByName('RCKNG_DT').AsString,1,4);
Cells[3,i] := qryAccountH.FieldByName('TX_SEQ_NBR').AsString; //순번
Cells[4,i] := qryAccountH.FieldByName('tx_tp_g').AsString; //거래구분
Cells[5,i] := qryAccountH.FieldByName('amt_tpcd_des').AsString; //계정과목명
Cells[6,i] := qryAccountH.FieldByName('amt_tp_cdNm').AsString; //금액유형
Cells[7,i] := FormatFloat('0,',StrToInt(qryAccountH.FieldByName('Tx_Amt').AsString)); //처리 금액
Cells[8,i] := qryAccountH.FieldByName('tpcd_des').AsString; //적요
qryAccountH.Next;
end;
댓글 3
-
김원경
2017.10.26 15:48
-
AllwaysHappy
2017.10.27 09:53
감사합니다.
DBGrid로는 모두 데이터가 나타납니다. 건수는 440여건입니다.
그래서 이상해서 For문에 300이라는 임의의 숫자를 임력해서 실행시키니까 컴파일 에라가 발생합니다.
내용은 Subrange bounds라는 메세지입니다. 이 뜻은 무슨뜻인가요?
StringGrid에서 표시할 수 있는 숫자에 제한이 있나요?
아니면 속성에서 그에 대한 값을 정의해야 하나요?
좋은 해결책 부탁드립니다. 감사합니다.
오늘도 즐거운 하루되십시요~~~
-
AllwaysHappy
2017.10.27 10:13
감사합니다. 친절한 답변 너무 고맙습니다.
For문의 변수 값의 속성을 byte로 정의해서 나타난 현상이었습니다.
정수로 변경한 후에 정상적으로 출력됩니다.
빠른 답변에 다시한번 감사드립니다.
오늘도 즐거운 하루되십시요!!!!
Delphi StringGrid에 RowCount수가 건수는 447개인데 최대 190개까지밖에 안나옵니다.
2017.10.26 15:34
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
델파이 완전 초보자인데 델파이 고수님들의 해결을 고대하고 있습니다.
StringGrid에 검색된 결과를 표현하는데,, 검색된 건수는 446개인데,,
StringGrid에는 190개 밖에 표현이 않됨니다. 즉 Rwo수는 건수대로 446개로 나타납니다.
그런데 190개까지는 데이터가 제대로 표시되는데,, 그 이후는 모두 공백입니다.
혹시 StringGrid에서 표현되는 숫자를 지정하는 곳이 있는가 찾아보니 없는것 같아
고수님들에게 질문을 합니다. 좋은 해결책 부탁드립니다.
개발환경은 Windows7이고 델파이 버젼은 Embarcadero® Delphi 10.1 Berlin 입니다.
개발은 Delphi 교재 258페이지의 Stringgrid의 내용을 참조하여 작성했습니다.
교재에는 오류가 없으니까 데이터가 표현되는데 다른 속성 지정에 문제가 있을까요?
작성된 코드는 다음과 같습니다.
with qryAccountH do
begin
Close;
SQL.Clear;
SQL.ADD('SELECT * ');
SQL.ADD('FROM npl_ACCOUNT_H ');
SQL.ADD('WHERE ACCT_NBR = :acct_nbr ');
SQL.ADD('ORDER BY TX_DT,TX_SEQ_NBR ');
ParamByName('acct_nbr').AsString := edAccntNbr.Text ;
Open;
end;
qryAccountH.Last; //최종 데이터까지 가져오기 위한 처리
edTotCnt.text := IntToStr(qryAccountH.RecordCount);
for I := 1 to qryAccountH.RecordCount do //초기화 처리
begin
StrAccountH.Cells[0,i] := '';
StrAccountH.Cells[1,i] := '';
StrAccountH.Cells[2,i] := '';
StrAccountH.Cells[3,i] := '';
StrAccountH.Cells[4,i] := '';
StrAccountH.Cells[5,i] := '';
StrAccountH.Cells[6,i] := '';
StrAccountH.Cells[7,i] := '';
StrAccountH.Cells[8,i] := '';
end;
StrAccountH.RowCount := qryAccountH.RecordCount + 1;
qryAccountH.First; //위치를 제일 처음으로 가서
for I := 1 to qryAccountH.RecordCount do
WITH StrAccountH do
begin
Cells[0,i] := IntToStr(i);
Cells[1,i] := Copy(qryAccountH.FieldByName('TX_DT').AsString,1,4);
Cells[2,i] := Copy(qryAccountH.FieldByName('RCKNG_DT').AsString,1,4);
Cells[3,i] := qryAccountH.FieldByName('TX_SEQ_NBR').AsString; //순번
Cells[4,i] := qryAccountH.FieldByName('tx_tp_g').AsString; //거래구분
Cells[5,i] := qryAccountH.FieldByName('amt_tpcd_des').AsString; //계정과목명
Cells[6,i] := qryAccountH.FieldByName('amt_tp_cdNm').AsString; //금액유형
Cells[7,i] := FormatFloat('0,',StrToInt(qryAccountH.FieldByName('Tx_Amt').AsString)); //처리 금액
Cells[8,i] := qryAccountH.FieldByName('tpcd_des').AsString; //적요
qryAccountH.Next;
end;
댓글 3
-
김원경
2017.10.26 15:48
-
AllwaysHappy
2017.10.27 09:53
감사합니다.
DBGrid로는 모두 데이터가 나타납니다. 건수는 440여건입니다.
그래서 이상해서 For문에 300이라는 임의의 숫자를 임력해서 실행시키니까 컴파일 에라가 발생합니다.
내용은 Subrange bounds라는 메세지입니다. 이 뜻은 무슨뜻인가요?
StringGrid에서 표시할 수 있는 숫자에 제한이 있나요?
아니면 속성에서 그에 대한 값을 정의해야 하나요?
좋은 해결책 부탁드립니다. 감사합니다.
오늘도 즐거운 하루되십시요~~~
-
AllwaysHappy
2017.10.27 10:13
감사합니다. 친절한 답변 너무 고맙습니다.
For문의 변수 값의 속성을 byte로 정의해서 나타난 현상이었습니다.
정수로 변경한 후에 정상적으로 출력됩니다.
빠른 답변에 다시한번 감사드립니다.
오늘도 즐거운 하루되십시요!!!!
기존의 소스에서는 쿼리를 오픈하시후에 last 메소드 호출은 필요없습니다. 일단 DataSource 컴포넌트, DBGrid 컴포넌트를 내려 놓으시고 쿼리의 내용이 다 표시되는지 먼저 확인해 보십시오. 실제 데이터가 널값 일 수도 있으니 dbGrid에 표시되는 내용이 실제 쿼리의 데이터 부분입니다.
그리고 코드가 틀렸습니다. (타이틀이 없으신걱 같은데 그럼 쿼리 컨수만큼 개수 주셔애 하고 타이틀이 있으시면 +1 )
예제상으로는 타이틀이 없습니다.
edTotCnt.text := IntToStr(qryAccountH.RecordCount);
StrAccountH.RowCount := qryAccountH.RecordCount ; //-----------------> 순서도 이부분으로 이동해야합니다.
for I := 0 to qryAccountH.RecordCount - 1 do //초기화 처리
begin
StrAccountH.Cells[0,i] := '';
StrAccountH.Cells[1,i] := '';
StrAccountH.Cells[2,i] := '';
StrAccountH.Cells[3,i] := '';
StrAccountH.Cells[4,i] := '';
StrAccountH.Cells[5,i] := '';
StrAccountH.Cells[6,i] := '';
StrAccountH.Cells[7,i] := '';
StrAccountH.Cells[8,i] := '';
end;
qryAccountH.First; //위치를 제일 처음으로 가서
for I := 0 to qryAccountH.RecordCount-1 do
begin // -------------------------------------------->>추가
WITH StrAccountH do
begin
Cells[0,i] := IntToStr(i);
Cells[1,i] := Copy(qryAccountH.FieldByName('TX_DT').AsString,1,4);
Cells[2,i] := Copy(qryAccountH.FieldByName('RCKNG_DT').AsString,1,4);
Cells[3,i] := qryAccountH.FieldByName('TX_SEQ_NBR').AsString; //순번
Cells[4,i] := qryAccountH.FieldByName('tx_tp_g').AsString; //거래구분
Cells[5,i] := qryAccountH.FieldByName('amt_tpcd_des').AsString; //계정과목명
Cells[6,i] := qryAccountH.FieldByName('amt_tp_cdNm').AsString; //금액유형
Cells[7,i] := FormatFloat('0,',StrToInt(qryAccountH.FieldByName('Tx_Amt').AsString)); //처리 금액
Cells[8,i] := qryAccountH.FieldByName('tpcd_des').AsString; //적요
qryAccountH.Next;
end; //---------------------->> 보기좋게 하기 위해 with
end; //for