[연습] 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;
}
}
}
|
감사인사가 늦었습니다, 감사합니다.
즐거운 주말 보내세요.~~~