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

FireBird 강좌/문서
[37] [연습] RICHEDIT_DATA FireBird DB에 쓰고 읽기
박영목 [gsbsoft] 19459 읽음    2008-09-04 13:16
[연습] RICHEDIT_DATA FireBird DB에 쓰고 읽기

  ㅎ2  <-- 이것은 오타가 아닙니다. = 하이   입니다.
  요즘 우리 애들이라 채팅을 해서 초등 2학년에게 배웠습니다. ㅋㅋㅋ
  그런데 채팅 끝낼 때 ㅂ2 하더군요... ㅋㅋㅋ   = "바이"

  부산에 사시는 분을 어떻게 만나게 되었습니다.  아마 Borlandforum에 올린 글을 보고
  연락을 주셨다고... 그래서... 만나서... 수육도 얻어 먹고 맥주도 얻어 마시고... 
  제가 살 기회도 없이....  역시 술 마시면 일이 안된다. ㅋㅋㅋ  토요일 한달에 1번
  쉬는 날인데... 또 일이 밀려서... 혼자 회사에 나와서... 일 하려고 하니 잠이 오네요
  ... ㅋㅋㅋ  2시간 정도 자고 일을 했습니다. 결론 술은 한번씩 먹어야 한다.
  프로그램은 끝이 없는 것 같습니다. 업그레이드만 있을 뿐이다. ㅋㅋㅋ
  그런데 그 분이 아직 프로그램에 익숙치 않아 파이어버드 DB에 RICHEDIT의 DATA 글자의
  속성이 들어간 것 통채로넣고 빼고 하고 싶은 데 안된다고... 쉬울 것 같아 한 20분 하면
  되겠지.. 원격으로 해도 서로 지식이 짧아 해결을 못해드렸습니다.

  파이어버드와 ZEOS를 사용해 보지를 않아서... 원리는 뻔한데... DB는 15년 전에 조금
  하다 별 재미가 없더군요. DB 하시는 분께 죄송... 다 좋아하는 분야가 있으니...

  그래서 공부를 해야겠다. 파이어드 책 옛날 회사에서 키란디아가 책을 같이 사자고 해서
  샀는데... 그냥 보고 쓸 일이 있어야지... 보지도않고 쳐박아 둔 것 꺼내어...
  조금 보다가... 아 이렇게 DATABASE를 만들구나 번거럽더군요...

  그리고 이제 프로그램적으로 해봐야 하는데 이게 ZEOS가 이 컴포넌트가 잘 깔리는데
  이상한 Fatal... 링커 에러를 일으키더군요... 그래서 하루 쉬어 버리고... 자료실을 보다고..
  C++6.0 Update가 있더군요... 아 이것 저번에는 한번 설치한 느낌...
  그래서 받아 업데이트 했습니다. 그랬더니... 잘 동작하더군요.. ㅋㅋㅋ

  필드 2개를 만들고 RICH DATA 집어넣고 빼고... 금방 되더군요...  그림을 집어 넣고 하는
  것과 사실 동일하지요...

  혹 다른 분 참고가 될까 싶어... 올립니다. FireBird 델파이 소스를 보고 조금 수정한 것임...

  차장님... 왜 내 메일은 안되지요. 그참 naver, paran.. 다 보내도 안가니...
  여기에 올리는 참고해서 사용하시기 바랍니다....  감사합니다.

                           부산에서  월천 박영목 올림.....     다들 행복하세요...  ㅂ2


참 , 아직 제 PC에 만든 DATABASE 어떻게 다른 곳에 옮기는지 모릅니다. 아시는 분...  가르쳐
주시면 감사하겠습니다.   ㅂ2


----------------------------------------

void __fastcall TForm1::btnInputClick(TObject *Sender)
{

  iMode = 0;

  TMemoryStream *mm = new TMemoryStream();

  try
  {
    ZQuery1->SQL->Clear();

    ZQuery1->SQL->Add( "INSERT INTO RICH_DATA ( TITLE, CMEMO ) " );
    ZQuery1->SQL->Add( "VALUES (:PTITLE, :PCMEMO)" );
    ZQuery1->ParamByName( "PTITLE" )->AsString = Edit1->Text;
    RichEdit1->Lines->SaveToStream( mm );                                       //Stream도 파일 처럼 저장하면 파일 쓰느 위치가 쓴 만큼 이동합니다.

    mm->Position = 0;

    ZQuery1->ParamByName( "PCMEMO" )->LoadFromStream( mm, ftBlob );


    ZQuery1->ExecSQL();
    ZConnection1->Commit();
  }
  __finally
  {
    delete mm;
  }
}
//------------------

void __fastcall TForm1::btnModifyClick(TObject *Sender)
{
  if( iMode!=1 )
  {
    btnInputClick( btnInput );   //입력
  }
  else
  {
    iMode = 0;

    TMemoryStream *mm = new TMemoryStream();

    try
    {
      ZQuery1->SQL->Clear();

      ZQuery1->SQL->Add( "UPDATE RICH_DATA SET CMEMO = :RICHMEMO WHERE SEQ = :ISEQ" );

      RichEdit1->Lines->SaveToStream( mm );                                     //Stream도 파일 처럼 저장하면 파일 쓰느 위치가 쓴 만큼 이동합니다.

      mm->Position = 0;

      ZQuery1->ParamByName( "RICHMEMO" )->LoadFromStream( mm, ftBlob );

      ZQuery1->ParamByName( "ISEQ" )->AsInteger = iSEQ;

      ZQuery1->ExecSQL();

      ZConnection1->Commit();
    }
    __finally
    {
      delete mm;
    }

  }
//---------------------------------


void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
  if( ListBox1->ItemIndex!=-1 )
  {
    iSEQ = StrToInt( lstSEQ->Strings[ ListBox1->ItemIndex ] );       //  ListBox1->Items->Strings[ ListBox1->ItemIndex ];

    AnsiString asSQL = "SELECT * FROM RICH_DATA WHERE SEQ = :ISEQ"; // + IntToStr(iSEQ);

    ZQuery1->SQL->Clear();
    ZQuery1->SQL->Add( asSQL );
    ZQuery1->ParamByName( "ISEQ" )->AsInteger = iSEQ;
    ZQuery1->Open();


    if( ZQuery1->RecordCount>0 )
    {
      ZQuery1->First();

      Edit1->Text =  ZQuery1->FieldByName( "TITLE" )->AsString;
      RichEdit1->Lines->LoadFromStream( ZQuery1->CreateBlobStream( ZQuery1->FieldByName( "CMEMO" ), bmRead ) );  //  기존데이터는 가르켜 주신데로 코드를 수정해서 하니까? 잘 읽혀집니다.

      iMode = 1;
    }
  }

}
freeman [builder88]   2008-09-06 07:14 X
아침에 접속해서 코드를 가지고 테스트 했는데, 역시 고수는 다르시네요.
감사인사가 늦었습니다, 감사합니다.
즐거운 주말 보내세요.~~~

+ -

관련 글 리스트
37 [연습] RICHEDIT_DATA FireBird DB에 쓰고 읽기 박영목 19459 2008/09/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.