Q&A

  • 초보가 궁금해서요 db 처리에 관한...
프로그램을 하다가 궁금한게 있어서요.

1.퀵리포트에서

원하는 레코만 출력하고 싶은데 어떻게하나요.....

지금은 입력된 모든 레코드가 모두 출력되는 형태입니다.

(단순 레포트기능)

2.저장된 레코드를 한꺼번에 모두 삭제할 순 없나요?

자료를 초기화하는.....

3.저장된 db를 백업하고싶은데요 방법이 있습니까?

개발된 어플리케이션 디렉토리에 하위디렉토리(backup)을 만들고 이곳에다

db를 실행시에 백업하고싶은데요....



고수님들의 고견을 부탁드립니다.





2  COMMENTS
  • Profile
    윤석천 1999.05.23 20:30
    이종근 wrote:

    > 프로그램을 하다가 궁금한게 있어서요.

    > 1.퀵리포트에서

    > 원하는 레코만 출력하고 싶은데 어떻게하나요.....

    > 지금은 입력된 모든 레코드가 모두 출력되는 형태입니다.

    > (단순 레포트기능)



    저도 초보입니다만...



    TQuery를 사용하셨다면, Query를 원하시는 Data만 해오시면 어떨지요.

    Ttable을 사용하셨다면, filter를 사용하시면 될 거구, TQuery도 fileter를 사용할 수 있을 겁니다.



    아니면 Quick Report에서 band의 BeforePrint Event를 쓰셔서, 원하시는 Data가 아니면 다음 record로 보내시면 (Tquery.next)를 어떨지요. 제가 쓰는 꽁수이기는 하지만요..

  • Profile
    종모 1999.05.22 20:56
    이종근 wrote:

    > 프로그램을 하다가 궁금한게 있어서요.

    > 1.퀵리포트에서

    > 원하는 레코만 출력하고 싶은데 어떻게하나요.....

    > 지금은 입력된 모든 레코드가 모두 출력되는 형태입니다.

    > (단순 레포트기능)



    반갑습니다. 델파이를 사랑하는 초보 델돌이 종모입니다.

    조금의 도움이 될수있을까하고 잘 알지도 못하면서도 이렇게 글을 띄웁니다.



    [추 천]



    우선 델파이코리아의 강의실에있는 데이터베이스에대한 강좌가 있거든요?

    꼭 한번가서 다운받아보세요. 조금만 응용하면 1,2,3번질문의 답변이 모두 될수 있을것 같네요. 확실히 기억이 않나서 가서한번 찾아보세요 8편정도로 나누어져 있을겁니다.



    [2,3번 참 고]

    ======내가 사용한 것들=======

    DataBaseName = "Address"

    TableName = "MyAddress.db"

    =============================



    >2.저장된 레코드를 한꺼번에 모두 삭제할 순 없나요?

    > 자료를 초기화하는.....



    // 전체 자료삭제 버튼클릭 이벤트.

    procedure TForm1.Button1Click(Sender: TObject);

    Var

    // 자료를 삭제할 Query를 선언한다.

    MYQuery : TQuery;

    begin

    // Query를 생성하고 DataBaseName을 지정한다..

    // DataBase를 생성하지 않았다면 Data가 있는 경로를 지정한다.

    // Ex) MYQuery.DataBaseName := ExtractPathName(Application.ExeName) + 'DB';

    MYQuery := TQuery.Create(Self);

    MYQuery.DatabaseName := 'Address';

    MYQuery.Close;

    // 레코드삭제 Query를 추가하고 실행한다.

    MYQuery.SQL.Add('Delete From MyAddress.db');

    MYQuery.ExecSQL;

    // 생성한 Query의 자원을 해재한다.

    MYQuery.Free;

    // MyAddress.db에 있는 모든자료가 삭제되었다.

    // Data에 연결되어있는 구성요소들에게 알려준다.

    DM.Table1.Refresh;

    end;



    > 3.저장된 db를 백업하고싶은데요 방법이 있습니까?

    > 개발된 어플리케이션 디렉토리에 하위디렉토리(backup)을 만들고 이곳에다

    > db를 실행시에 백업하고싶은데요....



    // 자료 백업버튼 클릭이벤트.

    procedure TForm1.Button2Click(Sender: TObject);

    Var

    // 자료가있는 경로와 백업할 경로를 입력받을 변수선언.

    DATA, BACK, MDATA, MBACK : String[255];

    // 자료를 복사할때 사용할 변수선언.

    PData, PBack : Array [0..255] of char;

    // 복사할때 화일을 찾기위해 SearchRec변수를 선언.

    SR: TSearchRec;

    begin

    //"ExtractFilePath(Application.ExeName)"은개발된애플리의경로를추출한다.

    // 자료가 저장된 DB가 있는 경로를 DATA변수에 지정한다.

    DATA := ExtractFilePath(Application.ExeName)+'DB';

    // 백업할 경로를 BACK변수에 지정한다.

    BACK := ExtractFilePath(Application.ExeName)+'BACKUP';

    // 백업경로의 생성여부를 체크하고 생성되지 않았으면 생성시켜줌.

    // DirectoryExists함수를 사용하기위해서는

    // "FileCtrl"을 Unit부분에 추가해야한다.

    if NOT DirectoryExists(BACK) then MKDIR(BACK);



    // DATA변수에 저장된 경로에 있는 모든 화일을 찾고 복사한다.

    if FindFirst(DATA+'*.*', faAnyFile, SR) = 0 then

    repeat

    if (SR.Attr <> faDirectory) and (SR.Name[1] <> '.') then

    begin

    MDATA := DATA+SR.Name;

    MBACK := BACK+SR.Name;

    StrPCopy(PData,MDATA); StrPCopy(PBack,MBACK);

    CopyFile(PDATA,PBACK,False);

    end;

    Until (FindNext(SR)<>0);

    FindClose(SR);

    end;