Q&A

  • Re: 레코드 구조의 TEXT -> DB
서영택 wrote:

> *.txt파일의 구조는 Header Record, Data Recodr, Trailer Record

> 3부분으로 나뉘어져있고

> 각레코드별 구분코드가 있고 80칼럼을 기준으로 1Record드가 작성되는데

> 레코드별로 라인구분없이 연속적으로 작성된 레코드입니다.

> Header와 Trailer는 1나씩 존재하지만 Data는 여러개가 존재합니다.

> 이것을 db에 저장하려고 하는데 방법을 몰라서 ...

> 빠른답변을 기다리겠습니다.

>

> -------------->Record구조<--------------

> [Header Record]

> H_Gubun : String[2];

> H_GiroNo : String[7];

> H_Date : String[6];

> H_No : String[6];

> H_Space : String[59];

>

> [Data Record]

> D_Gubun : String[2];

> D_Serial : String[7];

> D_Rdate : String[6];

> D_Code : String[6];

> D_FindNo : String[20];

> D_Amt : String[10];

> D_FrameNo : String[6];

> D_JangGubun : String[1];

> D_Sdate : String[6];

> D_Space : String[16];

>

> [Trailer Record]

> T_Gubun : String[2];

> T_Cnt : String[7];

> T_Amt : String[12];

> T_RejectCnt : String[7];

> T_RejectAmt : String[12];

> T_InfoCnt : String[7];

> T_InfoAmt : String[12];

> T_TotCnt : String[7];

> T_TotAmt : String[12];

> T_Space : String[2];

>

> 감사합니다.



안녕하세요 김영대입니다

엑셀의 csv 파일처럼 콤마로 구분된 파일이라면 공개된 소스가 많은데

질문을 보니 record 구조의 파일을 읽어서 처리하는 문제인것 같습니다

아래는 설명상 제 임의로 만든 레코드로 전체적인 흐름만 파악해 보세요



type

TDataIn = record

flag : string[1]; {'C':계속, 'E':끝}

seqno : string[4]; {연번}

medno : string[15]; {의료보험번호}

juminid : string[14]; {주민번호}

korname : string[12]; {성명}

medgr : string[5]; {등급}

monpay : string[11]; {보수월액, '999,999,999'}

meddate : string[10]; {자격취득일, yyyy.mm.dd}

dismonyn : string[1]; {취득월면제여부}

medbld : string[10]; {근무지, '서울시'}

end;



var

DataIn: TDataIn;

Fin: file of TDataIn;



....

AssignFile(Fin, 'data.txt');

System.Reset(Fin); {file open}

System.Seek(Fin, 0); {FilePoint 0}



Read(Fin, DataIn);

while not Eof(Fin) then

begin

QRL_seqno.Caption := seqno;

QRL_medno.Caption := medno;

QRL_juminid.Caption := juminid;

QRL_korname.Caption := korname;

QRL_medgr.Caption := SysUtils.Trim(medgr);

QRL_monpay.Caption := monpay;

QRL_meddate.Caption := meddate;

QRL_dismonyn.Caption := dismonyn;

QRL_medbld.Caption := medbld;

if (DataIn.Flag = 'E') then // 특정 구분의 레코드일때...

begin

QRL_medbld.Caption := '';

end;

Read(Fin, DataIn);

end;

System.Close(Fin);





1  COMMENTS
  • Profile
    서영택 1999.05.21 00:53
    김영대 wrote:

    > 서영택 wrote:

    > > *.txt파일의 구조는 Header Record, Data Recodr, Trailer Record

    > > 3부분으로 나뉘어져있고

    > > 각레코드별 구분코드가 있고 80칼럼을 기준으로 1Record드가 작성되는데

    > > 레코드별로 라인구분없이 연속적으로 작성된 레코드입니다.

    > > Header와 Trailer는 1나씩 존재하지만 Data는 여러개가 존재합니다.

    > > 이것을 db에 저장하려고 하는데 방법을 몰라서 ...

    > > 빠른답변을 기다리겠습니다.

    > >

    > > -------------->Record구조<--------------

    > > [Header Record]

    > > H_Gubun : String[2];

    > > H_GiroNo : String[7];

    > > H_Date : String[6];

    > > H_No : String[6];

    > > H_Space : String[59];

    > >

    > > [Data Record]

    > > D_Gubun : String[2];

    > > D_Serial : String[7];

    > > D_Rdate : String[6];

    > > D_Code : String[6];

    > > D_FindNo : String[20];

    > > D_Amt : String[10];

    > > D_FrameNo : String[6];

    > > D_JangGubun : String[1];

    > > D_Sdate : String[6];

    > > D_Space : String[16];

    > >

    > > [Trailer Record]

    > > T_Gubun : String[2];

    > > T_Cnt : String[7];

    > > T_Amt : String[12];

    > > T_RejectCnt : String[7];

    > > T_RejectAmt : String[12];

    > > T_InfoCnt : String[7];

    > > T_InfoAmt : String[12];

    > > T_TotCnt : String[7];

    > > T_TotAmt : String[12];

    > > T_Space : String[2];

    > >

    > > 감사합니다.

    >

    > 안녕하세요 김영대입니다

    > 엑셀의 csv 파일처럼 콤마로 구분된 파일이라면 공개된 소스가 많은데

    > 질문을 보니 record 구조의 파일을 읽어서 처리하는 문제인것 같습니다

    > 아래는 설명상 제 임의로 만든 레코드로 전체적인 흐름만 파악해 보세요

    >

    > type

    > TDataIn = record

    > flag : string[1]; {'C':계속, 'E':끝}

    > seqno : string[4]; {연번}

    > medno : string[15]; {의료보험번호}

    > juminid : string[14]; {주민번호}

    > korname : string[12]; {성명}

    > medgr : string[5]; {등급}

    > monpay : string[11]; {보수월액, '999,999,999'}

    > meddate : string[10]; {자격취득일, yyyy.mm.dd}

    > dismonyn : string[1]; {취득월면제여부}

    > medbld : string[10]; {근무지, '서울시'}

    > end;

    >

    > var

    > DataIn: TDataIn;

    > Fin: file of TDataIn;

    >

    > ....

    > AssignFile(Fin, 'data.txt');

    > System.Reset(Fin); {file open}

    > System.Seek(Fin, 0); {FilePoint 0}

    >

    > Read(Fin, DataIn);

    > while not Eof(Fin) then

    > begin

    > QRL_seqno.Caption := seqno;

    > QRL_medno.Caption := medno;

    > QRL_juminid.Caption := juminid;

    > QRL_korname.Caption := korname;

    > QRL_medgr.Caption := SysUtils.Trim(medgr);

    > QRL_monpay.Caption := monpay;

    > QRL_meddate.Caption := meddate;

    > QRL_dismonyn.Caption := dismonyn;

    > QRL_medbld.Caption := medbld;

    > if (DataIn.Flag = 'E') then // 특정 구분의 레코드일때...

    > begin

    > QRL_medbld.Caption := '';

    > end;

    > Read(Fin, DataIn);

    > end;

    > System.Close(Fin);

    >

    >

    김영대님의 답변에 감사드립니다.

    제가 실력이 부족하여 해결을 하지못하고 염치없게 또질문을 드립니다.



    질1)Read()라는 함수는 한번에 모든 데이타를 읽어오는것입니까?



    질2)ReadLn()함수는 어떤 기능을 하는것입니까?