delphi7。
access2003表。数据结构:id,nofirst,nolast,name
控件用dbgrid,dbedit。
adodataset的commandtext为 select *,'干介字'+nofirst+'第('+nolast+')号' as no from tablename当adodataset.append后,语句adodataset.fieldbyname('no').asstring = adodataset.fieldbyname('nofirst').asstring + adodataset.fieldbyname('nolast').asstring; 出错,
提示 field 'no' cannot be modified。请教大家,我如何实现这种赋值?

解决方案 »

  1.   

    不能对这样的字段赋值,
    添加后,只能对nofirst, nolast分别复制,再重新open dataset刷新数据。
      

  2.   

    谢谢回复,
    因为这个dataset连接了一个dbgrid,有一列就是显示的no,在增加数据的过程中,其他列都可以实时在dbgrid的相应列显示出来,就这个no列一片空白,挺突兀的。我想该列也能实时显示就好了。没办法吗?
      

  3.   

    好像不行,'干介字'+nofirst+'第('+nolast+')号' as no 你的这个字段在数据库表中是不存在的。
      

  4.   

    汗,空字段就空字段啊,空着其实也没什么.有数据了自然显示.你自己加上一些数据,就看人家有没有用,如果刚才的字段来了真正的值,而你这边又让你显示其它信息了,也就说数据丢失了.不要其实,你干脆把该显示字段在DBGRID中删除好了.
      

  5.   


    你可以不要用as字段,
    在DBGrid添加一个列,用重绘来显示干介字'+nofirst+'第('+nolast+')号'这样的值。在DrawColumnCell事件中写。
      

  6.   

    自己google DrawColumnCell :)
      

  7.   

     谢谢 CoolSlob。
    正是我要的效果,以前在dxdbgrid的CustomDrawCell写过代码,但仅限于修改颜色什么的,没想到还能用在这里。还是自己学艺不精,对该事件没有真正认识。
    谢谢。