秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
问题:
lazarus使用unidac+dbgrideh时,发现第一次查询可以正确显示查询的结果,当再次查询时(记录数>1条时),DBGridEH只显示1条记录,如果向下移动时还会出错。

 点费率时只显示1条记录:

这时向下移动会出错:

 解决方法:
uniquery查询前设置:
dbgrideh.DataSource:=nil

查询完成后重新设置DataSource
procedure TForm1.grdRateValueTitleBtnClick(Sender: TObject; ACol: Integer;
  Column: TColumnEh);
begin
  UniQuery1.Close;
  UniQuery1.SQL.Clear;
  UniQuery1.DisableControls;
  grdRateValue.DataSource:=nil;
  if column.Title.SortMarker=smDownEh then
     UniQuery1.SQL.Text:='select * from Ratevalue   order by '+ column.FieldName
  else
     UniQuery1.SQL.Text:='select * from Ratevalue   order by '+ column.FieldName +' DESC';

  UniQuery1.Open;
  UniQuery1.EnableControls;
  form1.Caption:= UniQuery1.RecordCount.ToString;
  grdRateValue.DataSource:=Datasource1;
end;

现在再次查询就可以正常显示相关记录:

posted on 2024-09-03 20:07  秋·风  阅读(100)  评论(0编辑  收藏  举报