Q&A

  • <<급>>나이계산 소스좀 봐 주세용~~~^^*
안냐세요~~

오늘도 질문 내일도 질문하는 서지현입임다.

다름이 아니라 아래와 같은 소스가 있는데(만으로 나이계산 하는)...어느 부분에서

에러가 자꾸...(*표된부분)

그리고 이 소스를 좀 손봐서 써고 싶어요.. 아직은 저의 실려기 모자라고 형편이 없어서 마구 끼워 맞추어 넣었는데...



지금은 버튼 클릭으로 실행을 하도록 했지만, 그것보다는 제가 Table에 age필드르 추가시켜 만들었습니다.

이것을 이용하고 싶습니다.



먼저 나이를 구해서 새로 생긴 age필드에 넣어두고 그런후에 제가 원하는 나이대를 선택하면 해당 나이만 DBGrid에 뿌려주는 방식...(예, 20~24,25~29,30~34....이것은 ComboBox를 사용하고자 합니다.)



그러기 위해서는 먼저 구해서 age필드에 넣어야 하는데, 무슨 이벤트를 걸어야 age필드로 값이 들어가나요???



아래의 소스를 변경시켜 한수만.... 쉽게.... 아니면 완전히 다르게도 괜찮습니다.

무진장 궁금합니다.(참고로 Table형식의 DB입니다.)



많은 고수님들의 도움의 손길이 있으시길...



procedure TForm28.Button4Click(Sender: TObject);

var

yy,mmdd,nowyy,nowmmdd,reply:string;

yy1,mm1,dd1:integer;

begin

yy:=copy(Table1.fieldByName('주민등록번호').AsString,1,2);

mmdd:=copy(Table1.FieldByName('주민등록번호').AsString,3,4);

reply:=copy(Table1.FieldByName('주민등록번호').AsString,8,1);

if (reply='1')or(reply='2')then

yy:='19'+yy

else if(reply='3')or(reply='4') then

yy:='20'+yy

else begin

ShoWmessage('오류^^;');

exit;

end;

nowyy:=FormatDateTime('yyyy',Date);

nowmmdd:=FormatDateTime('mm',Date)+FormatDateTime('dd',Date);

if nowmmdd<=mmdd then

edit12.text:=IntToStr(IntToStr(nowyy)-IntToStr(yy)-1)------------ *

else

edit12.text:=IntToStr(IntToStr(nowyy)-IntToStr(yy));------------ *

end;



2  COMMENTS
  • Profile
    BisBuck 2000.02.11 00:48
    서지현 wrote:

    > 안냐세요~~

    > 오늘도 질문 내일도 질문하는 서지현입임다.

    > 다름이 아니라 아래와 같은 소스가 있는데(만으로 나이계산 하는)...어느 부분에서

    > 에러가 자꾸...(*표된부분)

    > 그리고 이 소스를 좀 손봐서 써고 싶어요.. 아직은 저의 실려기 모자라고 형편이 없어서 마구 끼워 맞추어 넣었는데...

    >

    > 지금은 버튼 클릭으로 실행을 하도록 했지만, 그것보다는 제가 Table에 age필드르 추가시켜 만들었습니다.

    > 이것을 이용하고 싶습니다.

    >

    > 먼저 나이를 구해서 새로 생긴 age필드에 넣어두고 그런후에 제가 원하는 나이대를 선택하면 해당 나이만 DBGrid에 뿌려주는 방식...(예, 20~24,25~29,30~34....이것은 ComboBox를 사용하고자 합니다.)

    >

    > 그러기 위해서는 먼저 구해서 age필드에 넣어야 하는데, 무슨 이벤트를 걸어야 age필드로 값이 들어가나요???

    =================================================================================

    age필드에 넣는것은 계산필드를 사용함이 어떨지요....

    (그냥 참고하시라는말...저도 계산필드쪽은 해본지 좀 되어서 기억이 안나거든여)

    어쨌든..중요한것은 밑의 소스겠져? ^^;;)=================================================================================

    >

    > 아래의 소스를 변경시켜 한수만.... 쉽게.... 아니면 완전히 다르게도 괜찮습니다.

    > 무진장 궁금합니다.(참고로 Table형식의 DB입니다.)

    >

    > 많은 고수님들의 도움의 손길이 있으시길...

    >

    > procedure TForm28.Button4Click(Sender: TObject);

    > var

    > yy,mmdd,nowyy,nowmmdd,reply:string;

    > yy1,mm1,dd1:integer;

    > begin

    > yy:=copy(Table1.fieldByName('주민등록번호').AsString,1,2);

    > mmdd:=copy(Table1.FieldByName('주민등록번호').AsString,3,4);

    > reply:=copy(Table1.FieldByName('주민등록번호').AsString,8,1);

    > if (reply='1')or(reply='2')then

    > yy:='19'+yy

    > else if(reply='3')or(reply='4') then

    > yy:='20'+yy

    > else begin

    > ShoWmessage('오류^^;');

    > exit;

    > end;

    > nowyy:=FormatDateTime('yyyy',Date);

    > nowmmdd:=FormatDateTime('mm',Date)+FormatDateTime('dd',Date);

    > if nowmmdd<=mmdd then

    > edit12.text:=IntToStr(IntToStr(nowyy)-IntToStr(yy)-1)------------ *

    > else

    > edit12.text:=IntToStr(IntToStr(nowyy)-IntToStr(yy));------------ *

    > end;



    =================================================================================

    nowyy는 String 아닌가여? 그럼 IntToStr이 아니라 StrToInt아닌가여?

    해결되었으리라 봅니다.

    =================================================================================

    아니면 어차피 Age필드에 값을 넣구나서 DBGrid에 Data를 보여주려면 Query를 해야

    할 터이니(뭐 Table을 직접 쓰는 방법도 있겠지만서두...) Query를 하기위한 SQL문을

    직접 Handling함이 어떠하신지....



    예를들자면

    select * from 테이블

    where substring(주민등록번호 from 1 for 8) > '19801231'

    and substring(주민등록번호 from 1 for 8) < '19761231'



    나이가 20~24 인경우 SQL문을 이런식으로 작성하면 Age필드없이도 가능할듯 싶습니다.

    (참고로 위의 1981년생이 20살이구,1977년생이 24맞나여?)

    =================================================================================

    from tissue with kreenex

  • Profile
    답변자 2000.02.10 04:54
    if nowmmdd<=mmdd then

    edit12.text:=IntToStr(StrToInt(nowyy)-StrToInt(yy)-1)------------ *

    else

    edit12.text:=IntToStr(StrToInt(nowyy)-StrToInt(yy));------------ *



    IntToStr --> StrToInt