我想在dbgrid中显示打开数据集记录的排列序号,类似“1,2,3......”等,
采用的方法是在数据集中定义了一个计算字段FRecNo,然后procedure TEmpSets.Q_TreatmentCalcFields(DataSet: TDataSet);
begin
with Q_Treatment do
begin
FieldByName('FRecNo').AsInteger:=RecNo;
end;
end;但是在dbgrid中全部返回“-1”,请教高手解决!
采用的方法是在数据集中定义了一个计算字段FRecNo,然后procedure TEmpSets.Q_TreatmentCalcFields(DataSet: TDataSet);
begin
with Q_Treatment do
begin
FieldByName('FRecNo').AsInteger:=RecNo;
end;
end;但是在dbgrid中全部返回“-1”,请教高手解决!
解决方案 »
- 在udp中,传送一个记录集到目的地后,如果还原为记录集
- 关于UPDATE语句的问题
- 紧急求救两个问题,谢谢各位
- 发分!
- Delphi下COM+程序员招聘!
- 我的dll報錯了,請教各位!!!
- 我用delphi编了一个简单的数据库,可是生成的exe文件在别的机器上不能用,请帮帮忙!谢谢
- ?报表里QRDBText面的Mask属性能否把时间(2002-2-3 8:03)格式化为8:03!!!
- 能不能在从两个存储过程返回的数据上使用主从表关系.
- 征集有关***MSFlexGrid***控件 的使用资料!
- ◎◎◎◎◎◎◎◎如何检测机器是否连接INTNET网上?◎◎◎◎◎◎◎◎
- 请教:如何使DBgrid控件的第一列成为固定列
begin
Dataset.FieldByName('FRecNo').AsInteger:=DataSet.RecNo;
end;
//不知道这样是不是可以?
否则都是-1,我也没解决这个问题,
begin
// showmessage()
query1.Edit;
query1.FieldByName('aa').AsInteger:=query1.RecNo;
end;
Text:=DataSet.Recno;
Q_TreatmentFRecNo.AsInteger :=abs(Q_Treatment.RecNo)
begin
with Q_Treatment do
begin
FieldByName('FRecNo').AsInteger:=Dataset.RecordCount+1 ;
end;
end;
你先在DBGrid里的OnDraw事件里取值就行了。
其次,有些数据集的继承类虽然支持RecNo,但是一旦Filtered := True;不能正确反映序号
State属性,如果处于dsInsert,则将RecNo视为Count+1
procedure TEmpSets.Q_TreatmentCalcFields(DataSet: TDataSet);
begin
with Q_Treatment do
begin
FieldByName('FRecNo').AsInteger:=RecNo;
if FieldByName('FRecNo').AsInteger=-1 then FieldByName('FRecNo').AsInteger=1
end;
end;你试试。
如果用ADO就好办
一定要用BDE也可以:利用BookMark自定义RecNo数组,每1元素与DataSet每项记录对应上,我曾实现。