安装了Delphi5 Update Pack 1和ADO Express Update Pack 2引发的新问题!(100分)

  • 主题发起人 主题发起人 coolqiang
  • 开始时间 开始时间
C

coolqiang

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADO+Access做了一个简单的数据库程序,在XP下运行发现有“BOF或EOF有一个为真”
的错误,上网一查,原来要装ADO升级补丁,于是安装了上面两个补丁,在XP下可以正常运
行了,但却带来一个新问题。
我用下面的代码来为我的奇、偶行记录换背景色,装补丁之前运行很正常,但装补丁后
发现一增加记录就会出现全部记录背景变为绿色。单步调试,发现用以区分奇、偶行的
DataSource.DataSet.RecNo全部为-1,所以无法正常显示。哪位高手知道这是怎么回事?难
道又是一个BUG?或者有另外的解决方法也可以,请给出思路,最好是代码,谢了!

procedure TfrmMain.dbgQuestionDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with (Sender as TDBGrid) do
begin
case DataSource.DataSet.RecNo mod 2 of
1: LastColor := RecordsBgColor1;
0: LastColor := RecordsBgColor2;
end;
if gdSelected in State then
LastColor := clGreen;

Canvas.Brush.Color := LastColor;
DefaultDrawDataCell(Rect, Column.Field, State);
end;
end;
 
Delphi5 Update Pack 2 ???
用MsDac 2.6/2.7 更新
 
你的过程没有问题,问题在于新增记录后,GRID的更新动作,你再查一次!
 
mdac_type2.6
 
好像是不是所有的数据库都支持 RecNo 属性
 
可能是ADO的bug,不要用RecNo,自行定义一个变量来计数。
 
这是ADODB单元中的代码,现在你应该知道为什么了吧:)
function TCustomADODataSet.GetRecNo: Longint;
var
BufPtr: PChar;
begin
CheckActive;
if IsEmpty or (State = dsInsert) then
Result := -1
else
..............
所以你只好换个方法了:)
 
多人接受答案了。
 
后退
顶部