一个dbedit组件要求在按下[增加]按钮时(数据库添加一个记录)能自动生成一个最大数字;要求该编号为stk(试题库)中bh(编号)字段的最大值+1;此时dbedit为不可编辑状态;
-----------------------------------------
因为书上给的程式不够完全,说的也相当简略
所以希望高手能帮帮忙 要实现以上功能都要用到那些组件
程序该怎么写 感激!!!另一个问题是我怎么给不了200分呢
-----------------------------------------
因为书上给的程式不够完全,说的也相当简略
所以希望高手能帮帮忙 要实现以上功能都要用到那些组件
程序该怎么写 感激!!!另一个问题是我怎么给不了200分呢
2 或者你直接在数据库建一个trigger3 看csdn说明吧,你的级别不够:)
2、select max(fldname)+1 as new fldvalue from tblname
得到这个值就达到你的要求了
QUERY->SQL->ADD('SELECT MAX(bh) FROM TABLENAME');
QUERY->ACTIVE=TRUE;
I=QUERY->fIELDS->FIELDS[0]->ASINTEGER;
ok,以上可以把最大值赋于整型变量I。QUERY->SQL->ADD('INSERT INTO TABLENAME (bh) values(i+1)');
QUERY->ACTIVE=TRUE;OK。所有步骤已完成,不过以上可能只是一个思路!
把它+1做为下一个记录的编号
同时这个编号能在dbedit里面显示出来 该怎么设置谢谢大家的热心 我想我最后肯定在大家的帮助下解决这个问题的 :)
一个比较简单的方法。procedure TForm1.BtnAddClick(Sender: TObject);
var
MaxNo: integer;
begin
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT MAX(fRecordNO) FROM TableName');
Open;
MaxNo := Query1.FieldByName('fRecordNo').AsInteger;
end;
Query1.Append;
Query1.FieldByName('fRcordNo').AsInteger := MaxNo;
end;
把bh赋给dbedit
一,增加事务,在beforepost中实现取最大值,然后马上commit
二,新增表记录ID最大值,单同样避免不了最大值重复。
maxID:integer;
begin
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT MAX(ID) FROM Table1');
Open;
maxID:= Query1.FieldByName('iD').AsInteger+1;
edit1.text:=inttostr(maxID);
close;
sql.clear;
sql.add('select * from table1 where ID='''+maxID+'''');
open;
Append;
FieldByName('ID').AsInteger := maxID;
......................................
post;
end;