多选问题(100分)

  • 主题发起人 主题发起人 林天送
  • 开始时间 开始时间

林天送

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么将数据库选择(用CTRL)多个记录进行更改操作?
QTLTS@21CN.COM
 
用 DBGrid 的 SelectedRows 属性,这是一个 BookMark 列表,只要跳到对应的记录就可
以进行处理了:
DBGrid1.Datasource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items));
然后进行你的更改操作。

 
不妨这样。(我用了一个临时表来存放选择出来的数据,为什么用临时表,是因为在程序中
可能要选择好多次数据)

我在程序中都是这么做的。DBGrid.DataSource := DataSource1;
DataSource1.DataSet := Query1

procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
i : Integer;
begin
for i:= 0 to DBGrid1.SelectedRows.Count-1 do begin
for j:=0 to DBGrid1.FieldCount-1 do begin
Table_tmp.Fields[j].AsString := DBGrid1.Fields[j].AsString;
end;
end;
end;
当然在DBGrid中要设好Options[dgMultiSelect]:=True;
 
用临时表是个好方法。
将dbgrid中selected row insert into temp table.
处理tempTable后,empty tempTable以备再用。
 
临时表是个好方法,
>>处理tempTable后,empty tempTable以备再用。
还是每次使用前清空好.
 
设置DbGrid1的Options属性的dgMultiSelect元素为True,就可以按住Ctrl选择多行。
程序中可以如下处理:
var
I:Integer;
BookmarkList:TBookmarkList;
Bookmark:TBookmark;
begin
Bookmark:=Table1.GetBookmark;
try
BookmarkList:=DbGrid1.SelectedRows;
for I:=0 to BookmarkList.Count-1 do
begin
Table1.GotoBookmark(Pointer(BookmarkList));
//处理纪录
...
end;
finally
Table1.GotoBookmark(Bookmark);
Table1.FreeBookmark(Bookmark);
end;
end;
 
设置DBGrid1的Options属性的dgMultiSelect元素为True,若同时设dgRowSelected为True
选择多行记录时就会更醒目,我用过很多次!运行时按Ctrl键就可以选中多行!
var
i:integer;
begin
for i:=1 to DBGrid1.SelectedRows.Count do
begin
Table1.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i-1]));
//Do what you want to do
end;
end;
 
多人接受答案了。
 
后退
顶部