Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
DBGrid에 어떻게 입력을 시켜야 할지?
1. ParamByName과 FieldByName의 차이점이 무엇인지요?
2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.
근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.
4
COMMENTS
김영해
•
1999.04.17 08:00
이슬 wrote:
> 1. ParamByName과 FieldByName의 차이점이 무엇인지요?
>
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.
> 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.
>
이런 방법도 있어요.
Table 콤포넌트를 더블 클릭하여 필드 에디트를 열고
원하는 필드의 이벤트 핸들러중에 GetText 라는게 있습니다.
여기는 필드의 내용은 바꾸지 않고 디스플레이만 바꾸어 줍니다.
procedure TForm1.Table1AGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
IF SENDER.AsString = '1' THEN
TEXT := '1이다'
ELSE
TEXT := '1아님';
end;
위와 같이 작성후 실행시켜보면 그리드에는 '1이다'라고 표시됩니다..
0
0
삭제
수정
댓글
신호성
•
1999.04.16 01:36
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.
> 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.
>
2번 질문에 대하여 ...
Table에 Alpha2자리로 잡았다면 '남','여'로 기록했을테고
이를 Select하여 Dbgrid로 보여줄때 '남자','여자'로 보고싶다는 질문이지요?
해당Field(Column)를 'sex'라 가정하고
방법1.
Table을 Alpha 2자리로 하셨는데 가장좋은 방법은 Logical(Boolean형)으로
잡는것 입니다.
Table에 기록할때 True 또는 False로 기록하고 이경우 FieldsEditor에서
Sex Field의 DisplayValues 프로퍼티에서 '남자;여자'(여;남)라고
설정하면 True인경우 '남자'로 false인경우 '여자'로 표시됩니다.
방법2.(Alpha 2자리로 유지할경우)
Query1(Table도 같은방법) 컴포넌트를 사용한다고 가정하면
먼저 FieldsEditor에서 New FIeld메뉴를 선택하여 새로운 Calculated Field를
생성합니다.(Calculated Field명 :'c_sex', Type: String Size: 4)
다음 Query1의 OnCalcFields 이벤트에서 다음과 같이 코딩합니다.
procedure TForm1.Query1CalcFields(DataSet:TDataSet);
begin
with DataSet do
begin
if FieldByName('sex').AsString = '남' then
FieldByName('c_sex').AsString := '남자'
else
FieldByName('c_sex').AsString := '여자';
end;
end;
0
0
삭제
수정
댓글
박종모
•
1999.04.15 04:44
이슬 wrote:
> 1. ParamByName과 FieldByName의 차이점이 무엇인지요?
>
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.
> 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.
>
델파이를 연구중인 초보 종모입니다.
조금의 도움이 되었으면 좋겠습니다.
ParamByName은 사용자가 임의로 설정한 Parameter를 지정한다.
다음 예는 Test.DB의 D_Date필드에 Parameter를 사용하여
날자값을 넣는 예이다.
Query1.SQL.Clear;
Query1.SQL.Add('Insert Into Test(D_Date) Values ( :P_Date )');
Query1.ParamByName('P_Date').ASDateTime := StrToDate(Edit1.Text);
Query1.ExecSQL;
FieldByName은 실제로 존재하는 필드를 지정한다.
한글은 한글자에 2Byte를 사용한다.
(남자,여자)는 4Byte를 필요로 하므로 Alhpa 4Byte의 크기가 필요할까?
라디오버튼 이름 : RA_MAN, RA_GIRL;
// 버튼 클릭 이벤트
procedure TForm1.Button1Click(Sender : TObject)
begin
if RA_MAN.Checked then
Table1.FieldByName('Sex').AsString := '남자'
else
Table1.FieldByName('Sex').AsString := '여자'
end;
0
0
삭제
수정
댓글
글쎄요
•
1999.04.15 05:41
추가로 답변합니다.
2번째 건데 답변이 잘 못된 것 같아요.
가장 좋은 방법은 DBGRID 대신에 STRINGGRID를 쓰는 거죠.
DBGRID의 DBGrid1DrawColumnCell 이벤트에 다음과 같이
쓰시면 됩니다.
'Sex'필드의 값이 'M'이면 남자
아니면 여자임.
if Column.Field = DM.MemberTable.FieldByName('Sex') then
begin
DBGrid1.Canvas.Font.Color := clBlack;
DBGrid1.Canvas.FillRect(Rect);
if Column.Field.AsString = 'M' then
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,'남자')
else
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,'여자');
end;
이렇게 하시면 되지만 약간의 버그가 존재합니다. 한 번 해보시면 알
것에요.^^ 그럼 즐거운 코딩하셔요.~~~
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
엠마
•
1999.04.17 06:04
5
COMMENTS
/
0
LIKES
쿼리를 다시하지 않고 인쇄할수 없나요..
김영해
•
1999.04.17 07:03
엠마
•
1999.04.17 09:18
김영해
•
1999.04.17 10:34
엠마
•
1999.04.17 19:40
김영해
•
1999.04.18 04:12
최선기
•
1999.06.26 21:15
1
COMMENTS
/
0
LIKES
fieldByName과 Parmabyname의 차이점 좀..
조복기
•
1999.06.26 21:55
최선기 께서 말씀하시기를... > fieldByName과 Parmabyname의 차이점 좀 자세히 알려주세요... > > 어...
손창근
•
1999.04.17 19:17
1
COMMENTS
/
0
LIKES
전화접속에 관하여...
이정욱
•
1999.04.17 21:46
그것은 자동으로 지원할텐데요... 컴퓨터에 전화접속 네트워킹이 설치되어 있고, 연결이 안되어있을때 네...
한
•
1999.06.26 21:09
1
COMMENTS
/
0
LIKES
바코드 입려기....조언좀...
박성훈
•
1999.06.28 03:01
그 친구에게는 미안한데.. 제가 잘 아는 친구가 바코드 관련 프로그램을 전문적으로 만드는 사람입니다. ...
강양규
•
1999.06.26 20:34
1
COMMENTS
/
0
LIKES
DateTimePicker의 날짜를 null로 입력할수 있나요
조복기
•
1999.06.26 21:14
강양규 께서 말씀하시기를... > 안년하세요.. > DateTimePicker를 사용하고 있는데 > > Query를 사용...
화랑
•
1999.04.16 01:29
4
COMMENTS
/
0
LIKES
[Q]프린터로 가는 데이타를 잡을수 있을까요?
이정욱
•
1999.04.16 02:17
아무래도 케이블을 그냥 두갈래로 뽑으신것 같군요. 그렇게 하면 아마도 제데로 안될것 같네요... 그것보...
화랑
•
1999.04.16 03:06
답변 감사합니다.. 문제는 제가 그 서버를 건드릴수가 없습니다. 지금 현재 나와있는 것은 프린터로 가...
이정욱
•
1999.04.16 05:08
프린터포트를 제어하는것은 문제가 없습니다. 그것을 지원하는 컴포넌트를 본적이 있는데.... 아마도 찾아...
화랑
•
1999.04.17 18:11
매번 감사합니다.. 저기 한가지만 더 하고 싶은데.. 프린트는 앱슨을 쓰거든요.. 혹시 서로 전달되는 ...
하남수
•
1999.06.26 20:23
2
COMMENTS
/
0
LIKES
2828에대한 답변에서 질문
조복기
•
1999.06.26 20:42
하남수 께서 말씀하시기를... > 저는 오라클을 사용하여 프로그래밍을 하고 있습니다. > 그리고 제가 알...
하남수
•
1999.06.26 20:36
델피 도움말에 다음가 같은 글이 있군요. 찾아보지도 않고 질문을 했내 그래도 한가지더 이상한 점은 SQL...
이호선
•
1999.06.26 20:10
1
COMMENTS
/
0
LIKES
ftp서버의 화일(.txt)을 프로그램에서 읽을려면..
김영대
•
1999.06.26 20:14
이호선 께서 말씀하시기를... > 안녕하세요. > 델파이 프로그램에서 ftp서버의 화일을 다운 받을려하는데...
엠마
•
1999.04.17 06:04
5
COMMENTS
/
0
LIKES
쿼리를 다시하지 않고 인쇄할수 없나요..
김영해
•
1999.04.17 07:03
엠마
•
1999.04.17 09:18
김영해
•
1999.04.17 10:34
엠마
•
1999.04.17 19:40
김영해
•
1999.04.18 04:12
이동화
•
1999.04.17 09:18
3
COMMENTS
/
0
LIKES
프린트에서 원하는 줄까지만...
최훈
•
1999.06.26 19:32
데이타베이스에서 자료를 읽어와서 트리를 구성하는데 자료가 없을때 노드가 하나도 없는데 트리를 클릭...
이정욱
•
1999.04.18 09:46
기본프린터에 직접 쓰기 팁 입니다. 아마도 업무용 개발자분께는 아주 유용한 자료가 되리라 생각이 듭니...
김영대
•
1999.06.26 20:20
최훈 께서 말씀하시기를... > 데이타베이스에서 자료를 읽어와서 트리를 구성하는데 > 자료가 없을때 노...
박성훈
•
1999.06.26 19:24
3
COMMENTS
/
0
LIKES
sql문에러 좀 봐주세요...
최석기
•
1999.06.26 19:53
박성훈 께서 말씀하시기를... > sql.add('Insert into "User.db" values('1111','1111','관리자',0)'); >...
조복기
•
1999.06.26 19:50
박성훈 께서 말씀하시기를... > sql.add('Insert into "User.db" values('1111','1111','관리자',0)'); ...
하남수
•
1999.06.26 19:41
"user.db'때문이 아닌가요 " "없어야 될 것 같은데.... 박성훈 께서 말씀하시기를... > sql.add('Ins...
엠마
•
1999.04.17 06:04
6
COMMENTS
/
0
LIKES
쿼리를 다시하지 않고 인쇄할수 없나요..
전 재헌
•
1999.06.26 19:21
김영해
•
1999.04.17 07:03
엠마
•
1999.04.17 09:18
김영해
•
1999.04.17 10:34
엠마
•
1999.04.17 19:40
김영해
•
1999.04.18 04:12
송동일
•
1999.06.26 17:42
1
COMMENTS
/
0
LIKES
좀 급해요....
신인재
•
1999.06.26 18:56
ActiveX컨트롤이라면 델파이 내부로 일딴 임포트를 하셔야 합니다.. 컴포넌트 메뉴에 import activex...
장철진
•
1999.04.17 08:55
2
COMMENTS
/
0
LIKES
공유는 어떻게.....
김영대
•
1999.04.19 18:49
장철진 wrote: > 안녕하세요 또 질문을 하게 되네요. > LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 ...
구창민
•
1999.04.18 02:26
장철진 wrote: > 안녕하세요 또 질문을 하게 되네요. > LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 ...
박성훈
•
1999.06.26 17:23
1
COMMENTS
/
0
LIKES
에디트컴포넌트에서 undo기능 구현
최석기
•
1999.06.26 17:39
박성훈 께서 말씀하시기를... > 에디트컴포넌트에서 코드상으로 undo기능을 구현하려면 어떻게 합니까? >...
박성훈
•
1999.06.26 17:10
1
COMMENTS
/
0
LIKES
콤마가 찍힌 문자열을 float형식으로 받아오려면...
최석기
•
1999.06.26 17:37
박성훈 께서 말씀하시기를... > panel1.caption:=formatfloat('#,##0',strtofloat(s)); > > 여기서 pan...
이슬
•
1999.04.15 03:34
4
COMMENTS
/
0
LIKES
DBGrid에 어떻게 입력을 시켜야 할지?
1. ParamByName과 FieldByName의 차이점이 무엇인지요? 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방...
김영해
•
1999.04.17 08:00
이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
신호성
•
1999.04.16 01:36
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
박종모
•
1999.04.15 04:44
이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
글쎄요
•
1999.04.15 05:41
추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
박성훈
1999.06.26 17:04
0
COMMENTS
/
0
LIKES
화면구성에 대한 조언을 부탁드립니다.
이한나(소라동생)
•
1999.06.26 14:07
5
COMMENTS
/
0
LIKES
리치에디터에서 특정글자에 대한 폰트컬러값 되요?
김영해
•
1999.04.15 08:49
안녕하세요 application을 개발하다 문제가 있어 이렇게 다시 질문합니다. 제목과 같이 일정시간 동안 입...
김영대
•
1999.06.26 20:16
이한나(소라동생) 께서 말씀하시기를... > 리치에디터에서 콜럼값과 라인값을 리턴받아 그에 해당하는 문...
이정욱
•
1999.04.15 10:21
아래 작업전환을 막는것이 있습니다. 이 코드는 나이렉스의 팁 게시판에서 가져왔습니다. var Form1:...
이한나(소라동생)
•
1999.06.27 12:08
김영대 께서 말씀하시기를... > 이한나(소라동생) 께서 말씀하시기를... > > 리치에디터에서 콜럼값과 라...
김영해
•
1999.04.17 07:48
감사합니다.이정욱님 많은 도움이 되었습니다.
이태호
1999.06.26 11:59
0
COMMENTS
/
0
LIKES
키입력 제어 [도와주세요!!!]
이슬
1999/04/15 03:34
Views
207
Likes
0
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 1. ParamByName과 FieldByName의 차이점이 무엇인지요?
>
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.
> 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.
>
이런 방법도 있어요.
Table 콤포넌트를 더블 클릭하여 필드 에디트를 열고
원하는 필드의 이벤트 핸들러중에 GetText 라는게 있습니다.
여기는 필드의 내용은 바꾸지 않고 디스플레이만 바꾸어 줍니다.
procedure TForm1.Table1AGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
IF SENDER.AsString = '1' THEN
TEXT := '1이다'
ELSE
TEXT := '1아님';
end;
위와 같이 작성후 실행시켜보면 그리드에는 '1이다'라고 표시됩니다..