Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
필드의 타입을 알아내는 법에 대해 궁금?
현재 선택된 레코드의 필드들의 타입을 알수 있는 방법을 알려주세요.
(fkdata, fklookup 과 같은 FieldKind가 아닌 string, date, float 등)
현재 선택된 레코드의 Field[필드번호].As형명 하면 현재 선택된 레코드의 필드번호에 해당되는 필드의 값을 읽어오는걸로 알고 있습니다.
위와 같은 방법으로 field번호로 해당 필드의 Type을 불러올수 있는 방법을 알고 계시다면 좀 가르쳐 주세요..
그럼 이만...
4
COMMENTS
이현아
•
1999.04.23 03:04
안녕하세요!
저는 이제 막 델파이 공부를 하는 직장인입니다.
다름이 아니구요!
Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을
출력하고자 합니다.
방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.
저장방법도 묻고 싶네요.
아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.
0
0
삭제
수정
댓글
신인재
•
1999.07.06 19:38
TField의 DataType 프로퍼티를 이용하시면 됩니다..
아래는 리스트 박스에 필드별로 add시키는 예제입니다...
for i := 0 to Table1.FieldCount - 1 do begin
case Table1.Fields[i].DataType of
ftstring : ListBox1.Items.Add(IntToStr(i) + ': String');
ftMemo : ListBox1.Items.Add(IntToStr(i) + ': Memo');
end;
end;
type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime,
ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob,
ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle,
ftDBaseOle, ftTypedBinary, ftCursor);
property DataType: TFieldType;
임형호 께서 말씀하시기를...
> 현재 선택된 레코드의 필드들의 타입을 알수 있는 방법을 알려주세요.
> (fkdata, fklookup 과 같은 FieldKind가 아닌 string, date, float 등)
> 현재 선택된 레코드의 Field[필드번호].As형명 하면 현재 선택된 레코드의 필드번호에 해당되는 필드의 값을 읽어오는걸로 알고 있습니다.
> 위와 같은 방법으로 field번호로 해당 필드의 Type을 불러올수 있는 방법을 알고 계시다면 좀 가르쳐 주세요..
> 그럼 이만...
0
0
삭제
수정
댓글
김영대
•
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.
0
0
삭제
수정
댓글
이현아
•
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을 사용할려고 하구요!
바쁘시겠지만 한번만 더 부탁을 드릴께요!
항상 감사드립니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
박광호
•
1999.04.24 18:28
1
COMMENTS
/
0
LIKES
스트링으로 받은 폼명으로 폼생성
이정욱
•
1999.04.24 20:32
폼 이름이 Form2라고 가정을 하고 Form2는 TForm형이라고 가정을 할때, Form2 := TForm.Create(Self); ...
배윤하
•
1999.07.07 00:33
2
COMMENTS
/
0
LIKES
dbgrid에 관해서
조복기
•
1999.07.07 01:07
안녕하세요..조복기입니다. 신인재님이 말씀하신것처럼 아래의 기능을 쓰고자 하신다면 국내외 통틀...
신인재
•
1999.07.07 00:38
님께서 원하시는 사양에 가장 부합하는 컴포넌트는 나이렉스에서 판매를 하고 있는 XPower가 있습니다. ...
박홍석
•
1999.04.24 20:25
2
COMMENTS
/
0
LIKES
날짜로 쿼리하기
강두헌
•
1999.04.27 22:14
박홍석 wrote: > 안녕하세요. > > 날짜형 필드를 가지고 쿼리하는 방법을 알고 싶습니다. > 여러가지...
신인재
•
1999.04.26 21:03
박홍석 wrote: > 안녕하세요. > > 날짜형 필드를 가지고 쿼리하는 방법을 알고 싶습니다. > 여러가지...
김상균
•
1999.07.06 23:49
1
COMMENTS
/
0
LIKES
키보드 이벤트를 무시하고 싶어요
신인재
•
1999.07.07 00:33
델파이 코리아에 하영재님이 올리신 팁입니다..... 팁란을 활용하면 질문을 올리지 않으셔도 많은 해답...
강민주
•
1999.07.06 22:45
2
COMMENTS
/
0
LIKES
퀵레포트에서 2개의 테이블 출력?
이헌
•
1999.04.24 18:48
안녕하세요! 아래와 같이 선문자를 사용하여 출력을 하려는데 printer.Canvas.TextOut 에서 255이상 필...
이정욱
•
1999.04.24 20:15
TextOut의 마지막 인자는 String형입니다. 기본적으로 델파이 32비트에서는 String형의 길이는 제한이 없...
이헌
•
1999.04.24 18:48
2
COMMENTS
/
0
LIKES
printer.Canvas.TextOut 의 처리한계는?
김태성
•
1999.07.06 22:30
안녕하세요? 지금까지 다른툴을사용하다, 지금부터 델파이와 친해보려합니다. 궁금한것은 멀티유저환경 ...
이정욱
•
1999.04.24 20:15
TextOut의 마지막 인자는 String형입니다. 기본적으로 델파이 32비트에서는 String형의 길이는 제한이 없...
그냥
1999.07.06 21:05
0
COMMENTS
/
0
LIKES
[추가질문]Re: create()안에 들어가는 것들의 차이좀
박광호
•
1999.04.24 18:28
1
COMMENTS
/
0
LIKES
스트링으로 받은 폼명으로 폼생성
이정욱
•
1999.04.24 20:32
폼 이름이 Form2라고 가정을 하고 Form2는 TForm형이라고 가정을 할때, Form2 := TForm.Create(Self); ...
그냥
1999.07.06 19:52
0
COMMENTS
/
0
LIKES
array of 와 String의 차이?
임형호
•
1999.07.06 19:19
4
COMMENTS
/
0
LIKES
필드의 타입을 알아내는 법에 대해 궁금?
현재 선택된 레코드의 필드들의 타입을 알수 있는 방법을 알려주세요. (fkdata, fklookup 과 같은 FieldKind가 아닌 string, date, float 등) 현재 선택된 레코드의 Field[필드번호].As형명 하면 현재 선택된 레코드의 필드번호에 해당되...
이현아
•
1999.04.23 03:04
안녕하세요! 저는 이제 막 델파이 공부를 하는 직장인입니다. 다름이 아니구요! Edit박스로 성명...
신인재
•
1999.07.06 19:38
TField의 DataType 프로퍼티를 이용하시면 됩니다.. 아래는 리스트 박스에 필드별로 add시키는 예제입니다...
김영대
•
1999.04.23 18:04
이현아 wrote: > 안녕하세요! > 저는 이제 막 델파이 공부를 하는 직장인입니다. > 다름이 아니구요! >...
이현아
•
1999.04.24 16:43
김영대 wrote: > 이현아 wrote: > > 안녕하세요! > > 저는 이제 막 델파이 공부를 하는 직장인입니다. ...
썬키
1999.07.06 19:07
0
COMMENTS
/
0
LIKES
DAO 3.6 배포방법
김경수
•
1999.04.24 05:42
2
COMMENTS
/
0
LIKES
인쇄관련
이정욱
•
1999.04.24 08:09
이 문제의 키는 Font.Height 에 있습니다. 화면이 72 DPI일 경우 Font.Height 의 공식은 아래와 같습니다....
김경수
•
1999.04.24 12:42
안녕하세요. 김경수입니다. 에구 size로 하니까 아래와 같은 문제가 없어지더군요. 답변 감사드립니다. ...
별지기
•
1999.07.06 18:34
1
COMMENTS
/
0
LIKES
조건문을 주고서 조회를 할때요....
최석기
•
1999.07.06 18:40
별지기 께서 말씀하시기를... > 안녕하십니까??저는 강남에 있는 별지기입니다. > 오늘 명함관리 프로그...
김성희
•
1999.04.24 09:25
1
COMMENTS
/
0
LIKES
파라메터 전송에 관한것인데요...
안치봉
•
1999.04.24 12:05
김성희 wrote: > 독립된 프로그램 사이에서 파라메터가 이동할수 있는 방법이나요? > 있다면 어떤방법인...
최석기
1999.07.06 18:33
0
COMMENTS
/
0
LIKES
1:1 통신을 통한 파일 전송
하윤철
•
1999.07.06 18:04
2
COMMENTS
/
0
LIKES
ISAPI로 SQL에 접속이 잘 안되네여.
김성희
•
1999.04.24 09:25
독립된 프로그램 사이에서 파라메터가 이동할수 있는 방법이나요? 있다면 어떤방법인지 설명좀 부탁드립니...
안치봉
•
1999.04.24 12:05
김성희 wrote: > 독립된 프로그램 사이에서 파라메터가 이동할수 있는 방법이나요? > 있다면 어떤방법인...
박상길
•
1999.07.06 18:01
3
COMMENTS
/
0
LIKES
주어진 영역의 Component 갯수 구하기
김영회
•
1999.04.24 04:00
안녕하세요. 여기는 천안입니다. Delphi4.0 C/S 버젼으로 인사정보관리 프로그램을 개발하여 설치하려...
최석기
•
1999.07.06 18:39
박상길 께서 말씀하시기를... > 원이나 사각형으로 주어진 영역의 Component수를 구하는 방법을 > 알고 ...
이정욱
•
1999.04.24 08:11
다른곳에서 잘되었다면 삼보에서도 잘 되어야 겠죠. 델파이와 BDE의 관계중 하나 가능성이 있는것이라면 ...
김경수
•
1999.04.24 05:42
4
COMMENTS
/
0
LIKES
인쇄관련
박성훈
•
1999.07.06 17:36
var Value: Byte; begin Value:=Trunc(Value And 255); --->요놈이 어떤 값으로 저장되는지요? ...
이정욱
•
1999.04.24 08:09
이 문제의 키는 Font.Height 에 있습니다. 화면이 72 DPI일 경우 Font.Height 의 공식은 아래와 같습니다....
안치봉
•
1999.07.06 22:35
간단히 비트연산에 대해 설명을 드리죠. 예를 들어... 1 and 1 은 1 이 됩니다. 이런건 2진수로 보면...
김경수
•
1999.04.24 12:42
안녕하세요. 김경수입니다. 에구 size로 하니까 아래와 같은 문제가 없어지더군요. 답변 감사드립니다. ...
우민석
1999.04.24 07:43
0
COMMENTS
/
0
LIKES
다이얼로그처럼 네트워크 환경사용
이한나
•
1999.07.06 16:17
1
COMMENTS
/
0
LIKES
콤보박스 이야기 1
하윤철
•
1999.07.06 17:38
이한나 께서 말씀하시기를... > 폼이 크리에이트 될때마다 combobox의 인덱스가 '0'인 값의 스트링이 보여...
임형호
1999/07/06 19:19
Views
178
Likes
0
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
저는 이제 막 델파이 공부를 하는 직장인입니다.
다름이 아니구요!
Edit박스로 성명이나 주민번호를 조회해서, DBIMAGE에 개개인의 사진을
출력하고자 합니다.
방법을 알려주시구요! 그리고 따로 사진이라는 필드(레코드)를 만들지 않았습니다.
저장방법도 묻고 싶네요.
아무쪼록 좋은 방법을 제시 해주시면 정말 감사드리겠습니다.