먼저 글을 읽어 주셔서 감사드리고여...
테이블은 다음과 같이 설계했습니다.
CREATE TABLE ISM_USER_MSTR
(
USER_CD VARCHAR2(12) Not Null /* 사용자 코드 : PK:U+REG_DATE+REG_SEQ */,
REG_DATE VARCHAR2(8) Not Null /* 등록일 */,
REG_SEQ NUMBER(3) Not Null /* 등록순서 */,
USER_NM VARCHAR2(30) Not Null /* 사용자명 */,
REG_NO VARCHAR2(13) Not Null /* 주민등록번호 */,
USER_ID VARCHAR2(10) Not Null /* 사용자 ID */,
USER_PSWD VARCHAR2(10) Not Null /* 사용자 비밀번호 */,
ZIP_CD VARCHAR2(7) /* 우편번호 */,
ADDR1 VARCHAR2(100) /* 주소1 */,
ADDR2 VARCHAR2(100) /* 상세주소 */,
TEL VARCHAR2(20) /* 전화번호 */,
CELL_PHNE VARCHAR2(20) /* 휴대전화 */,
USER_DEPT VARCHAR2(11) /* 부서코드 */,
USER_POS VARCHAR2(20) /* 직급 */,
DETAIL VARCHAR2(255) /* 비고 */,
DEL_YN VARCHAR2(1) /* 삭제 여부 */,
CONSTRAINT ISM_USER_MSTR
PRIMARY KEY (USER_CD, REG_DATE, REG_SEQ)
USING INDEX
TABLESPACE ISM2002
STORAGE (INITIAL 28K NEXT 2K PCTINCREASE 0)
) TABLESPACE ISM2002 STORAGE(INITIAL 285K NEXT 28K PCTINCREASE 0)
사용한 SQL은 다음과 같습니다.
function TfrmUserDlg.InsertUserInfo:Boolean;
var
sPK, sRegDate : String;
nRegSeq : Integer;
sErrStr : String;
begin
Result := False;
with DM.aqryUserIUD do
begin
// 사용자 Table에 Insert될 PK를 생성한다.
Close;
SQL.Clear;
SQL.Text := 'SELECT ' +
'''U''||TO_CHAR(SYSDATE,''YYYYMMDD'')||' +
'LPAD(TO_CHAR(DECODE(MAX(REG_SEQ), NULL, 0, MAX(REG_SEQ)+1)), 3, ''0'') PK, ' +
'TO_CHAR(SYSDATE,''YYYYMMDD'') REG_DATE, ' +
'LPAD(TO_CHAR(DECODE(MAX(REG_SEQ), NULL, 0, MAX(REG_SEQ)+1)), 3, ''0'') REG_SEQ ' +
'FROM ' +
'ISM_USER_MSTR ' +
'WHERE ' +
'REG_DATE = TO_CHAR(SYSDATE, ''YYYYMMDD'')';
Open;
sPK := FieldByName('PK').AsString;
sRegDate := FieldByName('REG_DATE').AsString;
nRegSeq := StrToInt(FieldByName('REG_SEQ').AsString);
DisableControls;
DM.adoCon.BeginTrans;
try
Close;
SQL.Clear;
SQL.ADD('INSERT INTO ISM_USER_MSTR ' +
'(USER_CD, REG_DATE, REG_SEQ, USER_NM, REG_NO, USER_ID, USER_PSWD, ' +
'ZIP_CD, ADDR1, ADDR2, TEL, CELL_PHNE, USER_DEPT, USER_POS, ' +
'DETAIL, DEL_YN) ' +
'VALUES ' +
'(:USER_CD, :REG_DATE, :REG_SEQ, :USER_NM, :REG_NO, :USER_ID, :USER_PSWD, ' +
':ZIP_CD, :ADDR1, :ADDR2, :TEL, :CELL_PHNE, :USER_DEPT, :USER_POS, ' +
':DETAIL, :DEL_YN)');
Parameters.ParamValues['USER_CD'] := sPK;
Parameters.ParamValues['REG_DATE'] := sRegDate;
Parameters.ParamValues['REG_SEQ'] := nRegSeq;
Parameters.ParamValues['USER_NM'] := Trim(xedUserNm.Text);
Parameters.ParamValues['REG_NO'] := Trim(xedRegNo.Text);
Parameters.ParamValues['USER_ID'] := Trim(xedID.Text);
Parameters.ParamValues['USER_PSWD'] := Trim(xedPswd.Text);
Parameters.ParamValues['ZIP_CD'] := Trim(xedZip.Text);
Parameters.ParamValues['ADDR1'] := TrimLeft(xedAddr1.Text);
Parameters.ParamValues['ADDR2'] := TrimLeft(xedAddr2.Text);
Parameters.ParamValues['TEL'] := TrimLeft(xedTel.Text);
Parameters.ParamValues['CELL_PHNE'] := TrimLeft(xedCell.Text);
Parameters.ParamValues['USER_DEPT'] := TrimLeft(xedDepart.Text);
Parameters.ParamValues['USER_POS'] := TrimLeft(xedPos.Text);
Parameters.ParamValues['DETAIL'] := TrimLeft(xedEtc.Text);
Parameters.ParamValues['DEL_YN'] := 'N';
ExecSQL;
DM.adoCon.CommitTrans;
InformBox('성공적으로 저장되었습니다.', '추가 결과',
+ MB_DEFBUTTON1 + MB_ICONASTERISK + MB_APPLMODAL);
except
on E : EOleException do
begin
sErrStr := GetDBErrorMsg(E);
DM.adoCon.RollbackTrans;
InformBox(sErrStr, 'Database Insert Error',
+ MB_DEFBUTTON1 + MB_ICONSTOP + MB_APPLMODAL);
Exit;
end;
end;
EnableControls;
end;
Result := True;
end;
ADO 패치도 다했는데...
아직도 해결 못하고 있네여......좀 도와 주세여....
정 안되면...다시 BDE로 가야지여...
|