Q&A

  • Re: 짱오빠들 이소스좀 봐주세여..얼라얼라 힘들어 죽겠어여..
차라리 돈좀 들여서 아르바이트를 시키시져...

수정이^^ wrote:

> 제가 짠게 아니라 인수인게 받은 소스거든여..

> 전 델파이의 델도 모르거든여 근데 하라구해서 흐흐...

> 짱 오빠들 좀 수고좀 해주세여...

> DB에 저장할때 자꾸 데이타타입의 수를 넘어가는지 아님 정수인데 문자로 들어오거

> 그러거든여...그러니까 데이타다입이 아니면 버리던지 그런거 있잖아여 C에서는 if문처러 else여...어디서 소스부분을 수정해야 될지 모르겠거든여..

> 함 보구여 몇개만 고치면 이쁜이가 그거보고 고칠려구여...

> 오빠들만 밑을 라구여..제발 플리즈...

> 항상 좋은 시간 만들구여...오빠들 힘좀 써주세요..??

> unit Uipb_recv;

>

> interface

>

> uses

> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

> StdCtrls, Db, DBTables, Grids, DBGrids, ExtCtrls, ShellAPI, Menus, inifiles;

> type

> TRecv = class(TForm)

> PORT: TDatabase;

> QPort: TQuery;

> QNum: TQuery;

> procedure FormClose(Sender: TObject; var Action: TCloseAction);

> procedure FormCreate(Sender: TObject);

> private

> { Private declarations }

> public

> { Public declarations }

> end;

>

> var

> Recv: TRecv;

>

> implementation

>

> {$R *.DFM}

>

> procedure TRecv.FormClose(Sender: TObject; var Action: TCloseAction);

> begin

> { DATABASE인 PORT와의 연결을 끊기 }

> PORT.Connected := FALSE;

> end;

>

> procedure TRecv.FormCreate(Sender: TObject);

> var

> I, K, R_SEQ: Integer;

> Sdt, Pdiv, Shcd, Shnm, Ncd, Ownm, Ownat: string;

> Opnm, Opnat, Indiv, Sccd, Scdiv, Scf, Scfnm: string;

> Scfnm2, Sct, Sctnm, Sctnm2, Pltm, Ag, Hanm, Eanm: string;

> Godiv, Tuboat, Exyn, Pi, Pihnm, Pienm, Piseq: string;

> Copiyn, Copi1, Copi1hnm, Copi1enm, Copi2, Copi2hnm: string;

> Copi2enm, Coscd, Cosdiv, Coscf, Coscfnm, Coscfnm2: string;

> Cosct, Cosctnm, Cosctnm2, Copltm, Re, Feno: string;

> Seq, Ton, Len, Wid, Dep, Dra, Ctdt: string;

> FP: Textfile;

> Buf: string;

> path: string;

> IPini: Tinifile;

> s_uid, s_pwd: string;

> begin

> { 웹서버의 DB에 접속하기 위한 ID/PASSWORD를 portmis.ini파일로 부터 불러온다 }

> IPini := Tinifile.Create(ExtractFilePath(Application.ExeName) + 'portmis.ini');

> s_uid := IPini.ReadString('정보', 'USERID', '');

> s_pwd := IPini.ReadString('정보', 'PASSWORD', '');

> IPini.Free;

>

> PORT.Params.Add('USER NAME=' + s_uid);

> PORT.Params.Add('PASSWORD=' + s_pwd);

>

> { 웹서버의 DB에 insert하기위해 파일을 연다 }

> path := ParamStr(1);

> AssignFile(FP, path);

> Reset(FP);

>

> if PORT.Connected = FALSE then

> PORT.Connected := TRUE;

>

> { DTNO를 설정하기 위한 부분 }

> R_SEQ :=0;

> QNum.Close;

> QNum.SQL.Clear;

> QNum.SQL.Add('SELECT MAX(DTNO) FROM PILTBL ');

> QNum.SQL.Add('WHERE STDT = CONVERT(char, GETDATE(), 102)');

> // Oracle인 경우

> // QNum.SQL.Add('WHERE TO_CHAR(STDT,''YYYYMMDD'') = TO_CHAR(SYSDATE,''YYYYMMDD'')');

> QNum.Open;

>

> R_SEQ := QNum.Fields[0].AsInteger;

> R_SEQ := R_SEQ + 1;

> QNum.Close;

>

> { 웝서버의 DB에 insert하는 부분 }

> while not Eof(FP) do

> begin

> Sdt := ''; Seq := ''; Pdiv := ''; Shcd := ''; Shnm := ''; Ncd := ''; Ton := '';

> Len := ''; Wid := ''; Dep := ''; Ownm := ''; Ownat := ''; Opnm := ''; Opnat := '';

> Dra := ''; Indiv := ''; Sccd := ''; Scdiv := ''; Scf := ''; Scfnm := ''; Scfnm2 := '';

> Sct := ''; Sctnm := ''; Sctnm2 := ''; Pltm := ''; Ag := ''; Hanm := ''; Eanm := '';

> Godiv := ''; Tuboat := ''; Exyn := ''; Pi := ''; Pihnm := ''; Pienm := ''; Piseq := '';

> Copiyn := ''; Copi1 := ''; Copi1hnm := ''; Copi1enm := ''; Copi2 := ''; Copi2hnm := '';

> Copi2enm := ''; Coscd := ''; Cosdiv := ''; Coscf := ''; Coscfnm := ''; Coscfnm := '';

> Coscfnm2 := ''; Cosct := ''; Cosctnm := ''; Cosctnm2 := ''; Copltm := '';

> Re := ''; Feno := ''; Ctdt := '';

> Readln(FP, Buf);

> K := 0;

> for I := 1 to Length(Buf) do

> begin

> { '|' 는 임의의 구분자입니다.

> 임의의 구분자는 어떤 것을 사용하든지 문제는 없지만

> ' '은 안된다 왜냐하면 데이터가 없는 필드와 구분이 않되기 때문이다. }

> if buf[i] = '|' then

> K := K + 1

> else

> case K of

> 0: Sdt := Sdt + Buf[i];

> 1: Seq := Seq + buf[i];

> 2: Pdiv := Pdiv + buf[i];

> 3: Shcd := Shcd + buf[i];

> 4: Shnm := Shnm + buf[i];

> 5: Ncd := Ncd + buf[i];

> 6: Ton := Ton + buf[i];

> 7: Len := Len + buf[i];

> 8: Wid := Wid + buf[i];

> 9: Dep := Dep + buf[i];

> 10: Ownm := Ownm + buf[i];

> 11: Ownat := Ownat + buf[i];

> 12: Opnm := Opnm + buf[i];

> 13: Opnat := Opnm + buf[i];

> 14: Dra := Dra + buf[i];

> 15: Indiv := Indiv + buf[i];

> 16: Sccd := Sccd + buf[i];

> 17: Scdiv := Scdiv + buf[i];

> 18: Scf := Scf + buf[i];

> 19: Scfnm := Scfnm + buf[i];

> 20: Scfnm2 := Scfnm2 + buf[i];

> 21: Sct := Sct + buf[i];

> 22: Sctnm := Sctnm + buf[i];

> 23: Sctnm2 := Sctnm2 + buf[i];

> 24: Pltm := Pltm + buf[i];

> 25: Ag := Ag + buf[i];

> 26: Hanm := Hanm + buf[i];

> 27: Eanm := Eanm + buf[i];

> 28: Godiv := Godiv + buf[i];

> 29: Tuboat := Tuboat + buf[i];

> 30: Exyn := Exyn + buf[i];

> 31: Pi := Pi + buf[i];

> 32: Pihnm := Pihnm + buf[i];

> 33: Pienm := Pienm + buf[i];

> 34: Piseq := Piseq + buf[i];

> 35: Copiyn := Copiyn + buf[i];

> 36: Copi1 := Copi1 + buf[i];

> 37: Copi1hnm := Copi1hnm + buf[i];

> 38: Copi1enm := Copi1enm + buf[i];

> 39: Copi2 := Copi2 + buf[i];

> 40: Copi2hnm := Copi2hnm + buf[i];

> 41: Copi2enm := Copi2enm + buf[i];

> 42: Coscd := Coscd + buf[i];

> 43: Cosdiv := Cosdiv + buf[i];

> 44: Coscf := Coscf + buf[i];

> 45: Coscfnm := Coscfnm + buf[i];

> 46: Coscfnm2 := Coscfnm2 + buf[i];

> 47: Cosct := Cosct + buf[i];

> 48: Cosctnm := Cosctnm + buf[i];

> 49: Cosctnm2 := Cosctnm2 + buf[i];

> 50: Copltm := Copltm + buf[i];

> 51: Re := Re + buf[i];

> 52: Feno := Feno + buf[i];

> 53: Ctdt := Ctdt + buf[i];

> end;

> end;

>

> { 수치 데이터의 DEFAUL값을 0으로 SETTING }

> if Ton = '' then Ton := '0';

> if Len = '' then Len := '0';

> if Wid = '' then Wid := '0';

> if Dep = '' then Dep := '0';

> if Dra = '' then Dra := '0';

>

> { SQL 문장 }

> with QPort do

> begin

> Close;

> SQL.Clear;

> SQL.Add('INSERT INTO PILTBL (STDT, DTNO, SQNO, PDIV,SPCD, SPNM, NACD, ');

> SQL.Add('STON, LENG, WIDT, DEPT, OWNM, OWNA, OPNM, OPNA, DRAF, IODV, SCCD, SCDV, ');

> SQL.Add('SCPF, SCFN, SFN2, SCPT, SCTN, STN2, PLTM, AGNT, HAGN, EAGN, GSDV, TGBT, ');

> SQL.Add('ETYN, PILT, PTHN, PTEN, PTSQ, CPYN, CPT1, C1HN, C1EN, CPT2, C2HN, C2EN, ');

> SQL.Add('CSCD, CSDV, CSPF, CSFN, CSN2, CSPT, CSTN, CST2, CPTM, RSLT, FENO, CTDT, UPDT, UPID) ');

> SQL.Add('VALUES (:N1, :N2, :N3, :N4, :N5, :N6, :N7, :N8, :N9, :N10, :N11, ');

> SQL.Add(':N12, :N13, :N14, :N15, :N16, :N17, :N18, :N19, :N20, :N21, :N22, ');

> SQL.Add(':N23, :N24, :N25, :N26, :N27, :N28, :N29, :N30, :N31, :N32, :N33, ');

> SQL.Add(':N34, :N35, :N36, :N37, :N38, :N39, :N40, :N41, :N42, :N43, :N44, ');

> SQL.Add(':N45, :N46, :N47, :N48, :N49, :N50, :N51, :N52, :N53, :N54, :N55, CONVERT(char, GETDATE()), ''IPPILOT'') ');

> // Oracle인 경우

> // SQL.Add(':N45, :N46, :N47, :N48, :N49, :N50, :N51, :N52, :N53, :N54, :N55, TO_CHAR(SYSDATE,''YYYYMMDD HH24:MI:SS''), ''IPPILOT'') ');

> ParamByName('N1').AsString := Trim(Sdt);

> ParamByName('N2').AsInteger := R_SEQ;

> ParamByName('N3').AsInteger := StrToInt(Seq);

> ParamByName('N4').AsString := Trim(Pdiv);

> ParamByName('N5').AsString := Trim(Shcd);

> ParamByName('N6').AsString := Trim(Shnm);

> ParamByName('N7').AsString := Trim(Ncd);

> ParamByName('N8').AsFloat := StrToFloat(Ton);

> ParamByName('N9').AsFloat := StrToFloat(Len);

> ParamByName('N10').AsFloat := StrToFloat(Wid);

> ParamByName('N11').AsFloat := StrToFloat(Dep);

> ParamByName('N12').AsString := Trim(Ownm);

> ParamByName('N13').AsString := Trim(Ownat);

> ParamByName('N14').AsString := Trim(Opnm);

> ParamByName('N15').AsString := Trim(Opnat);

> ParamByName('N16').AsFloat := StrToFloat(Dra);

> ParamByName('N17').AsString := Trim(Indiv);

> ParamByName('N18').AsString := Trim(Sccd);

> ParamByName('N19').AsString := Trim(Scdiv);

> ParamByName('N20').AsString := Trim(Scf);

> ParamByName('N21').AsString := Trim(Scfnm);

> ParamByName('N22').AsString := Trim(Scfnm2);

> ParamByName('N23').AsString := Trim(Sct);

> ParamByName('N24').AsString := Trim(Sctnm);

> ParamByName('N25').AsString := Trim(Sctnm2);

> ParamByName('N26').AsString := Trim(Pltm);

> ParamByName('N27').AsString := Trim(Ag);

> ParamByName('N28').AsString := Trim(Hanm);

> ParamByName('N29').AsString := Trim(Eanm);

> ParamByName('N30').AsString := Trim(Godiv);

> ParamByName('N31').AsString := Trim(Tuboat);

> ParamByName('N32').AsString := Trim(Exyn);

> ParamByName('N33').AsString := Trim(Pi);

> ParamByName('N34').AsString := Trim(Pihnm);

> ParamByName('N35').AsString := Trim(Pienm);

> ParamByName('N36').AsString := Trim(Piseq);

> ParamByName('N37').AsString := Trim(Copiyn);

> ParamByName('N38').AsString := Trim(Copi1);

> ParamByName('N39').AsString := Trim(Copi1hnm);

> ParamByName('N40').AsString := Trim(Copi1enm);

> ParamByName('N41').AsString := Trim(Copi2);

> ParamByName('N42').AsString := Trim(Copi2hnm);

> ParamByName('N43').AsString := Trim(Copi2enm);

> ParamByName('N44').AsString := Trim(Coscd);

> ParamByName('N45').AsString := Trim(Cosdiv);

> ParamByName('N46').AsString := Trim(Coscf);

> ParamByName('N47').AsString := Trim(Coscfnm);

> ParamByName('N48').AsString := Trim(Coscfnm2);

> ParamByName('N49').AsString := Trim(Cosct);

> ParamByName('N50').AsString := Trim(Cosctnm);

> ParamByName('N51').AsString := Trim(Cosctnm2);

> ParamByName('N52').AsString := Trim(Copltm);

> ParamByName('N53').AsString := Trim(Re);

> ParamByName('N54').AsString := Trim(Feno);

> ParamByName('N55').AsString := Trim(Ctdt);

> ExecSQL;

> end;

> end;

> CloseFile(FP);

> PostMessage(Handle, WM_CLOSE, 0, 0);

> end;

>

> end.

>

> 정말루 부탁드립니다.*^^*

0  COMMENTS