Q&A

  • DBgrid 답답하네요!
DBgrid로 받은 한 필드의 값을 스트링그리드에 넣고 싶은데...



어찌하면 좋을까요?



DBgrid에 있는 한 필드의 자료수는 많을수도 있고 적을수도 있습니다.



디비그리드에 출력된 한 필드의 전체 값만 받을수 있다면 정말로 좋겠어요!

4  COMMENTS
  • Profile
    강호규 2000.10.28 05:15
    cico wrote:

    > DBgrid로 받은 한 필드의 값을 스트링그리드에 넣고 싶은데...

    >

    > 어찌하면 좋을까요?

    >

    > DBgrid에 있는 한 필드의 자료수는 많을수도 있고 적을수도 있습니다.

    >

    > 디비그리드에 출력된 한 필드의 전체 값만 받을수 있다면 정말로 좋겠어요!





    우선 데이터셋과 디비그리드에 대한 이해가 먼저 필요할 것 같군요.

    디비그리드는 단지 케이스와 같습니다.

    케이스 안의 실제 내용물은

    디비그리드와 연결된 데이터셋에

    내용물이 담겨 있지요.

    그러므로, 질문하신 것 처럼

    디비그리드의 특정 컬럼에 대한 값을 얻고자 한다면

    디비그리드와 연결된 데이터셋에서 해답을 구하면 됩니다.



    얻고자하는 필드명이 "Name"이라 한다면

    아래와 같은 방법을 쓰시면 됩니다.



    with DBGrid.DataSource.DataSet do begin

    First;

    while not Eof do begin

    스트링그리드.로우추가;

    스트링그리드.컬럼 := DBGrid.DataSource.DataSet.FieldByName('Name').AsString;

    Next;

    end;

    end;

  • Profile
    cico 2000.10.28 18:24
    강호규 wrote:

    > cico wrote:

    > > DBgrid로 받은 한 필드의 값을 스트링그리드에 넣고 싶은데...

    > >

    > > 어찌하면 좋을까요?

    > >

    > > DBgrid에 있는 한 필드의 자료수는 많을수도 있고 적을수도 있습니다.

    > >

    > > 디비그리드에 출력된 한 필드의 전체 값만 받을수 있다면 정말로 좋겠어요!

    >

    >

    > 우선 데이터셋과 디비그리드에 대한 이해가 먼저 필요할 것 같군요.

    > 디비그리드는 단지 케이스와 같습니다.

    > 케이스 안의 실제 내용물은

    > 디비그리드와 연결된 데이터셋에

    > 내용물이 담겨 있지요.

    > 그러므로, 질문하신 것 처럼

    > 디비그리드의 특정 컬럼에 대한 값을 얻고자 한다면

    > 디비그리드와 연결된 데이터셋에서 해답을 구하면 됩니다.

    >

    > 얻고자하는 필드명이 "Name"이라 한다면

    > 아래와 같은 방법을 쓰시면 됩니다.

    >

    > with DBGrid.DataSource.DataSet do begin

    > First;

    > while not Eof do begin

    > 스트링그리드.로우추가;

    > 스트링그리드.컬럼 := DBGrid.DataSource.DataSet.FieldByName('Name').AsString;

    > Next;

    > end;

    > end;



    그런데 여기 "스트링그리드.로우추가"가 무슨 의미이지요?

    궁금하네요!

    전 이렇게 했더니 무한으로 돌던데............



    procedure Telist_frm.Button1Click(Sender: TObject);

    var

    i:integer;

    begin

    for i:=1 to 160 do begin

    with DBGrid1.DataSource.DataSet do begin

    First;

    while not Eof do begin

    mylist_frm.StringGrid1.cells[5,i]:= DBGrid1.DataSource.DataSet.FieldByName('no').AsString;

    Next;

    end;

    end;

    end;

    end;



  • Profile
    담배연기 2000.10.28 21:10
    > 그런데 여기 "스트링그리드.로우추가"가 무슨 의미이지요?

    > 궁금하네요!

    > 전 이렇게 했더니 무한으로 돌던데............

    >

    > procedure Telist_frm.Button1Click(Sender: TObject);

    > var

    > i:integer;

    > begin

    > for i:=1 to 160 do begin <--- 이부분이 잘못되었습니다.



    > with DBGrid1.DataSource.DataSet do begin

    > First;

    > while not Eof do begin

    스트링그리드.로우추가 --> StringGrid1.rowcount := StringGrid1.rowcount + 1;

    > mylist_frm.StringGrid1.cells[5,i]:= DBGrid1.DataSource.DataSet.FieldByName('no').AsString;

    > Next;

    > end;

    > end;

    > end;

    > end;



    안녕하세요.

    올라와 있는 소스가 조금 잘못되었네요.

    for문 안에 다시 while 문이 존재하면

    for문이 한번 돌고난 후 다시 while문이 돌기때문에

    아주 많은 시간이 소요됩니다.

    위와 같이 해보세요.

    "스트링그리드.로우추가 " 부분은 상황에 맞게 적절히 변경후 작업해보세요.

    그럼 이만...



  • Profile
    cico 2000.10.30 22:50
    친절한 답변 정말 감사합니다.



    하지만 이렇게 하든 저렇게 하든 필드의 한 레코드 값밖에 받지를 못하는군요



    제게 필요한건 한필드의 한레코드가 아니라 한필드의 전체의 값인데요....



    한번더 조언을 부탁드리겠습니다.

    담배연기 wrote:

    > > 그런데 여기 "스트링그리드.로우추가"가 무슨 의미이지요?

    > > 궁금하네요!

    > > 전 이렇게 했더니 무한으로 돌던데............

    > >

    > > procedure Telist_frm.Button1Click(Sender: TObject);

    > > var

    > > i:integer;

    > > begin

    > > for i:=1 to 160 do begin <--- 이부분이 잘못되었습니다.

    >

    > > with DBGrid1.DataSource.DataSet do begin

    > > First;

    > > while not Eof do begin

    > 스트링그리드.로우추가 --> StringGrid1.rowcount := StringGrid1.rowcount + 1;

    > > mylist_frm.StringGrid1.cells[5,i]:= DBGrid1.DataSource.DataSet.FieldByName('no').AsString;

    > > Next;

    > > end;

    > > end;

    > > end;

    > > end;

    >

    > 안녕하세요.

    > 올라와 있는 소스가 조금 잘못되었네요.

    > for문 안에 다시 while 문이 존재하면

    > for문이 한번 돌고난 후 다시 while문이 돌기때문에

    > 아주 많은 시간이 소요됩니다.

    > 위와 같이 해보세요.

    > "스트링그리드.로우추가 " 부분은 상황에 맞게 적절히 변경후 작업해보세요.

    > 그럼 이만...

    >