首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于修改 dbgrideh 设为自动排序的某列值时遇到的有关问题

2013-07-11 
关于修改 dbgrideh 设为自动排序的某列值时遇到的问题dbgrideh1表格设为自动排序, DBGridEh1.SortLocal:T

关于修改 dbgrideh 设为自动排序的某列值时遇到的问题
dbgrideh1表格设为自动排序,
 DBGridEh1.SortLocal:=True;

 DBGridEh1.OptionsEh:=DBGridEh1.OptionsEh + [dghAutoSortMarking];

 for i:=0 to DBGridEh1.Columns.Count-1 do
  DBGridEh1.Columns[i].Title.TitleButton:=True;

现在的问题是:对列book_no排序后,然后循环修改该列,如下代码:

   qry.first;
   while not qry.eof do
   begin
    if qry.fieldbyname('status').asstring = '未确认' then
     begin
       edit;
       qry.fieldbyname('book_no').asstring := '6'; //--当修改此处时,因为设为自动排序,所以qry记录集重新排序,原来的循环被打乱.  
     //我的意思是怎样保证修改该列值时,不排序,等所有的记录循环完成后在排序,各位大侠,有什么办法吗?
     end;
    qry.next;
   end;
[解决办法]
dbgrideh的排序与数据源的排序是两回事。
qry.DisableControls;//断开dbgrideh的控制
  qry.first;
  while not qry.eof do
  begin
  if qry.fieldbyname('status').asstring = '未确认' then
  begin
  edit;
  qry.fieldbyname('book_no').asstring := '6'; //--当修改此处时,因为设为自动排序,所以qry记录集重新排序,原来的循环被打乱.   
  //我的意思是怎样保证修改该列值时,不排序,等所有的记录循环完成后在排序,各位大侠,有什么办法吗?
  end;
  qry.next;
  end;

qry.EnableControls;//连接dbgrideh的控制

热点排行