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
[75246] FireDAC 에서 이미지 불러오는 방법 문의 드립니다.
뽀뽀중 [kissjung] 2607 읽음    2019-01-15 17:45
SQLite를 FireDAC을 이용해서 그림파일을 DB파일에 입력을 하였습니다.
DB에서 읽어서 Timage 에 넣는 기능을 작성 중입니다.

코드는 아래와 같이 작성을 하였습니다.


*****첫번째 문의:

그런데, 여러개 자료를 입력을 했는데, 그림을 읽으면, 첫번째 레코드(Row)에 입력된 이미지만 불러 옵니다.
FDMainTable에서 읽을 레코드 번호(Row) 를 설정을 하지 않아서 맨 처음 레코드 만 읽어오는 것 같은데....

어떻게 수정을 해야 하나요?

        FormMain->FDMainTable->Active = false;
	FormMain->FDMainTable->TableName = "User";
	FormMain->FDMainTable->Connection = FormMain->FDConnection1;
	FormMain->FDMainTable->Active = true;
	FormMain->FDMainTable->Open();

	TStream* BStream = new TStream(); // 그림 읽고 저장을 위한 스트림
	BStream = FormMain->FDMainTable->CreateBlobStream((FormMain->FDMainTable->FieldByName("B_Sig")), bmRead);
	BStream->Position = 0;
	imgUser->Picture->LoadFromStream(BStream);

	BStream->Free();
	FormMain->FDMainTable->Close();



////자답
아래와 같이 ID로 해당 레코드를 검색을 해서 그림을 읽으니 문제 없이 되는 군요.
LabelUserID->Caption = DBGridUser->Fields[0]->Text;
	edtBelog->Text = DBGridUser->Fields[1]->Text;
	edtName->Text = DBGridUser->Fields[2]->Text;
	edtNote->Text = DBGridUser->Fields[3]->Text;

	// 그림은, DB에서 읽어서 Timage 컨트롤에 보이게 한다.
	// DBGrid 에서 읽은 ID 값으로 검색을 해서 그림만 따로 읽는다.
	FormMain->FDMainTable->Active = false;
	FormMain->FDMainTable->TableName = "User";
	FormMain->FDMainTable->Connection = FormMain->FDConnection1;
	FormMain->FDMainTable->Active = true;
	FormMain->FDMainTable->Open();

	// http://skql.tistory.com/2 DB기초설명 아주좋음
	// ID로 검색해서 그림을 보여줌
	FormMain->FDMainTable->SetKey();
	FormMain->FDMainTable->FieldByName("I_UserID")->AsString = LabelUserID->Caption;

	if (FormMain->FDMainTable->GotoKey()) {
		TStream* BStream = new TStream(); // 그림 읽고 저장을 위한 스트림
		BStream = FormMain->FDMainTable->CreateBlobStream((FormMain->FDMainTable->FieldByName("B_Sig")), bmRead);
		BStream->Position = 0;
		imgUser->Picture->LoadFromStream(BStream);

		BStream->Free();
	}

	FormMain->FDMainTable->Close();


*****두번째 문의:
특정 레코드 의 그림 column 에 그림을 변경 하려면, SQL query 를 어떻게 해야 하나요?

예를 들어 10번 레코드의 그림칼럼에 그림을 변경 하려 합니다.
FireDAC을 사용해도 되는데,, 아직 어쩧게 해야 하는지 잘 몰라서 문의 드립니다.

미리 감사 드립니다.


+ -

관련 글 리스트
75246 FireDAC 에서 이미지 불러오는 방법 문의 드립니다. 뽀뽀중 2607 2019/01/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.