使用计算字段!
双击dbgrid 之后看看各个属性!

解决方案 »

  1.   

    就是用计算字段,在oncalafield事件中根据书籍数量对特殊标志列操作,
      

  2.   

    例如:
    表结构为:
    表名:MYTABLE
    字段1:书名 string
    字段2:数量 intger
    第一步:双击DBGRID添加所有字段,添加新字段,字段名填:标识符;字段类型添:STRING;OK!!
    第二步:执行一句SQL语句“Select *,"" 标识符 From MyTable”
    第三步:在QUERY1控件的oncalafield事件中写:
    If DataSet.FieldByName('数量').AsInteger < 100 Then
      DataSet.FieldByName('标识符').AsString := '×'
    Esle
      DataSet.FieldByName('标识符').AsString := '*';
      

  3.   

    dephi 在这点处理上真令人失望!!!
    我问题的本意是从数据库里面都取数据,然后断开与数据库的链接
    用户对某些行进行操作,我需要额外的一列或多列来标明它们,额外的行也未必就是计算字段
    我举的例子,可能描述不清吧。 zou5655(周围) 的解决办法与我的作法一样!
     如果 dbgrid 直接允许我们操作相应格子里面的数据,而不像现在强迫我们非要操作帮定的字段
    就好了!
    这个问题,在 vb 的 msflexgrid里面非常简单,它允许直接读写相应格子里面的数据,但不必更新数据库。
    总之,我认为 dephi 里面 dbgrid 功能是好,但帮定的太死了,可选择的太少了。
    像 stringgird 又太不好用了。
    在 vb 里面,令 grid.datasource=记录集之后,就可以对 格子任意操作,包括添加任意行任意
    列,添加或更改任意数据。
    这也可能与我的水平有关,只好再慢慢的发掘吧。
    这个问题如果没有更高明的解决手段,就可以了段了!谢谢上面朋友的热情参与与帮助!!!!!!!!!!!
      

  4.   

    应该在TTable或TQuery对象中加计算字段对象,不需要改数据库或在SQL中加一计算字段。做法如下:双击TTable或TQuery对象,打开字段编辑器(fields editor),按Ctrl+N或右击选"New field...", 在"New Field"对话框中填入字段名(如Flag),类型(String),大小(2),选中“Field Type”中的Calculated。在TTable或TQuery对象的OnCalcFields事件中写:if DataSet.FieldByName( '书籍数量' ).IsNull or DataSet.FieldByName( '书籍数量' ).AsInteger<100 then
      DataSet.FieldByName( 'Flag' ).AsString := '×'
    else
      DataSet.FieldByName( 'Flag' ).AsString := '*';楼上的后半部分跟我的一样,但前半部分不对,不能用SQL的计算字段。Delphi不会认它作计算型
    字段的,只会认为它也是数据库中字段。在OnCalcFields中只能给FieldKind为fkCalculated的字段赋值,否则它会以为是修改数据。
      

  5.   

    是不是要把参与计算的字段都设为Calculated?
      

  6.   

    不,只要把结果字段设置为Calculated。(一般自动会设置的)
      

  7.   

    谢谢大家的帮助!
    这个问题可以结了!
    总之,dbgrid 帮定的太死了,如果能允许我们自由的添加更改行列
    就好了!