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;
> 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