一.有一个表,里面有一列为confirmed,内容为Y,N;现在我要在DBGRID里显示这一列的内容,如果confirmed为Y,就付值"已送仓",否则就"未送仓"(DBGRID 用DataSource 和 Query连接),我在QUERY的OnCalcFields写事件代码如下(为什么程序打开后confirmed那一列的内容没有变化?请高手指点!):
procedure Tfrmrd101.MasterQueryCalcFields(DataSet: TDataSet);
begin
  MasterQuery.Edit;
if MasterQuery.FieldByName('Confirmed').Asstring='Y' then
   MasterQuery.FieldByName('Confirmed').Asstring:='已送倉'
 else
   MasterQuery.FieldByName('confirmed').Asstring:='未送倉' ;
   MasterQuery.Post ;
end;

解决方案 »

  1.   

    既然楼主都点名道姓的找人进来回答
    我就不丢人现眼了不过好像直接用sql 的case 更加方便
      

  2.   

    (1)在设计是添加一计算字段,不能修改原来的字段内容,否则原来字段的内容就不是Y或N了
    (2)
    procedure Tfrmrd101.MasterQueryCalcFields(DataSet: TDataSet);
    begin
    if MasterQuery.FieldByName('Confirmed').Asstring='Y' then
       MasterQuery.FieldByName('计算字段').Asstring:='已送倉'
     else
       MasterQuery.FieldByName('计算字段').Asstring:='未送倉' ;
       MasterQuery.Post ;
    end;
      

  3.   

    TO:yoyoxu()
    你点名要你的旺仔哥哥,我怎么好意思抢呢!
    楼下的兄弟,排队,等旺仔哥哥来,不要插队
    To:wxmwxmwxm(毛毛毛毛)
    给旺仔哥哥留个位置,不要乱抢嘛 :)
      

  4.   

    真的很兴奋地居然有人在CSDN大声感我哥哥.
      

  5.   

    procedure Tfrmrd101.MasterQueryCalcFields(DataSet: TDataSet);
    begin
      with DataSet do begin  
        if UpperCase(FieldByName('Confirmed').Asstring)='Y' then
          MasterQuery.FieldByName('Confirmed').Asstring:='已送倉'
       else
         FieldByName('confirmed').Asstring:='未送倉' ;
      end;  
    end;
      

  6.   

    貌似使用计算字段比较费时,可以考虑Draw
      

  7.   

    to cncharles(旺仔)
    别人已经很亲切的叫你GG了,看似和你很熟悉的样子,你然后很激动地回答问题的说,然后突然又有一个天--------------------大的问号挂在脑袋上:
    if 兰妹 then
    激动
    else
    失落-激动(又多了一个mm)
      

  8.   

    馒头:那样数据不会提交上去么?如果是ado连接的话
      

  9.   

    用BDE连接,DELPHI5.0和SQL6.5,SQL6.5很不好用啊!!!
      

  10.   

    哟, 兰妹真够惨的咯.你用USB在家里下载个再装上
      

  11.   

    嗯,是了,你那个不行啊,跟我那个一样,程序开完后confirmed还是显示Y/N.我晕死了,尝试用CASE WHEN 语句 在查询器中可以运行,放到MASTERQUERY老是报错!SQL6.5一点都不好用!!
      

  12.   

    在QUERY的該字段的onGetText()事件里改: Y,就付值"已送仓",否则就"未送仓
    然後在onSetText()事件里改回去:"已送仓"付值Y ,否则就N
      

  13.   

    所以女人就是傻呼呼的,这么简单的问题也问,伤脑筋!
    在DBGridDrawColumnCell,里面判断,用canvas  textout 显示,而不是改变!!you know?
      

  14.   

    csdn罕见 
    5分的帖子吸引了这么多人
      

  15.   

    jbczj(讲不出再见)  如果你不想回答就不要回答 除非你妈妈不是女人
      

  16.   

    以Query为例.
    在字段编辑器里面, 右键 先Add All Fields, 再 New Field
    Name: fldYes
    Type: string
    Size: 10;
    选中 Calcultated. 确定.再写下面的代码
    procedure Tfrmrd101.MasterQueryCalcFields(DataSet: TDataSet);
    begin
      with DataSet do begin  
        if UpperCase(FieldByName('Confirmed').Asstring)='Y' then
          FieldByName('fldYes').Asstring:='已送倉' //注意这行
        else
          FieldByName('fldYes').Asstring:='未送倉' ;
      end;  
    end;
      

  17.   

    这个我知道了,旺仔哥哥,现在我要在一个表里删除一列,我晕死了,怎么这个不行啊:
    ALTER TABLE rd_itemcode drop COLUMN sendwh
    它提示说语法不正确!!急~~~~~~~~~~~~~~~
      

  18.   

    ...你删除一列的语法的sql语句都是错误的
      

  19.   

    对女同志真是照顾周到啊,嫉妒ing~~~
      

  20.   

    幽兰MM痴情,已经给出答案了,还死死的等旺仔GG的回答
      

  21.   

    为什么不使用TFIELD对象的ONGETTEXT事件呢?
      

  22.   

    ...没有想到啊,关注的人数如此之多,希望本贴能进入csdn热贴排行榜阿
      

  23.   

    48小时热贴排行第一阿,Delphi版的兄弟们真热情啊!:)
    感动
      

  24.   

    是你们自己脑袋有问题!还说别人! 
    Rubi,你要知道,在我们那个DELPHI群里,人气是很旺的,如果不积极回答问题,谁进去啊!本来加入群就是为了学习!我承认我是菜鸟,可是你们也不必一班人来攻击我们吧?!哼,我下个星期就可以用QQ了,不用在这里受你们的气!!!!!
      

  25.   

    yoyoxu,我可以从来没有对你不友好阿,我一直在努力帮你up在呢!
    再说,大家也都是来热闹下,没有谁攻击你啊,郁闷
      

  26.   

    Rubi 你看ghyghost(爱国人士) 说话不是说话酸溜溜的嘛?!不过谢谢你,Rubi.
      

  27.   

    你也不能怪大家,难得来个mm,你看看大家的积极性都被调动起来了
    这个帖子还成为了48小时最热贴,给D版带来了多大的热量阿!
    你来了其实还是很受欢迎的,以后要常来啊
      

  28.   

    你用的不是Query组件吗?就在sql里这样写:
    select ...,(Case confirmed When 'Y' THen '已送仓' Else '未送仓' End) as confirmed 
    from 表名,
    不用在事件里判断,不准确
      

  29.   

    Rubi 欢迎你加入我们的DELPHI群~~~~
      

  30.   

    你这样写,需要循环处理每一条记录。
    建议在取数据的时候处理Query.sql.text:='select (case confirmed when ''Y'' then ''已送仓'' else ''未送仓'') 
    from table1 where ....'
    //这样你只需要读到DBGrid就可以了,不需要再作处理
      

  31.   

    有问题啊,我的ado连不到数据库。伤心鸟
      

  32.   

    Query.sql.text:='select (case confirmed when ''Y'' then ''已送仓'' else ''未送仓'' end)  from table1 where ....'
    //少了end
      

  33.   

    谁统计一下CSDN的光棍比例是多少
      

  34.   

    Rubi 你加了没有,星期六才可以在那里见到你哦~~~~,我现在装不了Q,下星期用MP3带过来装!
    谢谢大家关注了,这个问题已经解决了.就是在QUERY里不能用CASE语句,所以晕的要死~~~~~~~~
      

  35.   

    嗯 finger 听你的话 这贴子结了!!
      

  36.   

    连aiirii(ari-http://spaces.msn.com/members/aiirii/)都来哎~看来不凑个热闹都不行啊。
      

  37.   

    rain8050(米虫) 不是混java么?怎么来有空来这坐坐啊
      

  38.   

    if MasterQuery.FieldByName('Confirmed').Asstring='Y' then
       MasterQuery.FieldByName('Confirmed').Asstring:='已送倉'
     else
    因为你在这里没有POST
    if MasterQuery.FieldByName('Confirmed').Asstring='Y' then 
    begin
       MasterQuery.FieldByName('Confirmed').Asstring:='已送倉';
       MasterQuery.Post;
    end else
      

  39.   

    妹妹找哥泪花流啊
    D版的风景,要求加精...
    呵呵,
    1、MM首先在网上发帖子寻找因为种种原因失去联系的GG
    2、在大家的猜测中,GG出现了
    3、....GGMM热烈交谈中
    4、问题出现:GG的老婆出现了
    5、....Rubi一直在故事中占据重要戏份
    6、Rubi能不能抢过GG的风头,成为这个帖子的主宰那?
    我们持续关注...