就是怎么绑定dbgrid与数据库,使数据库中的状态标志在dbgrid中显示的是具体状态,如要查询的数据库中的表格的一列中表示状态,用数字表示的,0,1分别表示不同状态,0-没用完,1-已用完,怎么使查询后显示在dbgrid中的这一列是具体状态:没用完、已用完,而不是数字。谢谢大虾们!delphi访问数据库Delphi数据库

解决方案 »

  1.   

    在SQL中修改,如果你用的ORACLE,可以用DECODE函数
      

  2.   

    又见月经贴。最简单的办法,就是在数据表中相关字段的OnGetText中写代码如下:
    procedure TForm1.ClientDataSet1dfdfdGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    begin
      if Sender.AsInteger = 0 then
        Text := '没用完'
      else if Sender.AsInteger = 1 then
        Text := '已用完'
      else Text := '其他';
    end;
      

  3.   

    又见月经贴。最简单的办法,就是在数据表中相关字段的OnGetText中写代码如下:
    procedure TForm1.ClientDataSet1dfdfdGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    begin
      if Sender.AsInteger = 0 then
        Text := '没用完'
      else if Sender.AsInteger = 1 then
        Text := '已用完'
      else Text := '其他';
    end;我用的是ADOQuery和Dbgrid,上面的ongettext事件在哪?我是菜鸟,谢谢啊
      

  4.   

    可以在绑定的clientdataset中设定
      

  5.   

    二楼三楼正解,读取数据库中的字段,判断=0,dbgrid写入'未用完',if =1写入'已用完'
      

  6.   

    也可以在SQL语句中实现。不用delphi代码来判断。
      

  7.   

    这个个gettext在哪,ClientDataSet中没有gettext事件啊
      

  8.   

    在ClientDataSet中,可以导入数据库表的字段信息,OnGetText是某个字段对象上的事件,不是ClientDataSet的。
      

  9.   

    clientdataset需要和什么控件搭配用吗?比如ADOquery、datasourse、dbgrid?或者说clientdataset用的时候要怎么连接?
      

  10.   

    第一种:sql语句用 select case 某列 when 0 then '没用完' else 已用完 end from xxx
    第二种:TAdoquery OnCalcFields事件中设置列
    还有...
      

  11.   

    能不能介绍下再TAdoquery OnCalcFields事件中怎么设置列?能给点代码提示吗?
      

  12.   

    if adoquery1XXX.Value = 0 then
      adoquery1x.value = '没用完'
    else
      adoquery1x.value = '已用完';
    x、XXX需在adoquery1组件中添加。
      

  13.   

    if adoquery1XXX.Value = 0 then
      adoquery1x.value = '没用完'
    else
      adoquery1x.value = '已用完';
    x、XXX需在adoquery1组件中添加。解决了,谢谢