1、把DBgrid设成多选模式. 2、在执行代码中以下面方式访问被选中的记录. with DBGridEH1.DataSource.DataSet do begin for i:=0 to DBGridEH1.SelectedRows.Count-1 do begin GotoBook(pointer(DBGridEH1.SelectedRows.Items[i])); FieldByName('XXX').asstring := '未结'; end; end; 以上访问方式需要数据集是缓冲方式。
var i:integer; DataSet:TDataSet; begin DataSet:=DBGrid1.DataSource.DataSet; for i:=0 to DBGrid1.SelectedRows.Count-1 do begin DataSet.GotoBook(Pointer(DBGrid1.SelectedRows.Items[i])); DataSet.Edit; DataSet.FieldByName('aField').AsString := '未结'; DataSet.Post; end;
var i, j: Integer; s: string; begin{多个纪录选择进行修改} if DBGrid1.SelectedRows.Count>0 then with DBGrid1.DataSource.DataSet do for i:=0 to DBGrid1.SelectedRows.Count-1 do begi GotoBook(pointer(DBGrid1.SelectedRows.Items[i])); dm.qtjz.Edit; dm.qtjz.FieldByName('qtzt').AsString := '已结'; dm.qtjz.Post; end; end; 我是这么做的可是在库里,这个标的字段得值却没有改阿,是不是哪里还有问题阿
那就把以上的代码后面加上一句: var i:integer; DataSet:TDataSet; begin DataSet:=DBGrid1.DataSource.DataSet; for i:=0 to DBGrid1.SelectedRows.Count-1 do begin DataSet.GotoBook(Pointer(DBGrid1.SelectedRows.Items[i])); DataSet.Edit; DataSet.FieldByName('aField').AsString := '未结'; DataSet.Post; end; DataSet.ApplyUpdate;//加上这一句试试,是不是你的DataSet设了 //CachUpdate属性呀 end;
2、在执行代码中以下面方式访问被选中的记录.
with DBGridEH1.DataSource.DataSet do
begin
for i:=0 to DBGridEH1.SelectedRows.Count-1 do
begin
GotoBook(pointer(DBGridEH1.SelectedRows.Items[i]));
FieldByName('XXX').asstring := '未结';
end;
end;
以上访问方式需要数据集是缓冲方式。
GotoBook(pointer(DBGridEH1.SelectedRows.Items[i]));
FieldByName('XXX').asstring := '未结';
不行吧
注意设置:dbgrid.datasource=datasource
datasource.dataset=query
query.updateobject=updateSQL
注意将query的cachedUpdate设成true;
i:integer;
DataSet:TDataSet;
begin
DataSet:=DBGrid1.DataSource.DataSet;
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
DataSet.GotoBook(Pointer(DBGrid1.SelectedRows.Items[i]));
DataSet.Edit;
DataSet.FieldByName('aField').AsString := '未结';
DataSet.Post;
end;
i, j: Integer;
s: string;
begin{多个纪录选择进行修改}
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begi
GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
dm.qtjz.Edit;
dm.qtjz.FieldByName('qtzt').AsString := '已结';
dm.qtjz.Post;
end;
end;
我是这么做的可是在库里,这个标的字段得值却没有改阿,是不是哪里还有问题阿
var
i:integer;
DataSet:TDataSet;
begin
DataSet:=DBGrid1.DataSource.DataSet;
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
DataSet.GotoBook(Pointer(DBGrid1.SelectedRows.Items[i]));
DataSet.Edit;
DataSet.FieldByName('aField').AsString := '未结';
DataSet.Post;
end;
DataSet.ApplyUpdate;//加上这一句试试,是不是你的DataSet设了
//CachUpdate属性呀
end;