Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[7612] [질문] 테이블 구조와 SQL을 올려 드립니다...
용이.... [] 995 읽음    2001-11-15 17:16
먼저 글을 읽어 주셔서 감사드리고여...

테이블은 다음과 같이 설계했습니다.
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로 가야지여...


+ -

관련 글 리스트
7600 [질문] ADOQuery 및 ADOCommand를 이용하여 Insert시 에러 발생... 용이... 932 2001/11/14
7602     Re:[질문] ADOQuery 및 ADOCommand를 이용하여 Insert시 에러 발생... 박지훈.임프 1053 2001/11/14
7612         [질문] 테이블 구조와 SQL을 올려 드립니다... 용이.... 995 2001/11/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.