또 이렇게 글을 올릴니다..
고수오빠들의 조언으로
첫번째 에러 ''is not a valie integer value
였는데여 integer 를 수정했어여..ParamByName('N3').AsInteger := StrToIntDef(Seq, 0); 으로여 근데 또 에러가 나는거 있죠..흐흐..
MS-SQL ERROR
Error converting data type varchar to numeric
근데 테이블과 델파이소스는 이상이 없거든여...
이것두 자료는 DB에 잘 쌓이고여..근데 에러가 나는 거 있죠..
정말 실력이 없는게 넘 슬픈거 있죠..전 대타로 물러받은건데...
제가 안짜서 잘 모르겠어여..
짱오빠들 다시한번 조언부탁드립니다.
시간뺐어서 미안하구여...정말 해결되면 함쏘고 싶어여...*^^*??
그냥 쏘스 올려볼께여..함 훌터보시고 힘드시면 욕하지 마시구여...
이쁘게 봐주세여..저두 좀 힘들거든여...
소스.....
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; //수정 부분..''is not a valid integer value 때문에
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('N3').AsInteger := StrToIntDef(Seq, 0);//수정함 ''is not a valid integer value 때문에..
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.
이건 MS-SQL 테이블 이구여..
/****** Object: Table [dbo].[PILTBL] ******/
if exists (select * from sysobjects where id = object_id(N'[dbo].[PILTBL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[PILTBL]
GO
/****** Object: Table [dbo].[PILTBL] ******/
CREATE TABLE [dbo].[PILTBL] (
[STDT] [varchar] (10) NOT NULL , /* 도선일자 */
[DTNO] [numeric] (3, 0) NOT NULL , /* INSERT 순번 */
[SQNO] [numeric] (3, 0) NOT NULL , /* 일련번호 */
[PDIV] [varchar] (1) NULL , /* 도선구분 1.입항, 2.입거, 3.출항, 4.출거, 5.선거이동, 6.묘지이동, 9.기타*/
[SPCD] [varchar] (10) NOT NULL , /* 호출부호 */
[SPNM] [varchar] (50) NULL , /* 선명 */
[NACD] [varchar] (6) NULL , /* 선적구분 1.내국적, 2.외국적*/
[STON] [numeric] (6, 0) NULL , /* 톤수 */
[LENG] [numeric] (4, 1) NULL , /* 장 */
[WIDT] [numeric] (3, 1) NULL , /* 폭 */
[DEPT] [numeric] (3, 1) NULL , /* 심 */
[OWNM] [varchar] (30) NULL , /* 선주명 */
[OWNA] [varchar] (15) NULL , /* 선주국적 */
[OPNM] [varchar] (50) NULL , /* 운항자명 */
[OPNA] [varchar] (15) NULL , /* 운항자국적 */
[DRAF] [numeric] (4, 2) NULL , /* 흘수 */
[IODV] [varchar] (1) NULL , /* 내외구분 1.내항선, 2.외항선*/
[SCCD] [varchar] (3) NULL , /* 구간코드 */
[SCDV] [varchar] (1) NULL , /* 구간구분코드 */
[SCPF] [varchar] (3) NULL , /* 도선시작구간 */
[SCFN] [varchar] (8) NULL , /* 도선시작구간명 */
[SFN2] [varchar] (15) NULL , /* 부두명 */
[SCPT] [varchar] (3) NULL , /* 도선종료구간 */
[SCTN] [varchar] (8) NULL , /* 도선종료구간명 */
[STN2] [varchar] (15) NULL , /* 부두명 */
[PLTM] [varchar] (4) NULL , /* 도선예정시간 */
[AGNT] [varchar] (3) NULL , /* 대리점 */
[HAGN] [varchar] (30) NULL , /* 한글코드명 */
[EAGN] [varchar] (50) NULL , /* 영문코드명 */
[GSDV] [varchar] (2) NULL , /* 화물구분 */
[TGBT] [varchar] (14) NULL , /* 배정예선 */
[ETYN] [varchar] (1) NULL , /* 면제선박여부 1.면제, NULL.비면제*/
[PILT] [varchar] (2) NULL , /* 도선사 */
[PTHN] [varchar] (10) NULL , /* 도선사명(한글) */
[PTEN] [varchar] (20) NULL , /* 도선사명(영문) */
[PTSQ] [numeric] (3, 0) NULL , /* 도선순서 */
[CPYN] [varchar] (1) NULL , /* 공동도선여부 */
[CPT1] [varchar] (2) NULL , /* 공동도선사1 */
[C1HN] [varchar] (10) NULL , /* 공동도선사1명(한글) */
[C1EN] [varchar] (20) NULL , /* 공동도선사2명(영문) */
[CPT2] [varchar] (2) NULL , /* 공동도선사2 */
[C2HN] [varchar] (10) NULL , /* 공동도선사2명(한글) */
[C2EN] [varchar] (20) NULL , /* 공동도선사2명(영문) */
[CSCD] [varchar] (3) NULL , /* 공동도선구간코드 */
[CSDV] [varchar] (1) NULL , /* 공동도선구간구분코드 */
[CSPF] [varchar] (3) NULL , /* 공동도선시작코드 */
[CSFN] [varchar] (8) NULL , /* 공동도선시작구간명 */
[CSN2] [varchar] (15) NULL , /* 부두명 */
[CSPT] [varchar] (3) NULL , /* 공동도선종료구간 */
[CSTN] [varchar] (8) NULL , /* 공동도선종료구간명 */
[CST2] [varchar] (15) NULL , /* 부두명 */
[CPTM] [varchar] (4) NULL , /* 공동도선예정시간 */
[RSLT] [varchar] (1) NULL , /* 도선결과 1.정상, 2.취소, 3:사고, 9.기타*/
[FENO] [varchar] (9) NULL , /* 도선번호 */
[CTDT] [varchar] (30) NULL , /* 생성일자 */
[UPDT] [varchar] (30) NULL , /* 처리일자 */
[UPID] [varchar] (8) NULL /* USER ID */
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PILTBL] WITH NOCHECK ADD
CONSTRAINT [PK_PILTBL] PRIMARY KEY NONCLUSTERED
(
[DTNO],
[STDT],
[SQNO]
) ON [PRIMARY]
GO
공부한다고 치구여...함 봐주세여...
알바쓰라고 하지 말구여....*^^*
저두 알바쓰고 싶은거 있죠...
멋진 오빠들 플리즈.......*^^*
좋은 시간 만들구여...