在修改了dataset中的值后,如何提交? 在dbgrid中删除了一行或多行的记录,想让别的行的序号自动更改序号值。下面这段代码哪儿有问题呢?
procedure TDataModule1.Table1AfterDelete(DataSet: TDataSet);
var
book : Tbook;
num : integer;
begin
try
num:=1;
book:=mainform.DBGrid1.Datasource.Dataset.GetBook;
Table1.DisableControls;
if not Table1.isempty then
begin
Table1.first;
while not Table1.eof do
begin
Table1.FieldByName('xh').asinteger:=num; //报错说:Table1:dataset not in edit or insert mode. 这个问题如何解决呢?
num:=num+1;
showmessage('hhh');
Table1.next;
end;
end;
mainform.DBGrid1.Datasource.Dataset.gotobookMark(book);
finally
Table1.enableControls;
mainform.DBGrid1.Datasource.Dataset.freebook(book);
end;
end;
procedure TDataModule1.Table1AfterDelete(DataSet: TDataSet);
var
book : Tbook;
num : integer;
begin
try
num:=1;
book:=mainform.DBGrid1.Datasource.Dataset.GetBook;
Table1.DisableControls;
if not Table1.isempty then
begin
Table1.first;
while not Table1.eof do
begin
Table1.FieldByName('xh').asinteger:=num; //报错说:Table1:dataset not in edit or insert mode. 这个问题如何解决呢?
num:=num+1;
showmessage('hhh');
Table1.next;
end;
end;
mainform.DBGrid1.Datasource.Dataset.gotobookMark(book);
finally
Table1.enableControls;
mainform.DBGrid1.Datasource.Dataset.freebook(book);
end;
end;
解决方案 »
- delphi 动太远程连接数据库,好何保存设置.
- 【eMag】eMag-Delphi再次緊急征稿, 請大家幫助,支持!
- dephi中,黑匣子的问题!
- Installshield打包问题(在线等待急忙啊)
- 怎样通过SQL查询的问题,谢谢。
- Access数据库中表的Copy问题
- c写的Dll中有这样的函数定义int FAR PASCAL EXPORT Init(char *Number);如何引用
- 做好的程序打包的问题
- 怎么样用代码实现可执行文件的复制?(在线等)
- 一个困扰我很久的问题,大神快来 Delphi mscomm
- 关于Delphi编译器的问题?
- 在C#里面有没有类似DELPHI的DBGRID控件,可以使用户一次性输入多条记录的?
begin
table1.edit;//
Table1.FieldByName( 'xh ').asinteger:=num; //报错说:Table1:dataset not in edit or insert mode. 这个问题如何解决呢?
.....
var
book : Tbook;
num : integer;
begin
try
num:=1;
book:=Table1.GetBook;
Table1.DisableControls;
Table1.first;
while not Table1.eof do
begin
if Table1.State=dsBrowse then Table1.Edit; //**让记录集处于可编辑状态。**
Table1.FieldByName( 'xh ').asinteger:=num;
num:=num+1;
Table1.Next; //**移动记录时,数据集将自动提交,所以可以不用if Table1.State<>dsBrowse then Table1.Post;
end;
finally
Table1.GotobookMark(book);
Table1.Freebook(book);
Table1.EnableControls;
end;
end;
var
book : Tbook;
num : integer;
begin
try
num:=1;
book:=mainform.DBGrid1.Datasource.Dataset.GetBook;
Table1.DisableControls;
if not Table1.isempty then
begin
Table1.first;
while not Table1.eof do
begin
Table1.Edit;
Table1.FieldByName( 'xh ').asinteger:=num; //报错说:Table1:dataset not in edit or insert mode. 这个问题如何解决呢?
num:=num+1;
showmessage( 'hhh ');
Table1.next;
end;
end;
mainform.DBGrid1.Datasource.Dataset.gotobookMark(book);
finally
Table1.enableControls;
mainform.DBGrid1.Datasource.Dataset.freebook(book);
end;
end;
begin
table1.edit;//
Table1.FieldByName( 'xh ').asinteger:=num;
table1.post;//
table1.filter:='日期='+Quotedstr(过滤的日期);//过滤条件
table1.filtered:=true;
还是循环的出不来啊
既然查询出来,删除后又过滤,会给用户造成错觉。
while not Table1.eof do
begin
if Table1.State=dsBrowse then Table1.Edit; //**让记录集处于可编辑状态。**
Table1.FieldByName( "xh ").asinteger:=num;
num:=num+1;
// Table1.Next; //注释掉这句话后,直接加了exit也不能退出,报错说list index out of bounds
exit;
end;