Q&A

  • query를 이용한 자동번호 삽입...
query를(데이타입력시) 사용후 자동으로 db의 데이타번호를 자동으로 삽입하려면....

DBgrid에 data를 삽입하려 하는데

저는 여기서 임의의 숫자를 계속입력했는데...

자동으로 no를 채울수는 없을까요?

procedure TForm2.DB_Input;

begin

with form1 do

begin

//n, a, n, a, d

query1.ParamByName('N1').asstring := edit1.Text;

query1.ParamByName('N2').asstring := edit2.Text;

query1.ParamByName('N3').asstring := edit3.Text;

query1.ParamByName('N4').asstring := edit4.Text;

query1.ParamByName('N5').asstring := edit5.Text;

end;

end;



procedure TForm2.BitBtn1Click(Sender: TObject);

begin

if (edit1.Text = '') or (edit2.Text = '') or (edit3.Text = '')

or (edit4.Text = '') or (edit5.Text='') then

begin

application.MessageBox('입력을 다시 확인 하세요!','입력오류',MB_OK);

end

else

begin

with form1 do

begin

query1.sql.Add('insert into 만화책');

query1.SQL.Add('(no, name, book, address, date)');

query1.sql.Add('values');

query1.sql.Add('( :N1,');

query1.sql.Add(' :N2,');

query1.sql.Add(' :N3,');

query1.sql.Add(' :N4,');

query1.sql.Add(' :N5)');

DB_Input;

end;

form1.Query1.ExecSQL; <=====이부분에서 error가 납니다. 해결 좀 해주세요

end;



end;





1  COMMENTS
  • Profile
    김상영 1999.07.15 10:28
    배동진 께서 말씀하시기를...

    > query를(데이타입력시) 사용후 자동으로 db의 데이타번호를 자동으로 삽입하려면....

    > DBgrid에 data를 삽입하려 하는데

    > 저는 여기서 임의의 숫자를 계속입력했는데...

    > 자동으로 no를 채울수는 없을까요?

    > procedure TForm2.DB_Input;

    > begin

    > with form1 do

    > begin

    > //n, a, n, a, d

    > query1.ParamByName('N1').asstring := edit1.Text;

    > query1.ParamByName('N2').asstring := edit2.Text;

    > query1.ParamByName('N3').asstring := edit3.Text;

    > query1.ParamByName('N4').asstring := edit4.Text;

    > query1.ParamByName('N5').asstring := edit5.Text;

    > end;

    > end;

    >

    > procedure TForm2.BitBtn1Click(Sender: TObject);

    > begin

    > if (edit1.Text = '') or (edit2.Text = '') or (edit3.Text = '')

    > or (edit4.Text = '') or (edit5.Text='') then

    > begin

    > application.MessageBox('입력을 다시 확인 하세요!','입력오류',MB_OK);

    > end

    > else

    > begin

    > with form1 do

    > begin

    > query1.sql.Add('insert into 만화책');

    > query1.SQL.Add('(no, name, book, address, date)');

    > query1.sql.Add('values');

    > query1.sql.Add('( :N1,');

    > query1.sql.Add(' :N2,');

    > query1.sql.Add(' :N3,');

    > query1.sql.Add(' :N4,');

    > query1.sql.Add(' :N5)');

    > DB_Input;

    > end;

    > form1.Query1.ExecSQL; <=====이부분에서 error가 납니다. 해결 좀 해주세요

    > end;

    >

    > end;

    >

    >



    위의 문법을 보니깐 Clear를 사용하지 않았기 때문에 에러가 발생한것 같습니다.

    기본적으로 Sql문을 작성하는 방식은 다음과 같습니다.

    With Query1 do

    Begin

    Close;

    Sql.Clear;

    Sql.Add('Select * From Test');

    Open;

    End;



    다음과 같이 하시면 위의 문제는 해결될것입니다.

    그리고 자동 Count하는 방법은 먼저 MAX를 구해서 +1해주는 방법이 가장

    쉬운 방법입니다.



    Ex)

    Var

    i : Integer;

    With Sql1 do

    Begin

    Close;

    Sql.Clear;

    Sql.Add('Select Max(No) Max_no from Test');

    Open;

    End;

    i := Sql1.FieldByName('Max_No').AsInteger + 1;



    위와 같이 먼저 i값을 구한후 삽입작업을 하시면 됩니다.



    아망씨 델파이 개발자 홈페이지 담당자

    http://www.zzz.co.kr