我用的是dbexpress来连接数据库,用dbgrid来显示数据,碰到了麻烦,求高手指教!
       1,我想在dbgrid里的第一列显示记录编号,如1,2,3.......,有5条就显示到5,这个字段是不在数据库里的,怎么实现?
       2,数据修改问题。就是能修改数据,然后保存。我用的是dbexpress,但我不知道如何获取修改后的数据,如果有多条,该如何得到并入库!
   谢谢指教!!!

解决方案 »

  1.   

    添加一个 CACULATE FIELD ,让他 := DATASET.RECNO
      

  2.   

    2.DATASET.CACHEDBUFFER := TRUE;
      DATASET.APPLYUPDATES
      

  3.   

    如果是ACCESS或SQL SERVER 用SQL 语句是可以的。我以前这么用过。
      

  4.   

    dbexpress连接的数据库也可以用SQL 语句实现的
      

  5.   

    procedure TFrmLog.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
     DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    begin
     with DBGrid.DataSource.DataSet do
     begin
       if DataCol = 0 then//第一列
         DBGrid.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, IntToStr(RecNo));
     end;
    end; 
      

  6.   

    西吹吹雪,如果设置了fileter,recno就不连续了
    我认为QWERT520(别来无恙) 的主意不错。就加个空列,手工画。
      

  7.   

    在数据集增加一个永久字段,然后在这个字段的OnGetText()事件来实现
    Text :=  DATASET.RECNO;
    但是需要另外处理的是数据集默认当前行的RECNO为-1所以当为-1的时候修改为1,在这里单独处理一下就可以了