|
답변 매우 감사합니다.
잘 됩니다.
다시 한번 감사드림니다.
박지훈.임프 님이 쓰신 글 :
: DBEdit 두개를 쓰신 것이 데이터셋의 결과를 단순히 읽어오기 위한 것이군요. DBEdit에 표시할 필요는 없어
: 보이는데.. 그렇다면 만해님의 말씀대로 FieldByName을 써서 해당 필드의 값을 읽어오는 편이 훨씬 더 빠르죠.
:
: 그리고 데이터의 마지막에 도착했는지를 검사할 때는 데이터셋의 Eof 속성으로 검사합니다.
:
: void __fastcall TForm1::Button4Click(TObject *Sender)
: {
: SQLDataSet1->Open();
: while (!SQLDataSet1->Eof)
: {
: ListBox2->Items->Add(SQLDataSet1->FieldByName("첫번째필드이름")->AsString
: + " " + SQLDataSet1->FieldByName("두번째필드이름")->AsString);
: SQLDataSet1->Next();
: }
: SQLDataSet1->Close();
: }
:
:
: 초록물고기 님이 쓰신 글 :
: : 안녕하세요.
: : DB에 너무 초보라... 이런것이 당연히 될것이라 생각했는데... 책을 뒤져봐도 잘 모르겠어서..
: : 글을 올림니다.
: :
: : 지금 하나의 테이블에, filed 가 2개(칼럼 ), 인데 , row의 갯수가 좀 많습니다 (10000 개이상).
: :
: : 만개이상의 의 row를 저는 dbgrid 같은 곳에 뿌리지 않고... list box에 뿌리려고 합니다.
: : 그런데, 방법을 모르겠기에... 다음과 같이 했습니다.
: :
: : 화면에.. SQLDataSet 1 개, DataSource 1 개 , SQLConnect 1개, DBEdit1, DBEdit2,
: : DataSource1 의 DataSet 에 SQLDataSet1,
: : DBEdit1 의 DataSource는 DataSource1
: : DBEdit1 의 Field = 선택된 첫번째 row
: :
: : DBEdit2 의 DataSource는 DataSource1
: : DBEdit2 의 Field = 선택된 두번째 row
: :
: : 이렇게 한후
: : void __fastcall TForm1::Button4Click(TObject *Sender) // 특정 버튼이 눌리면
: : {
: : SQLDataSet1->Open();
: :
: : SQLDataSet1->First();
: : if ( strcmp (DBEdit2->Text.c_str(), "") != 0 ) // 첫번째 선택된 것이 nil 이 아니면
: : {
: : while (1)
: : {
: : if ( !strcmp (DBEdit2->Text.c_str(), "") ) break; // 데이타의 마지막에 도착했으면
: : else
: : {
: : ListBox2->Items->Add( DBEdit2->Text + " " + DBEdit1.Text ); // DBEdit박스의 내용을 list 박스로 옮김
: : SQLDataSet1->Next(); //다음의 row로 이동
: : }
: : }
: : }
: : SQLDataSet1->Close();
: :
: :
: : }
: :
: : 이렇게 하여... Data는 정상적으로 정상적으로 ListBox에 append되는 것을 보았습니다. (물론 현재 10000 개이상은 아니지만, 약 100 여개정도로 테스트 하였습니다)
: : 그런데.. 위의 방법처럼 하는 것이 효율적인 방법인지, 그것이 알고 싶습니다.
: : (데이타를 가져와서 임시로 저장하기 위해,DBEdit 2개를 사용했습니다 )
: :
: : 아니면, 더 효율적인 방법으로 하기 위해서는 다른 방법으로는 어떤 것이 있는지요?
: : (임시 저장소 DBEdit1,DBEdit2를 없애고, 바로 Listbox로 들어가게 하는 방법은 있는지요?)
: :
: : 조언좀 부탁드림니다.
: : 그럼 수고하세요.
: :
: :
|