db는 파라독스구요 필드명은 num (pk로 설정했구요 type은 N), 학년, 이름, 국어, 영어, 수학 입니다. num 입력은 자동으로 하려구 하는데요.. 잘 안되네요.. 일단 아래처럼 하면 dbgrid에 num1 들어가구 밑에 num 안들어가구 학년 이름 국어 영어 수학. 이렇게 들어가네요..
tablebeforeinsert, afterinsert를 해도 그렇고..-.- 쿼리문에 num를 넣으면 에러생기고.. 도움좀 주세요...
procedure TForm1.button2Click(Sender: TObject);
begin
datamodule1.aa.close;
datamodule1.aa.sql.clear;
datamodule1.aa.sql.add('insert into test ( 학년, 이름, 국어, 영어,
수학)');
datamodule1.aa.sql.add('values ( :학년, :이름, :국어, :영어, :수학)');
datamodule1.Table1.Edit;
datamodule1.table1.FieldByName('num').asinteger:=
datamodule1.table1.RecordCount+1);
datamodule1.aa.ParamByName('학년').asstring:=(combobox1.text);
datamodule1.aa.ParamByName('이름').asstring:=(combobox2.text);
datamodule1.aa.ParamByName('국어').asstring:=(combobox3.text);
datamodule1.aa.ParamByName('영어').asstring:=(combobox4.text);
datamodule1.aa.ParamByName('수학').asstring:=(combobox4.text);
datamodule1.aa.execsql;
Select max(num) from..
으로 들어가는 방법역시 위험합니다.
한사용자가 값을 얻고 값을 저장하기 전에 다른 사용자가 값을 얻어 버리면 두명이상의 사용자가 동일한 값을 얻을 가능성이 높습니다.
dbms에서 autoincrement를 사용하지 않고 generator를 사용하는 이유가 이런 이유입니다.