Q&A

  • AppyUpdate처리시에 Error Code ....
안녕하세요..



Insert,Update,Delete시에 UpdateQuery를 사용해서 처리를 합니다.

ApplyUpdates할 경우 Error가 발생하면 코드값를 받아서

이미 만들어 져 있는 Error Table에서 자료를 가져와서 Message를

보여줘야 하느데

Error Code value를 어떻게 가져와야 하는지 ..

가르쳐 주세요



4  COMMENTS
  • Profile
    이현아 1999.04.23 03:04
    안녕하세요!



    저는 이제 막 델파이 공부를 하는 직장인입니다.



    다름이 아니구요!



    Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을



    출력하고자 합니다.



    방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.



    저장방법도 묻고 싶네요.



    아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.

  • Profile
    송기원 1999.07.06 18:10
    EdbEngineError 의 errors[index].errorcode 또는

    errors[index].NativeError를 참조하면 될거 같은데..

    EdbEnginError와 TdbError를 Help에서 찾아 보심이....



    즐거운 코딩되세요..





    정 께서 말씀하시기를...

    > 안녕하세요..

    >

    > Insert,Update,Delete시에 UpdateQuery를 사용해서 처리를 합니다.

    > ApplyUpdates할 경우 Error가 발생하면 코드값를 받아서

    > 이미 만들어 져 있는 Error Table에서 자료를 가져와서 Message를

    > 보여줘야 하느데

    > Error Code value를 어떻게 가져와야 하는지 ..

    > 가르쳐 주세요

    >





  • Profile
    김영대 1999.04.23 18:04
    이현아 wrote:

    > 안녕하세요!

    > 저는 이제 막 델파이 공부를 하는 직장인입니다.

    > 다름이 아니구요!

    > Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을

    > 출력하고자 합니다.

    > 방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.

    > 저장방법도 묻고 싶네요.

    > 아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.



    안녕하세요 김영대입니다

    만약 사용하시는 DBMS 가 ORACLE 이면 blob 필드의 data type을

    long raw 로 사용하시면 됩니다

    참고로 long 형은 2GB의 text 자료를 long raw 는 binary 자료를

    2GB 까지 저장할 수 있습니다

    다른 DB 들도 blob 필드를 만드는 해당 type이 따로 있을겁니다



    unit DbJpeg;



    interface



    uses

    Db, ExtCtrls, Classes, Graphics, Jpeg, SysUtils;



    implementation



    procedure JPEGSaveToDB(BlobField: TBlobField; FileName: String);

    var

    jpg: TJPEGImage;

    bmp: TBitmap;

    mem: TMemoryStream;

    begin

    if LowerCase(ExtractFileExt(FileName)) = '.jpg' then

    begin

    with BlobField do

    begin

    // 아래 DataSet.Edit; 는 저장된 그림을 수정(UPDATE)시 사용하며

    // 신규 등록(INSERT)일때는 DataSet.Insert; 로 바꾸어야 한다

    DataSet.Edit;

    LoadFromFile(FileName);

    DataSet.Post;

    end;

    end

    else if LowerCase(ExtractFileExt(FileName)) = '.bmp' then

    begin

    // 파일이 BMP 이면 먼저 JPEG(JPG) 파일로 바꾼 후 저장한다

    bmp := TBitmap.Create;

    jpg := TJPEGImage.Create;

    mem := TMemoryStream.Create;

    try

    bmp.LoadFromFile(FileName);

    jpg.Assign(bmp);

    jpg.SaveToStream(mem);

    mem.Position := 0;

    with BlobField do begin

    DataSet.Edit;

    LoadFromStream(mem);

    DataSet.Post;

    end;

    finally

    mem.Free;

    jpg.Free;

    bmp.Free;

    end;

    end

    end;



    procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);

    var

    jpg: TJPEGImage;

    mem: TMemoryStream;

    begin

    jpg := TJPEGImage.Create;

    mem := TMemoryStream.Create;

    try

    if BlobField.IsNull then

    Image.Picture := nil

    else begin

    BlobField.SaveToStream(mem);

    mem.Position := 0;

    jpg.LoadFromStream(mem);

    Image.Picture.Graphic := jpg;

    end;

    finally

    mem.Free;

    jpg.Free;

    end;

    end;



    end.



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

    // 아래는 DB에 저장된 JPEG(JPG)를 DBGrid에 출력하는 예제입니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Db, DBTables, Grids, jpeg, extctrls, DBGrids;



    type

    TForm1 = class(TForm)

    DataSource1: TDataSource;

    Query1: TQuery;

    Database1: TDatabase;

    DBGridEH1: TDBGridEH;

    procedure DBGridEH1DrawColumnCell(Sender: TObject; const Rect: TRect;

    DataCol: Integer; Column: TColumnEH; State: TGridDrawState);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);

    var

    jpg: TJPEGImage;

    mem: TMemoryStream;

    begin

    jpg := TJPEGImage.Create;

    mem := TMemoryStream.Create;

    try

    if BlobField.IsNull then

    Image.Picture := nil

    else begin

    BlobField.SaveToStream(mem);

    mem.Position := 0;

    jpg.LoadFromStream(mem);

    Image.Picture.Graphic := jpg;

    end;

    finally

    mem.Free;

    jpg.Free;

    end;

    end;



    procedure TForm1.DBGridEH1DrawColumnCell(Sender: TObject;

    const Rect: TRect; DataCol: Integer; Column: TColumnEH;

    State: TGridDrawState);

    var

    JPGimage: TImage;

    SRect, DRect: TRect;

    begin

    if Column.FieldName= 'PHOTO' then

    begin

    JPGimage := TImage.Create(Self);

    JPEGLoadFromDB(TBlobField(Query1.FieldByName('PHOTO')), JPGimage);

    TDBGrid(Sender).Canvas.FillRect(Rect);



    TDBGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, JPGimage.Picture.Graphic);

    // Stretch 는 아래와 같이...

    // TDBGrid(Sender).Canvas.StretchDraw(Rect, JPGimage.Picture.Graphic);

    JPGimage.Free;

    end

    else // 다른 필드

    begin

    TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);

    end;

    end;



    end.



  • Profile
    이현아 1999.04.24 16:43
    김영대 wrote:

    > 이현아 wrote:

    > > 안녕하세요!

    > > 저는 이제 막 델파이 공부를 하는 직장인입니다.

    > > 다름이 아니구요!

    > > Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을

    > > 출력하고자 합니다.

    > > 방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.

    > > 저장방법도 묻고 싶네요.

    > > 아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.

    >

    > 안녕하세요 김영대입니다

    > 만약 사용하시는 DBMS 가 ORACLE 이면 blob 필드의 data type을

    > long raw 로 사용하시면 됩니다

    > 참고로 long 형은 2GB의 text 자료를 long raw 는 binary 자료를

    > 2GB 까지 저장할 수 있습니다

    > 다른 DB 들도 blob 필드를 만드는 해당 type이 따로 있을겁니다

    >

    > unit DbJpeg;

    >

    > interface

    >

    > uses

    > Db, ExtCtrls, Classes, Graphics, Jpeg, SysUtils;

    >

    > implementation

    >

    > procedure JPEGSaveToDB(BlobField: TBlobField; FileName: String);

    > var

    > jpg: TJPEGImage;

    > bmp: TBitmap;

    > mem: TMemoryStream;

    > begin

    > if LowerCase(ExtractFileExt(FileName)) = '.jpg' then

    > begin

    > with BlobField do

    > begin

    > // 아래 DataSet.Edit; 는 저장된 그림을 수정(UPDATE)시 사용하며

    > // 신규 등록(INSERT)일때는 DataSet.Insert; 로 바꾸어야 한다

    > DataSet.Edit;

    > LoadFromFile(FileName);

    > DataSet.Post;

    > end;

    > end

    > else if LowerCase(ExtractFileExt(FileName)) = '.bmp' then

    > begin

    > // 파일이 BMP 이면 먼저 JPEG(JPG) 파일로 바꾼 후 저장한다

    > bmp := TBitmap.Create;

    > jpg := TJPEGImage.Create;

    > mem := TMemoryStream.Create;

    > try

    > bmp.LoadFromFile(FileName);

    > jpg.Assign(bmp);

    > jpg.SaveToStream(mem);

    > mem.Position := 0;

    > with BlobField do begin

    > DataSet.Edit;

    > LoadFromStream(mem);

    > DataSet.Post;

    > end;

    > finally

    > mem.Free;

    > jpg.Free;

    > bmp.Free;

    > end;

    > end

    > end;

    >

    > procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);

    > var

    > jpg: TJPEGImage;

    > mem: TMemoryStream;

    > begin

    > jpg := TJPEGImage.Create;

    > mem := TMemoryStream.Create;

    > try

    > if BlobField.IsNull then

    > Image.Picture := nil

    > else begin

    > BlobField.SaveToStream(mem);

    > mem.Position := 0;

    > jpg.LoadFromStream(mem);

    > Image.Picture.Graphic := jpg;

    > end;

    > finally

    > mem.Free;

    > jpg.Free;

    > end;

    > end;

    >

    > end.

    >

    > -------------------------------------------------------------------------

    > // 아래는 DB에 저장된 JPEG(JPG)를 DBGrid에 출력하는 예제입니다

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > Db, DBTables, Grids, jpeg, extctrls, DBGrids;

    >

    > type

    > TForm1 = class(TForm)

    > DataSource1: TDataSource;

    > Query1: TQuery;

    > Database1: TDatabase;

    > DBGridEH1: TDBGridEH;

    > procedure DBGridEH1DrawColumnCell(Sender: TObject; const Rect: TRect;

    > DataCol: Integer; Column: TColumnEH; State: TGridDrawState);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    > {$R *.DFM}

    >

    > procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);

    > var

    > jpg: TJPEGImage;

    > mem: TMemoryStream;

    > begin

    > jpg := TJPEGImage.Create;

    > mem := TMemoryStream.Create;

    > try

    > if BlobField.IsNull then

    > Image.Picture := nil

    > else begin

    > BlobField.SaveToStream(mem);

    > mem.Position := 0;

    > jpg.LoadFromStream(mem);

    > Image.Picture.Graphic := jpg;

    > end;

    > finally

    > mem.Free;

    > jpg.Free;

    > end;

    > end;

    >

    > procedure TForm1.DBGridEH1DrawColumnCell(Sender: TObject;

    > const Rect: TRect; DataCol: Integer; Column: TColumnEH;

    > State: TGridDrawState);

    > var

    > JPGimage: TImage;

    > SRect, DRect: TRect;

    > begin

    > if Column.FieldName= 'PHOTO' then

    > begin

    > JPGimage := TImage.Create(Self);

    > JPEGLoadFromDB(TBlobField(Query1.FieldByName('PHOTO')), JPGimage);

    > TDBGrid(Sender).Canvas.FillRect(Rect);

    >

    > TDBGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, JPGimage.Picture.Graphic);

    > // Stretch 는 아래와 같이...

    > // TDBGrid(Sender).Canvas.StretchDraw(Rect, JPGimage.Picture.Graphic);

    > JPGimage.Free;

    > end

    > else // 다른 필드

    > begin

    > TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);

    > end;

    > end;

    >

    > end.

    >



    답변 진심으로 감사드려요!

    그런데 전 DB를 InormixDB를 사용합니다.

    또한 저의 계획은 Local DB를 사용해(즉 informix DB)를

    C 디렉토리를 따로 만들어 사진을 사번에 맞게 넣고자 합니다.

    기법은 SQL을 사용할려고 하구요!

    바쁘시겠지만 한번만 더 부탁을 드릴께요!



    항상 감사드립니다.









    • 공대규
    • 1999.04.23 22:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.23 23:23
      공대규 wrote: > 안녕하십니까요? > > PaintBox에 Image1.canvas를 카피하려 할 때, 에러가 납니다. >...
    • 곽승주
    • 1999.07.06 00:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      1999.07.06 02:09
      곽승주 께서 말씀하시기를... > Edit콘트롤에 KeyPress이벤트를 걸러두고 그안에서 엔터키(#13)가 > 눌려...
    • 공대규
    • 1999.04.23 22:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.23 23:23
      공대규 wrote: > 안녕하십니까요? > > PaintBox에 Image1.canvas를 카피하려 할 때, 에러가 납니다. >...
    • 그냥
      1999.07.06 02:03
      답이 아닌거 같긴한데... 제가 아는한 TQuery는 filer를 하지 않아도 Sql문에 그냥 조건절(where)를 사...
    • 이상준
    • 1999.04.23 18:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.04.23 21:07
      이상준 wrote: > 윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의 > 컴퓨터 이름...
    • 고광준
      1999.07.05 23:06
      Unix Server와 PC와 UDP Socket을 써서 통신을 하려고 합니다. 근데 Unix Server에서 Port를 입력할때 hto...
    • 김영대
      1999.07.05 23:50
      고광준 께서 말씀하시기를... > Unix Server와 PC와 UDP Socket을 써서 통신을 하려고 합니다. > 근데 Un...
    • 이민병
    • 1999.04.23 19:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김경수
      1999.04.24 05:06
      안녕하세요 김경수라는 사람입니다. 전 nt용 오라클8하구 델파이4랑 해봤는데 뭐 같은내용이겠지요.. 오...
    • camplus
    • 1999.07.05 22:46
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최석기
    • 1999.07.05 21:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이상준
      1999.04.23 18:51
      윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의 컴퓨터 이름을 읽어오는 방법을 ...
    • 김영대
      1999.04.23 21:07
      이상준 wrote: > 윈도95의 바탕화면에 있는 네트워크 환경처럼 LAN으로 연결된 컴퓨터들의 > 컴퓨터 이름...
    • 임윤경
    • 1999.04.23 00:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Jimmy
      1999.07.05 21:11
      안녕하세요... 회계관련 프로그램인데...두 테이블에 '잔액'이라는 필드가 있습니다. 이걸 계산해야 하는...
    • 김영대
      1999.04.23 18:23
      임윤경 wrote: > 제가 김영대씨 홈페이지에서 받은 FTP서버의 파일을 PC로 다운로드하는 소스에 보면, rec...
    • bisbuck
    • 1999.07.05 20:58
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 1999.07.05 20:27
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이현아
      1999.04.23 03:04
      안녕하세요! 저는 이제 막 델파이 공부를 하는 직장인입니다. 다름이 아니구요! Edit박스로 성명...
    • 송기원
      1999.07.06 18:10
      EdbEngineError 의 errors[index].errorcode 또는 errors[index].NativeError를 참조하면 될거 같은데.. ...
    • 김영대
      1999.04.23 18:04
      이현아 wrote: > 안녕하세요! > 저는 이제 막 델파이 공부를 하는 직장인입니다. > 다름이 아니구요! >...
    • 이현아
      1999.04.24 16:43
      김영대 wrote: > 이현아 wrote: > > 안녕하세요! > > 저는 이제 막 델파이 공부를 하는 직장인입니다. ...
    • 강지영
      1999.04.23 00:51
      구창민님의 홈페이지 팁/강좌란에서 읽은 팁입니다. 실행을 하니까 그리드의 타이틀을 클릭하는 대로 쿼리...
    • 신인재
      1999.07.05 21:15
      Parent 프로퍼티를 설정하셔야 합니다. 아래와 같이 MyBtn.Parent := ScrollBox1; 서경철 께서 말씀...
    • 배리스
      1999.04.23 17:51
      안녕하세요. 강지영씨.. 오늘은 날씨가 별로 좋지 않네요. 하지만 이런 날씨가 더 좋은것 같습니다. 왜냐...
    • 김형하
    • 1999.04.22 20:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 레드맨
      1999.07.05 20:00
      델파이를처음 시작하려고 합니다. 뭐부터시작 해야할지? 자세히설명해주세요!!!부탁합니다.....
    • 이정욱
      1999.04.23 07:10
      네.. 저희도 통신 프로그램의 터미널을 만들때 부딪혔던 문제입니다. 프린터같은 경우면 간단하게 LineTo...
    • 배리스
    • 1999.04.23 06:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.23 07:08
      파워러브 델파이 창간호의 일부 입니다~ 1. 현재 라인번호 알아내기 메모에서 현재 Caret이 위치하...
    • 문창완
    • 1999.04.23 05:16
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Endy
      1999.07.05 19:19
      저는 MS-SQL7.0을 사용합니다. Delphi에서 StoreProcedure를 실행하면 BDE Engine Error가 발생 합니다. 물...
    • 이정욱
      1999.04.23 07:03
      참.. 혹시 검색엔진이 야후같은것을 말씀하신것이라면 기본개념은 이렇습니다. 별것 아니죠. 데이타 베...
    • 조복기
      1999.07.05 19:54
      Endy 께서 말씀하시기를... > 저는 MS-SQL7.0을 사용합니다. Delphi에서 StoreProcedure를 실행하면 BDE E...
    • 이정욱
      1999.04.23 07:01
      그냥 참고만 하세요~ http://www.nobreak.com 에 가시면 CrazySearch라는것이 있습니다. 그것의 소스를 ...