TDatetimeField 에 보면 DisplayFomat 이라는 Property가 있습니다.
적용하는 방법은 아래 두가지 방법중 아무거나 사용하시면 됩니다.
1. 폼디자인 상태에서 작업시
Form 에서 TTable or TQuery 컴포넌트 에 보면(오른쪽 마우스 클릭)
Fields Editor라는 메뉴를 선택해서 Fields Editor 창을 띄운다음
Add all Field 메뉴 선택합니다.
해당날짜 Field를 선택하시고 Properties창에서 DisplayFormat 는 항목에
hh:nn (or yyyy-mm-dd hh:nn)입력합니다.
물론 TTable or TQuery 컴포넌트 Active 상태로 하고 작업하셔야 겠죠.
2. RunTime시(프로그래밍)
예를들어 다음과 같은 케이블이 있나면
테이블이름 tmp
필드1 => 날짜형
qry 라는 TQuery 컴포넌트가 Form에 있다면
with qry do
begin
.......
sql.Clear;
Sql.Add('select 필드1 from tmp');
open;
TDatetimeField (FieldByName('필드1')).DisplayFormat := 'hh:nn';
end;
제가 궁굼해 했던 것은
엑세스에서는 08:00이라는 값으로 시간이 저장 되어있는데
디비 그리드에서 그 값을 볼때는 1899-12-30 08:00:00 으로 나온다는 것입니다.
디비그리드에서 값이 08:00으로 나오게 하고 싶습니다.
FormatDateTime()함수를 사용해서 메시지로는 출력을 바꿀수 있지만
디비그리드자체에 있는 값이 08:00으로 나오게 하는 방법을 알고 싶습니다.
안녕하세요.
디비그리드는 데이타소스에 연결된 디스플레이용 컴퍼넌트일뿐이라서
컨트롤을 직접 할수가 없습니다.
대신 데이타소스에 연결된 쿼리같은 필드에 값을 들어갈때 임의로 변환을 해주거나 쿼리문에서 select 시 변환을 해서 받아야 합니다.
즉 일자를 제외한 시간과 분만 받아야 한다는 거죠..
또는 필드를 하나 만들어서 원래의 일자와시간이 보이는 필드는 감추고
새로 만든필드에 값을 넣어서 보여지는 식으로밖에는 할수 없습니다.
나열되는 데이타가 많다면 처음부터 가져올때 변형을 하는게 낳을것같구
굳이 많지 않다면 루프한번 돌려서 값을 입력시켜주시는게 좋을듯 싶네요..
하이픈(-)이나 콜론 (:) 같은것은 그리드의 maskedit 프로퍼티를 사용하면 필드값 자체에 하이픈이나 콜론을 입력하지 않아도 디스플레이로 가능합니다.
TDatetimeField 에 보면 DisplayFomat 이라는 Property가 있습니다.
적용하는 방법은 아래 두가지 방법중 아무거나 사용하시면 됩니다.
1. 폼디자인 상태에서 작업시
Form 에서 TTable or TQuery 컴포넌트 에 보면(오른쪽 마우스 클릭)
Fields Editor라는 메뉴를 선택해서 Fields Editor 창을 띄운다음
Add all Field 메뉴 선택합니다.
해당날짜 Field를 선택하시고 Properties창에서 DisplayFormat 는 항목에
hh:nn (or yyyy-mm-dd hh:nn)입력합니다.
물론 TTable or TQuery 컴포넌트 Active 상태로 하고 작업하셔야 겠죠.
2. RunTime시(프로그래밍)
예를들어 다음과 같은 케이블이 있나면
테이블이름 tmp
필드1 => 날짜형
qry 라는 TQuery 컴포넌트가 Form에 있다면
with qry do
begin
.......
sql.Clear;
Sql.Add('select 필드1 from tmp');
open;
TDatetimeField (FieldByName('필드1')).DisplayFormat := 'hh:nn';
end;
그럼...