차라리 돈좀 들여서 아르바이트를 시키시져...
수정이^^ 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.
>
> 정말루 부탁드립니다.*^^*