幸好ClientDataset本身支持 ADODataset->DatasetProvider->ClientDatasetCliendataset增加一个计算字段FRecNo 在OnCalcFields事件中加入 Dataset.FieldByName('FRECNO').Value :=DaTaset.RecNo; 好象没有什么问题呀Delphi 6加MS SQL SERVER 2000测试通过
看起来,这个问题不能用Tquery控件来解决了?应该可以通过增加字段来解决的,但我一直试不出来,
显示-1,加绝对值 abs(dataset.recno)
select identity(1,1) as id,othercolumns from yourtable
不知道你用什么数据库,如果是oracle,可以使用rownum
sql2000用adoquery吧, 这是我的一段程序,正常使用: procedure Tyhjfb.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with (Sender as TDBGrid) do begin if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then begin Canvas.Font.Color := clHighlightText; Canvas.Brush.Color := clHighlight; end else begin //注意这里, if data.yhjfb.FieldByName('back').asinteger mod 2 <> 0 then if data.yhjfb.RecNo mod 2 <> 0 then //这样更简单,精确 Canvas.brush.Color := clAqua//$00F2F2F1 else Canvas.brush.Color :=clwhite; end;
2、在query1的Query1CalcFields事件中加入如下代码即可:
query1.FieldByName('recno1').asinteger:=query1.RecNo;
1、在tquery构件query1中加入一计算字段recnum
2、在query1的Query1CalcFields事件中加入如下代码即可:
query1.FieldByName('recnum').asinteger:=query1.RecNo;
ADODataset->DatasetProvider->ClientDatasetCliendataset增加一个计算字段FRecNo
在OnCalcFields事件中加入
Dataset.FieldByName('FRECNO').Value :=DaTaset.RecNo;
好象没有什么问题呀Delphi 6加MS SQL SERVER 2000测试通过
procedure Tyhjfb.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with (Sender as TDBGrid) do
begin
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then
begin
Canvas.Font.Color := clHighlightText;
Canvas.Brush.Color := clHighlight;
end
else
begin
//注意这里, if data.yhjfb.FieldByName('back').asinteger mod 2 <> 0 then
if data.yhjfb.RecNo mod 2 <> 0 then //这样更简单,精确
Canvas.brush.Color := clAqua//$00F2F2F1
else
Canvas.brush.Color :=clwhite;
end;
1、不用SQL2000,要用7,2000bug太多!
2、在存储过程中使用游标进行计数就可以了!
3、用视图进行查询!
4、计算字段直接显示不管RecNO,然后在字段的OnGetText里做手脚如何?
有能实现的,给200分。