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

델파이 Q&A
Delphi Programming Q&A
[11636] Re:MS SQL 에 IMAGE 저장및읽기 문제(제발)
박지훈.임프 [cbuilder] 4295 읽음    2007-12-10 14:09
에러가 난 직접적인 원인은, TPicture 객체에 TField 객체를 직접 Assign() 했기 때문입니다.
두 클래스의 객체들은 당연히 서로 호환이 안되므로 어사인이 안됩니다.

BLOB 필드의 값을 가져오려면, TBlobStream이나 CreateBlobStream을 이용해야 합니다.
헬프에 보시면 친절한 제가 있고, 다음의 글도 참고해보세요.
http://delphi.borlandforum.com/impboard/impboard.dll?action=read&db=del_qna&no=7461

그럼...


이우석 님이 쓰신 글 :
: 저장은 되는데 읽기가 안됩니다.
:
: 읽기에서 'Bitmap Image is not Valid' 라는 에러가 납니다.
: 원인을 모르게어요
:
: MSSQL에서 테이불은
:
: 열이름       데이터형식  길이
: EmpCode varchar      10
: Picture     image         16
:
: 간단히 이렇게 디자인되었습니다.
:
: Delphi 7을 사용하고 있습니다.
:
: ////////////////////////////////////////////////////////////////////////////////////////////////
: unit Unit1;
:
: interface
:
: uses
:   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
:   Dialogs, StdCtrls, ExtCtrls, DB, ADODB, ExtDlgs, Jpeg, Grids, DBGrids,
:   DBCtrls;
:
: type
:   TForm1 = class(TForm)
:     ADOConnection1: TADOConnection;
:     QQ: TADOQuery;
:     Button1: TButton;
:     OPD: TOpenPictureDialog;
:     btnSave: TButton;
:     btnRead: TButton;
:     DataSource1: TDataSource;
:     DBImage1: TDBImage;
:     Panel1: TPanel;
:     IMG: TImage;
:     Panel2: TPanel;
:     IMG1: TImage;
:     procedure Button1Click(Sender: TObject);
:     procedure btnSaveClick(Sender: TObject);
:     procedure btnReadClick(Sender: TObject);
:   private
:   public
:   end;
:
: var
:   Form1: TForm1;
:
: implementation
:
: {$R *.dfm}
: //그림찾기
: procedure TForm1.Button1Click(Sender: TObject);
: begin
:   if OPD.Execute then
:     IMG.Picture.LoadFromFile(OPD.FileName);
: end;
: //저장
: procedure TForm1.btnSaveClick(Sender: TObject);
: var     BitImage  : TBitmap;
:          JpegImage : TJPEGImage;
:          MemStream : TMemoryStream;
: begin
:    QQ.Close;
:    QQ.SQL.Clear;
:    QQ.SQL.Add('INSERT INTO TMP_PICTURE (EmpCode, Picture )');
:    QQ.SQL.Add('VALUES (''2000'', :Picture)');
:    if IMG.Picture.Graphic is TBitmap then  begin
:      BitImage   := TBitmap.Create;
:      MemStream  := TMemoryStream.Create;
:
:      MemStream.Position := 0;
:      if IMG.Picture.Graphic = nil then   begin
:        QQ.Parameters.ParamByName( 'PICTURE' ).Assign( IMG.Picture.Bitmap );
:        end
:      else begin
:        BitImage.Assign( IMG.Picture.Bitmap );
:        BitImage.SaveToStream( MemStream );
:        QQ.Parameters.ParamByName( 'PICTURE' ).LoadFromStream( MemStream, ftBlob );
:        end;
:      QQ.ExecSQL;
:      BitImage.Destroy;
:      MemStream.Destroy;
:      end else
:    if IMG.Picture.Graphic is TJPEGImage then begin
:      JpegImage   := TJPEGImage.Create;
:      MemStream  := TMemoryStream.Create;
:      MemStream.Position := 0;
:      if IMG.Picture.Graphic = nil then  begin
:        QQ.Parameters.ParamByName( 'PICTURE' ).Assign( IMG.Picture.Bitmap );
:        end
:     else  begin
:        JPEGImage.Assign( IMG.Picture.Graphic );
:        JPEGImage.SaveToStream( MemStream );
:        QQ.Parameters.ParamByName( 'PICTURE' ).LoadFromStream( MemStream, ftBlob );
:        end;
:     QQ.ExecSQL;
:     JPEGImage.Destroy;
:     MemStream.Destroy;
:     end;
: end;
:
: //읽기
: procedure TForm1.btnReadClick(Sender: TObject);
: begin
:   QQ.Close;
:   QQ.SQL.Clear;
:   QQ.SQL.Add('select PICTURE from TMP_PICTURE');
:   QQ.SQL.Add('where EMpCode = ''2000''');
:   QQ.Open;
:   if QQ.FieldByName('PICTURE').IsBlob then
:      IMG1.Picture.Assign(QQ.FieldByName('PICTURE'));  //여기서 에러 'Bitmap Image is not Valid'
: end;
: ///////////////////////////////////////////////////////////////////////////////////////////////////////////
:
: 샘풀 프로그램을 올립니다. 고견부탁합니다

+ -

관련 글 리스트
11614 MS SQL 에 IMAGE 저장및읽기 문제(제발) 이우석 2690 2007/11/22
11636     Re:MS SQL 에 IMAGE 저장및읽기 문제(제발) 박지훈.임프 4295 2007/12/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.