Q&A

  • 이해가 잘안가요...도와주세요
* 사용환경 : 델파이4 / Windows 98



* 서버환경 : WindowNT4.0 Oracle8.0

car_name 테이블 필드는 약 25개

Car_name 테이블의 데이터는 4건을 넣고 테스트



* 처리로직 : procedure TSelect_Sum1.Button3Click(Sender: TObject);

begin

Query1.Close;

Query1.Sql.Clear;

Query1.Sql.Add(' select * from car_name ');

Query1.Open;

ShowMessage(StrToInt(Query1.RecordCount)); ==> -1로 옴(4건 있음)

.

.

end;



* 에러 내용 : 위의 문장처럼 너무 단순한건데.....이런 에러가 있어서

쿼리검포넌트를 이용해서 데이터를 가져와서 에디트 박스에 데이

터를 뿌리는 건데.. 이상하게 쿼리컴포넌트에서 그런건지 레코드

카운터가 한건도 오질 않고 그대로 두고 DBGrid에 연결 해서 하면

나오고... 또 그대로 두고 그래드를 비지불 시키면 안나오고

이유가 먼지를 도무지 모르겠습니다....

제발좀 가르쳐 주십시요....

그런데 OPen 하고 나서 Last하면 1로 나와요









2  COMMENTS
  • Profile
    jung hyun jin 2001.01.15 21:51
    김기동 wrote:

    > * 사용환경 : 델파이4 / Windows 98

    >

    > * 서버환경 : WindowNT4.0 Oracle8.0

    > car_name 테이블 필드는 약 25개

    > Car_name 테이블의 데이터는 4건을 넣고 테스트

    >

    > * 처리로직 : procedure TSelect_Sum1.Button3Click(Sender: TObject);

    > begin

    > Query1.Close;

    > Query1.Sql.Clear;

    > Query1.Sql.Add(' select * from car_name ');

    > Query1.Open;

    > ShowMessage(StrToInt(Query1.RecordCount)); ==> -1로 옴(4건 있음)

    > .

    > .

    > end;

    >

    > * 에러 내용 : 위의 문장처럼 너무 단순한건데.....이런 에러가 있어서

    > 쿼리검포넌트를 이용해서 데이터를 가져와서 에디트 박스에 데이

    > 터를 뿌리는 건데.. 이상하게 쿼리컴포넌트에서 그런건지 레코드

    > 카운터가 한건도 오질 않고 그대로 두고 DBGrid에 연결 해서 하면

    > 나오고... 또 그대로 두고 그래드를 비지불 시키면 안나오고

    > 이유가 먼지를 도무지 모르겠습니다....

    > 제발좀 가르쳐 주십시요....

    > 그런데 OPen 하고 나서 Last하면 1로 나와요

    >





    기본적으로 Query 의 RecordCount 속성을 사용하는 것은 위험합니다.

    위의 예에서 Record 가 4 건 있는데 Record 가 -1 로 나오는 것은

    Sql 문에서 AsterRisk (*) 를 사용했기 때문이 아닐까요 ?

    제 경험 상으로 볼때 Query 문에 * 를 사용했을 때 위와 같은 문제가 발생하므로

    Select Field1 From Car_Name 이렇게 쓰시면 RecordCount 가 4가 나올것입니다.







    >

    >

    >

  • Profile
    임형호 2001.01.15 05:30
    recordcount 읽어오기전에..

    query1.last;

    query1.first;

    하신다음에...recordcount를 해보시기 바랍니다.

    그런데...그것보다는 차리리 query문 날리기전에...count 함수를 사용해서 직접 갯수를 불러오시는것이 낫지 않을까...생각이 드네요. 그럼.



    김기동 wrote:

    > * 사용환경 : 델파이4 / Windows 98

    >

    > * 서버환경 : WindowNT4.0 Oracle8.0

    > car_name 테이블 필드는 약 25개

    > Car_name 테이블의 데이터는 4건을 넣고 테스트

    >

    > * 처리로직 : procedure TSelect_Sum1.Button3Click(Sender: TObject);

    > begin

    > Query1.Close;

    > Query1.Sql.Clear;

    > Query1.Sql.Add(' select * from car_name ');

    > Query1.Open;

    > ShowMessage(StrToInt(Query1.RecordCount)); ==> -1로 옴(4건 있음)

    > .

    > .

    > end;

    >

    > * 에러 내용 : 위의 문장처럼 너무 단순한건데.....이런 에러가 있어서

    > 쿼리검포넌트를 이용해서 데이터를 가져와서 에디트 박스에 데이

    > 터를 뿌리는 건데.. 이상하게 쿼리컴포넌트에서 그런건지 레코드

    > 카운터가 한건도 오질 않고 그대로 두고 DBGrid에 연결 해서 하면

    > 나오고... 또 그대로 두고 그래드를 비지불 시키면 안나오고

    > 이유가 먼지를 도무지 모르겠습니다....

    > 제발좀 가르쳐 주십시요....

    > 그런데 OPen 하고 나서 Last하면 1로 나와요

    >

    >

    >

    >