Q&A

  • DB Null값일때 처리방법 -도움요청합니다-
너무 많은 시간을 소비해서 도움을 요청합니다.
[질문] DB에 있는 최대값을 가져와 +1을 하는 구현입니다.
         Db에 값이 있을때는 문제가 없는데 값이 없을땐 에러가 발생합니다.
-델파이 초보 입니다 도움주시면 감사 하겠습니다-
참고로 인터베이스를 사용합니다

procedure TForm1.Button1Click(Sender: TObject);
var
TMPSTR, TMP :string;
Gl_CodeMax:Integer;
begin

with QY_Max do
begin
  close;
  sql.Clear;
  sql.Add('Select MAX(GL_CODE) aaa From GL_MAIN');
  open ;
end;
  QY_Max.FieldbyName('aaa').AsString;
  Gl_CodeMax:=QY_Max.FieldbyName('aaa').AsInteger;
  Gl_CodeMax:= Gl_CodeMax + 1;
  TMPSTR:= IntToStr(gl_codemax);  
  TMP := '0000000000';
  TMPSTR := copy(TMP,0,10-Length(TMPSTR)) + TMPSTR;
5  COMMENTS
  • Profile
    김병윤 2005.03.29 22:37
    <!--CodeS-->
    with QY_Max do
    begin
      close;
      sql.Clear;
      sql.Add('Select MAX(GL_CODE) aaa From GL_MAIN');
      open;
    end;

    if QY_Max.IsEmpty then // 쿼리에 레코드가 텅~비었으면?
    begin
      // === 첫번째 카운트 값을 넣어주면 되것죠?  Gl_CodeMax:= 1 이런거..^^ ===
    end
    else begin
      // === 원래 쓰시던 코딩을 하시면 되것죠? Gl_CodeMax:= Gl_CodeMax + 1 이런거...^^ ===
    end;
    <!--CodeE-->

    (__) 고럼...20000
  • Profile
    모영철 2005.03.29 03:56
    그럴때는 그냥 쿼리에서 끝내버리시는게..

    Select MAX(NVL(GL_CODE,0)) + 1 aaa From GL_MAIN

    이렇게 하면 되는지..

  • Profile
    델초보 2005.03.29 04:23
  • Profile
    Crazy™ 2005.03.29 06:26
    답변하신 모영철님의 뜻은 굳이 코딩으로 처리하지 마시고
    쿼리문에서 해결하는 방안입니다.

    Select MAX(NVL(GL_CODE,0)) + 1 aaa From GL_MAIN

    => nvl 이 함수는 GL_CODE 값이 NULL 일때 0으로 대치하는 것입니다.
    질의에 대한 문법을 조금 더 책으로 보시는게...도움이 될 듯 싶습니다.
    즐프..

  • Profile
    우소 2005.03.29 20:35
    쿼리에서 레코드에 값이 있는지 없는지 체크하는 구문입니다.

    if FieldByName('FLAG').IsNull then

    뭐 이런식이지요/


    요기서

    if QY_Max.FieldbyName('aaa').isNull then

    이렇게 하고 있으면 쓰고 없으면 초기화하면 되겠네요

    그럼 이만