如何在DBgrid中插入一个自增的字段?恳请说的具体一些
解决方案 »
- 怎么发布delphi软件,让其能脱离环境运行!
- 用DELPHI开发的WebService中如何使用Session?
- 以下这个功能有点问题,想请各位兄弟帮一下忙
- 如何计算出表中的某个字段有不同值的个数? 在线
- 为什么总是提示报[ODBC Microsoft Access Driver]密码无效啊?
- 关于打印的难题,请高手帮忙!!!
- 还是关于Socket编程的问题——在Delphi的Winsock.pas单元中没有导出部分异步函数,如何导出?
- 如何使得应用程序窗体大小不依赖于屏幕分辨率?
- 如何让Delphi编译结果Dialog在编译完后自动弹出?
- 请问用Delphi如何编写Service程序,最好给些例子或资源,谢谢。
- 如何调用自定义过程
- 如何在ADOuery里动态加入永久字段?
有两种方法?
第一种:在DBGrid的DrawColumnCell事件中:
procedure TDictateFRM.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
with (Sender as TDBGrid).DataSource.DataSet do //画序号
begin
if DataCol = 0 then //第一列
begin
if not (state in [dsEdit, dsInsert]) then
(Sender as TDBGrid).Canvas.TextRect(Rect, Rect.Left + 15, Rect.Top +
2,
IntToStr(Recno));
end;
end;
end;
第二种:
先在dbgrid的数据集adoquery等新增一个计算字段(字段1)
然后在数据集的OnCaclFields事件:
DataSet.FieldByName('字段1').AsInteger:=DataSet.RecNo;
先在dbgrid的数据集adoquery等新增一个计算字段(字段1)
然后在数据集的OnCaclFields事件:
DataSet.FieldByName('字段1').AsInteger:=DataSet.RecNo;用这种方法,在DBGrid里显示出来的是:-1
2
3
这是怎么回事啊?
DataSet.FieldByName('字段1').AsInteger:=abs(DataSet.RecNo);
其他的字段没多久显示出来是因为你没给数据库里的字段加到数据集组件上 双击你的DATASET
右键 ADD FIELD...