C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[28649] Re:[질문] DB 정말 기초 질문.. 이런질문 해서 죄송합니다. 목록 가져오기 입니다.
utime->김성하 [utime] 1182 읽음    2004-01-28 22:36
안녕하세요 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 등도 없고.. ㅠㅠ 미티겠습니다...
:
: 정말 기초적인건데.. 부탁드립니다. ㅠㅠ

+ -

관련 글 리스트
28646 [질문] DB 정말 기초 질문.. 이런질문 해서 죄송합니다. 목록 가져오기 입니다. 나크 790 2004/01/28
28649     Re:[질문] DB 정말 기초 질문.. 이런질문 해서 죄송합니다. 목록 가져오기 입니다. utime->김성하 1182 2004/01/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.