Q&A

  • 새로운 필드에 구한 값 넣기
* 사용환경 : 델파이4/ Windows 98

* 에러 메시지 :

안냐세요~~~^^*



다름이 아니라 간단한 주소록 작업을 하고 있습니다.

그러다보니 궁금증...



주민등록번호는 알고 있는데, 그것을 이용해서 남자/여자 및 태어난 년도를 구해 나이를 계산하려고 합니다.

그래서 새로운 필드를 추가 해 놓은 상탠데 앞이 깜깜...



sex와 age라는 필드입니다. 구한 값을 이 필드에 각각 넣고자 합니다.

어떻게 하면 될런지.....

db형식이 Table형식으로 만들었으니 좀 쉽게 자세히 설명해 주신다면 감사하게습니다.



그럼 즐거운 하루 되시길...꾸벅





2  COMMENTS
  • Profile
    강인규 2000.02.08 02:55
    //뭐 이런식이면 되지않을지.....

    var

    s1,s2 : string;

    ageday : Tdate;

    i : integer;

    begin

    // 글구 db값을 떼어오면 되겠죠?

    s1:=copy(TableID.value,8,1); //8번째에서 처음값(무시했다면 죄송합니다.)

    s2:=copy(Table1ID.value,1,6);//ID를 주민번호라 치구...



    if s1 = '1' then

    Table1sex.value := '남'

    else if s1 = '1' then

    Table1sex.value := '여'

    else

    showmessage('성별이 정의되지 않았습니다.')



    ageday := strtodate('19'+copy(s2,1,2)+'-'+copy(s2,3,2)+'-'+copy(s2,5,2));



    i := trunc(now-ageday);

    i := i div 365;

    table1age.value := '만'+inttostr(i)+'세';

    //몇년 지나면 프로그램 다 뜯어 고쳐야 겠군요. 이제 나머지는 충분히 연구할 수

    //있으리라 봅니다.



    <<급>> 초보올림 wrote:

    > * 사용환경 : 델파이4/ Windows 98

    > * 에러 메시지 :

    > 안냐세요~~~^^*

    >

    > 다름이 아니라 간단한 주소록 작업을 하고 있습니다.

    > 그러다보니 궁금증...

    >

    > 주민등록번호는 알고 있는데, 그것을 이용해서 남자/여자 및 태어난 년도를 구해 나이를 계산하려고 합니다.

    > 그래서 새로운 필드를 추가 해 놓은 상탠데 앞이 깜깜...

    >

    > sex와 age라는 필드입니다. 구한 값을 이 필드에 각각 넣고자 합니다.

    > 어떻게 하면 될런지.....

    > db형식이 Table형식으로 만들었으니 좀 쉽게 자세히 설명해 주신다면 감사하게습니다.

    >

    > 그럼 즐거운 하루 되시길...꾸벅

    >

    >

  • Profile
    최원실 2000.02.08 02:25
    <<급>> 초보올림 wrote:

    > * 사용환경 : 델파이4/ Windows 98

    > * 에러 메시지 :

    > 안냐세요~~~^^*

    >

    > 다름이 아니라 간단한 주소록 작업을 하고 있습니다.

    > 그러다보니 궁금증...

    >

    > 주민등록번호는 알고 있는데, 그것을 이용해서 남자/여자 및 태어난 년도를 구해 나이를 계산하려고 합니다.

    > 그래서 새로운 필드를 추가 해 놓은 상탠데 앞이 깜깜...

    >

    > sex와 age라는 필드입니다. 구한 값을 이 필드에 각각 넣고자 합니다.

    > 어떻게 하면 될런지.....

    > db형식이 Table형식으로 만들었으니 좀 쉽게 자세히 설명해 주신다면 감사하게습니다.

    >

    > 그럼 즐거운 하루 되시길...꾸벅

    >



    안녕하세요..먼저 어떠한 식으로 값을 넣고자 하는지요..

    새로운 Recore을 입력하고 주민번호로 성별,나이를 계산하여 Record드가

    Post전에 sex,age필드에 자동으로 입력되게 하려면..

    (Sex : String, Age : Integer 이겠죠.)

    *** 주민번호 앞Field Name이 jumin_no1,

    뒷Field Name이 jumin_no2라 하면 ***



    1. 성별 구하기...

    주민번호 뒤의 첫째자리로 할때 (1.남자, 2.여자 맞나요..)

    1) 먼저 주민번호 뒤의 첫째자리 값을 알아낸다.

    -- Copy(Field Name,시작위치,가져올 범위)

    가. 필요한 변수를 Var절에 선언한다.

    * Var

    sSex, cSex : String;

    // sSex=가져온 값, cSex=계산된 성별

    나. 성별구하기

    * sSex := Copy(jumin_no2,1,1);

    if (sSex = '1') then

    cSex := '남'

    else

    cSex := '여';

    2. 나이 구하기 (생일무시???, 생일감안???

    --- 어떠한 방법으로 나이를 계산 할 것인지????)

    : 생일을 무시하고 년도로만 나이를 계산 하려면...

    1) 먼저 태어난 년도가 70년도 라면 현재년도에서 1970을 빼고 +1을 하면 되나..

    예) 가. 필요한 변수를 Var절에 선언한다.

    * Var 절

    YY1, MM1, DD1 : Word;

    // 현재의 년도, 월, 일 선언 (여기서는 년도만 쓰겠지만)

    sBirYear : String;

    // 태어난 년도가 들어갈 변수

    iBirYear, iAge : Integer;

    // iBirYear=계산된 태어난 년도, iAge=계산된 나이

    나. 값 구하기

    * DeCodeDate를 이용하여 현재의 년도를 구한다.

    -- DeCodeDate(Date,YY1,MM1,DD1)

    {Date : 쓰는 컴퓨터에 셋팅되어있는 현재의 일자.

    예를 들어 현재일자가 2000.02.07이라면..

    YY1=2000, MM1=2, DD1=7이 들어 갈 것이다.}

    * 태어난 년도 구하기

    sBirYear := Copy(jumin_no1,1,2); // 태어난 년도 2자리

    iBirYear := 1900 + StrToInt(sBirYear); // 계산된 태어난 년도

    * 나이 구하기

    iAge := (2000 - iBirYear) + 1;



    3. Data가 Post되기전 성별과 나이가 Table에 자동입력.

    *** Query Events에 보면 BeforePost Event가 있다.

    *** 위에서 구한 성별,나이를 입력되어지는 작용만 써주면 된다.

    procedure TForm1.Query1BeforePost(DataSet: TDataSet);

    begin

    Query1Sex.Value := cSex; // 구한 성별 입력하기.

    Query1Age.Value := iAge; // 구한 나이 입력하기.

    end;



    대략 적어보았는데 도움이 되실런지..

    남은 시간 잘 보내세요.

    그럼 이만...