Q&A

  • Database에서 가장 큰 값을 불러올라면?
안녕하세요 이상석입니다. 데이타베이스 테이블에서 No1이라는 컬럼이 있는데

순번입니다. 폼이 생성될때 자동으로 No1을 첵킹해 현 No1의 가장 큰 값을

EditNo.Text라는 곳에 표시되게 할려고합니다.

그런데 No1은 형식이 문자열이거든요, 그럼 형식은 그대로 놔두고

순번을 증가하게하는 방법은 없나요?

부탁드립니다...

소스부분-------------------->

procedure TFormExamInsert.FormCreate(Sender: TObject);

var

// N : Integer;

K : String;

begin

with DMtwt.QueryExam do begin

Close;

Sql.Clear;

Sql.Add('Select max(No1) As maxno From Exam ');

Open;

end;



K := DMtwt.TblExam.FieldByName('No1').Asstring;//.AsInteger;



If Length(K) = 0 Then

EditNo.Text := '1'

else

begin



EditNo.Text := StrToInt(K) + 1 ;//DMtwt.QueryExam.FieldByName('maxno').Asinteger + 1 ;

end;



end;

---------------------------------------->

그럼 2000, 많은 조언 부탁드립니다.

1  COMMENTS
  • Profile
    신인재 1999.05.26 07:09
    K := DMtwt.TblExam.FieldByName('No1').Asstring;//.AsInteger;

    여기부분이 좀 이상하군요

    쿼리에서 맥스(maxno)값을 가지고 왔는데 정작 k에 대입하는 것은

    no1이네요....



    K := DMtwt.TblExam.Fields[0].Asstring;//.AsInteger;

    이런식으로 하면 되겠네요....

    그리고 보통 이런 것은 안보여주는것이 일반적입니다.

    만약 no1이 primary인덱스로 잡혀 있고 멀티 유저 시스템이라면

    동시에 같은 번호를 두명이상이 부여 받을수 있기 때문이지요.



    만약 이럴경우 저장하는 부분에서 트랜잭션을 걸어준다음

    맥스값을 가져오고 저장하는 것이 일반적입니다.



    이상석 wrote:

    > 안녕하세요 이상석입니다. 데이타베이스 테이블에서 No1이라는 컬럼이 있는데

    > 순번입니다. 폼이 생성될때 자동으로 No1을 첵킹해 현 No1의 가장 큰 값을

    > EditNo.Text라는 곳에 표시되게 할려고합니다.

    > 그런데 No1은 형식이 문자열이거든요, 그럼 형식은 그대로 놔두고

    > 순번을 증가하게하는 방법은 없나요?

    > 부탁드립니다...

    > 소스부분-------------------->

    > procedure TFormExamInsert.FormCreate(Sender: TObject);

    > var

    > // N : Integer;

    > K : String;

    > begin

    > with DMtwt.QueryExam do begin

    > Close;

    > Sql.Clear;

    > Sql.Add('Select max(No1) As maxno From Exam ');

    > Open;

    > end;

    >

    > K := DMtwt.TblExam.FieldByName('No1').Asstring;//.AsInteger;

    >

    > If Length(K) = 0 Then

    > EditNo.Text := '1'

    > else

    > begin

    >

    > EditNo.Text := StrToInt(K) + 1 ;//DMtwt.QueryExam.FieldByName('maxno').Asinteger + 1 ;

    > end;

    >

    > end;

    > ---------------------------------------->

    > 그럼 2000, 많은 조언 부탁드립니다.