我在form的onshow事件里写了如下语句:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.text := 'select max(id) as a from lr';
adoquery1.Prepared;
adoquery1.open;
a := adoquery1.FieldByName('a').asinteger;
a:=a+1;
也就是每次显示form时先在lr库查找ID的最大值,然后将a+1。在确定按钮的click事件里写了
begin
ADOTable1.Append;
ADOTable1.FieldByName('ID').asinteger:=a;
ADOTable1.FieldByName('bh').asstring:=maskedit1.Text;
.
.
.
.
end;我想在执行了上面的代码后又能再次实现onshow事件里所执行的程序。既再次查找出ID的最大值并使之+1。我试了在上面的代码后再复制onshow的代码,在执行后程序并没有实现我的想法。但是在click事件后加一时间延迟几秒却可以实现,或者将窗口关闭一次再打开也可以实现。这样很不方便也耗时间,请问要实现我的这个功能还有别的好的方法没有???
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.text := 'select max(id) as a from lr';
adoquery1.Prepared;
adoquery1.open;
a := adoquery1.FieldByName('a').asinteger;
a:=a+1;
也就是每次显示form时先在lr库查找ID的最大值,然后将a+1。在确定按钮的click事件里写了
begin
ADOTable1.Append;
ADOTable1.FieldByName('ID').asinteger:=a;
ADOTable1.FieldByName('bh').asstring:=maskedit1.Text;
.
.
.
.
end;我想在执行了上面的代码后又能再次实现onshow事件里所执行的程序。既再次查找出ID的最大值并使之+1。我试了在上面的代码后再复制onshow的代码,在执行后程序并没有实现我的想法。但是在click事件后加一时间延迟几秒却可以实现,或者将窗口关闭一次再打开也可以实现。这样很不方便也耗时间,请问要实现我的这个功能还有别的好的方法没有???
解决方案 »
- udp文件传输的问题(急)
- Delphi菜鳥求救﹕撥號連接
- 关于dblookupcombobox的问题
- 求问:哪里能下载到Installshield Express Custom Edition For Delphi
- 请问:如何捕获自定义的Panel控件上的按钮的单击消息?多谢了
- 大家给意见,我想去考研。
- IE被黑,访问任何一个网页,都会弹出一个不健康的网页,如何消除,还有他们一般是修改那里的信息??
- 对画布的拷贝和画
- 从网上下载的rm格式的文件,播放时画面不连续,不流畅,怎么办?已经试了好几个播放器了?
- 大家好,关于计算机认证的?
- 中山大学DELPHI视频教程(BT下载)
- 打包好的程序运行报错,但是编译的时候没有报错 汗
procedure Hello;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.text := 'select max(id) as a from lr';
adoquery1.Prepared;
adoquery1.open;
a := adoquery1.FieldByName('a').asinteger;
a:=a+1;
end;
以后直接调用这过程不就行了.
或者干脆定义成自增加字段(PK的话不是很好)
或者根据时间产生一个不重复的随机数如果一定要这样写的话,也不要写在Onshow里面,写在DataSet.OnNewRecord里。
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.text := 'select max(id)+1 as a from lr';
adoquery1.Prepared;
adoquery1.open;
result:= adoquery1.FieldByName('a').asinteger;end;
begin
ADOTable1.Append;
ADOTable1.FieldByName('ID').asinteger:=getmaxid();
ADOTable1.FieldByName('bh').asstring:=maskedit1.Text;
.
.
.
.
end;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.text := 'select max(id) as a from lr';
adoquery1.Prepared;
adoquery1.open;
Result := adoquery1.FieldByName('a').asinteger;
Inc(Result)
end;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>begin
ADOTable1.Append;
ADOTable1.FieldByName('ID').asinteger:=GetNextID(); //不就行了嗎!!!!!!!!!!!!!!!!
ADOTable1.FieldByName('bh').asstring:=maskedit1.Text;
.
.
.
.
end;總之, 上面代碼還有大量的地方需要優化.
[Error] add.pas(97): Method identifier expected
ADOTable1.Append;
ADOTable1.FieldByName('ID').asinteger:=a;
ADOTable1.FieldByName('bh').asstring:=maskedit1.Text;
.
.
.
.
form.onshow(application) //加上这一句
end;