|
안녕하세요 utime입니다.
예전 짜다 만 프로그램인데 님께서 원하시는 기능들은 있습니다.
걍 참고만 하시길~ ^^;;;
// 조건문 만들기
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
AnsiString sql;
DWORD dwCount;
sql = "select qn.no, qn.name, qn.title, ";
sql += "qn.date_time, qn.hit, qn.grp, qn.idx, qn.step, qn.rep ";
sql += "from qna qn ";
sql += "order by grp desc,idx asc";
FinalSQL = sql;
GetDBData( ADSet, sql );
dwCount = PageView( ADSet, 0);
}
//---------------------------------------------------------------------------
// 쿼리문 실행~
void __fastcall TfrmMain::GetDBData( TADODataSet *ADS, const AnsiString sql )
{
ADS->Close();
ADS->CommandText = sql;
try
{
ADS->Open();
} catch(...) {}
}
//---------------------------------------------------------------------------
// 데이터 내용 갖고오기
DWORD __fastcall TfrmMain::PageView( TADODataSet *ADS, const int PageCount)
{
AnsiString tmp;
DWORD dwCount;
DWORD icount;
DWORD iFirst, iLast;
icount = 0; // 보여줄 라인 수,
lstvBoard->Clear();
dwCount = ADS->RecordCount;
if( dwCount <= 0 )
{
ADS->Close();
return 0;
}
iFirst = PageCount*ViewCount;
iLast = (PageCount+1)*ViewCount;
ADS->First();
while( !ADS->Eof )
{
// 여기서 값을 뿌려준다.
// 범위 비교
if( icount>=iFirst && icount<iLast )
{
tmp = "";
TListItem *it = lstvBoard->Items->Add();
it->SubItems->Add(ADS->FieldByName("no")->AsString);
for( int i=0 ; i<ADS->FieldByName("step")->AsInteger ; i++ )
{
tmp += " ";
if( i == ADS->FieldByName("step")->AsInteger-1 )
tmp += "┗";
}
it->SubItems->Add(tmp+ADS->FieldByName("title")->AsString);
it->SubItems->Add(ADS->FieldByName("name")->AsString);
it->SubItems->Add(ADS->FieldByName("hit")->AsString);
it->SubItems->Add(ADS->FieldByName("date_time")->AsDateTime.CurrentDate() );
ADS->Next();
icount++;
} else {
if( icount<iFirst )
{
// 작으면 클때까지 반복~!
while( icount<iFirst )
{
ADS->Next();
icount++;
}
} else
if( icount>=iLast )
{
// 크면 이제 그만
ADSet->Close();
break;
}
}
}
return dwCount;
}
나크 님이 쓰신 글 :
: 휴~ 여기 다 찿아봐도 없는거 같아요...
:
: ADO로 테이블 목록 가져오는것은 알겠는데.. Query를 직접해서 가져오는건 잘 안되네요..
:
: 디비쪽으로 전혀 해보지 않아서 헤메던중 zeoslib를 사용하여 mysql접속을 알게 되었습니다.
:
: 쿼리도 다 해 봐서.. 그리드에 show tables 명령으로 테이블을 불러 올수도 있었습니다.
:
: 그러나 디비 테이블의 목록을 어떻게 하나 하나 얻어 내는지 도저히 모르겠네요.
:
:
: ////////////////////////////////////////////////////////////////////////////
:
:
: 밑에 code 수행하기 전에는 디비 접속해서 Show Tables 명령으로 DBGrid1에 뿌렸습니다....ㅠㅠ
:
: DataSet은 TZQuery의 이름입니다.
: for (int i=0; i < DataSet->RecordCount; i++) <--여기서 RecordCount가 맞는지..아닌거 같은데..(질문1)
: {
: TDataSet *pDS = DBGrid1->DataSource->DataSet;
: s = pDS->Fields->Fields[j]->AsString; <--이렇게 하면 레코드가 나오던데.. 열의 데이터는 어떻게 가져오는지(질문2)
: }
:
: 질문은 두가진데.. 워낙에 기초적인거라 죄송합니다.
:
: 1번은 데이터의 갯수를 어떻게 가져오는지 입니다.
: 2번은 데이터의 내용을 콕 찝어서 어떻게 가져오는지.. Row, col 등도 없고.. ㅠㅠ 미티겠습니다...
:
: 정말 기초적인건데.. 부탁드립니다. ㅠㅠ
|