Q&A

  • [초보자]DB의 번호 자동 증가..
시퀀스를 싸다보니 자릿수가 안 맞고 원하는 값이 나타나지 않아서요.

코드의 값이 자동적으로 1씩 증가하여 사용자가 입력할 경우 코드번호는 신경 쓰지 않도록 하고 싶습니다.

방법좀 알려주세요..

2  COMMENTS
  • Profile
    장지용 2000.05.03 03:34
    정수현 wrote:

    > 시퀀스를 싸다보니 자릿수가 안 맞고 원하는 값이 나타나지 않아서요.

    > 코드의 값이 자동적으로 1씩 증가하여 사용자가 입력할 경우 코드번호는 신경 쓰지 않도록 하고 싶습니다.

    > 방법좀 알려주세요..



    코드번호가 char 인 경우

    아래와 유사한 함수를 만들어서 등록시 Param 으로 넘기면 될 것 같습니다.

    Query.ParamByName('코드번호').AsString := GetMaxNo;



    function TMain.GetMaxNo : String;

    begin

    with Query do begin

    Close;

    Sql.Clear;

    Sql.Add('Select Max(코드번호) From [테이블명] ');



    Prepare;

    Open;



    // 코드번호 최대값에 하나 증가한 번호 부여

    // Fields[0] -> Max(코드번호)



    if Fields[0].AsString = '' then

    Result := '01'

    else

    // '00' -> char(2) 인 경우

    // '01', '02', '03', ..., '10', '11', ... 식으로 저장

    Result := FormatFloat('00', Fields[0].AsInteger + 1);



    Close;

    end;

    end;

  • Profile
    까마귀 2000.05.03 02:29
    정수현 wrote:

    > 시퀀스를 싸다보니 자릿수가 안 맞고 원하는 값이 나타나지 않아서요.

    > 코드의 값이 자동적으로 1씩 증가하여 사용자가 입력할 경우 코드번호는 신경 쓰지 않도록 하고 싶습니다.

    > 방법좀 알려주세요..





    안녕하세요. 까마귀입니다.

    Local에서 하시는지 Server에서 하시는지는 잘 모르겠는데요.

    db종류에 따라 그런 기능이 있는게 있고 없는것도 있어요.

    RDBMS에는 다 있다고 본것 같고요 - 저는 MS-SQL밖에 못 써봐서... - Local의 경우 파라독스에서는 그런 기능이 있고요, dBase에는 없는걸로 압니다.

    기능이 있을 경우는 db설계시 자동 증가형으로 잡으면 되겠고요, 아닐 경우 마지막 레코드의 no필드의 값을 읽어서 + 1 하거나, 레코드의 총수 + 1을 하시면 되겠네요.







    위대한 단군혼이 살아있는 나라.... 대한민국.