Q&A

  • 여러 레코드을 동시에 가지고 오려면..
안냐세엽..

query내용입니당..

select f2,f3,f4,f5 from message where f1=true

^_^; 초짜라..서..



질문1. 쿼리문에서 where절의 f1이 boolean값이거든요. 근데 위처럼 해도 되는지?

질문2. f2,f3,f4,f5를 가지고 오는데,, f1이 true인 레코드가 하나이상이기때문에

FieldByName으로는 문제가 있을것 같군요.. 얼케해야하는지..요..?





3  COMMENTS
  • Profile
    델초보 2000.10.22 09:16
    procedure TForm1.pDataOpen;

    var

    i : Integer;

    begin

    with Query1 do

    begin

    Close;

    SQL.Clear;

    SQL.ADD('SELECT COL_1, COL_2, COL_3 ');

    SQL.ADD(' FROM TABLE_1 ');

    SQL.ADD(' WHERE CON_1 = '''+Edit1.Text+''' ');

    Open;



    if FieldByName('COL_1').AsString = '' then

    begin

    ShowMessage('선택된 년도에 자료가 없습니다.');

    Exit;

    end;



    First; //-> 쿼리결과의 첫번째 레코드 이동



    for i := 0 to RecordCount - 1 do // -> RecordCount 는 쿼리된 레코드 수입니다..

    begin

    StringGrid1.Cells[1, i] := FieldByName('COL_1').AsString;

    StringGrid1.Cells[2, i] := FieldByName('COL_2').AsString;

    StringGrid1.Cells[3, i] := FieldByName('COL_3').AsString;



    Next; //-> 다음 레코드로 이동....

    end;

    end;

    end;



    스트링그리드에 쿼리결과 넣는 예제입니다...





    델초 wrote:

    > 안냐세엽..

    > query내용입니당..

    > select f2,f3,f4,f5 from message where f1=true

    > ^_^; 초짜라..서..

    >

    > 질문1. 쿼리문에서 where절의 f1이 boolean값이거든요. 근데 위처럼 해도 되는지?

    > 질문2. f2,f3,f4,f5를 가지고 오는데,, f1이 true인 레코드가 하나이상이기때문에

    > FieldByName으로는 문제가 있을것 같군요.. 얼케해야하는지..요..?

    >

    >

  • Profile
    델초 2000.10.22 12:04
    답변감사드립니다.. ^_^;

    근데,, 제거 여기게시판에서 RecordCount를 믿지

    말라는 글을 본적이 있는데.. -_-;; 하하.. 님이 써본 결과로는

    어떤지요.. ^_^;



    델초보 wrote:

    > procedure TForm1.pDataOpen;

    > var

    > i : Integer;

    > begin

    > with Query1 do

    > begin

    > Close;

    > SQL.Clear;

    > SQL.ADD('SELECT COL_1, COL_2, COL_3 ');

    > SQL.ADD(' FROM TABLE_1 ');

    > SQL.ADD(' WHERE CON_1 = '''+Edit1.Text+''' ');

    > Open;

    >

    > if FieldByName('COL_1').AsString = '' then

    > begin

    > ShowMessage('선택된 년도에 자료가 없습니다.');

    > Exit;

    > end;

    >

    > First; //-> 쿼리결과의 첫번째 레코드 이동

    >

    > for i := 0 to RecordCount - 1 do // -> RecordCount 는 쿼리된 레코드 수입니다..

    > begin

    > StringGrid1.Cells[1, i] := FieldByName('COL_1').AsString;

    > StringGrid1.Cells[2, i] := FieldByName('COL_2').AsString;

    > StringGrid1.Cells[3, i] := FieldByName('COL_3').AsString;

    >

    > Next; //-> 다음 레코드로 이동....

    > end;

    > end;

    > end;

    >

    > 스트링그리드에 쿼리결과 넣는 예제입니다...

    >

    >

    > 델초 wrote:

    > > 안냐세엽..

    > > query내용입니당..

    > > select f2,f3,f4,f5 from message where f1=true

    > > ^_^; 초짜라..서..

    > >

    > > 질문1. 쿼리문에서 where절의 f1이 boolean값이거든요. 근데 위처럼 해도 되는지?

    > > 질문2. f2,f3,f4,f5를 가지고 오는데,, f1이 true인 레코드가 하나이상이기때문에

    > > FieldByName으로는 문제가 있을것 같군요.. 얼케해야하는지..요..?

    > >

    > >

  • Profile
    델초보 2000.10.23 05:12
    저두 바로 아래 호야님의 경우와 똑같은 경우가 있습니다...



    오라클 8i를 쓰는데요...



    황당하더군요...



    그때전는 쿼리를 한번 더써서...



    직적 카운트한 결과(REC_CNT)를 가지고 왔습니다....



    SELECT COUNT(*) REC_CNT FROM TABLE_1 WHERE 조건



    즐거운 주말 돼세요.....



    ------------------------------------------

    호야 wrote:

    > 쿼리를 했습니다.

    > 디비그리드에 88개가 올라왔습니다.

    > 그런데 RecordCount에는 -1라는 값이 올라옵니다.

    > 어떻게 된겁니까?



    -- 요아래는 '유병익'님의 답변입니다...(허락없이 글을 카피해서 죄송합니다..^^)



    open 후에 "FetchAll" 을 추가해 보십시오.

    그러면, 아마도 제대로 된 RecordCount 가 될 것입니다.



    ex)

    with Query1 do begin

    close;

    sql.clear;

    sql.add('Select * from aaa');

    open;

    FetchAll;

    Edit1.text := IntToStr(RecordCount);

    end;