定义coloumn(在dbgrid上按右键),设置各个coloumn的FieldName 属性就可以了。

解决方案 »

  1.   

    我想你可以这样:
    用STRINGGRID代替DBGRID,为它定好姓名,,语文,英语4列,
    然后,
    while not eof do
    begin
      if trim(fieldbyname('科目'))='数学' then
        ...(insert data to stringgrid)
      ...
    end;
      

  2.   

    这个问题我也碰到过,我觉得其中一种很好的解决方法就是创建一个临时表,
    把想要显示的数据根据格式插入,再显示出来
    比如:你可以创建临时表#km(code,shuxue,yingyu,chengji)
      

  3.   

    我同意楼上的说法,
    比如创建临时表KM
    在用insert into 将需要的数据插入进去,
    执行完毕后再删除
      

  4.   

    to   hellowbh(程序员),这样恐怕不行把,数学,语文,英语是那个表里记录的值呀。
    to  gmc007(江西的佬表)
    这样我决的到可以,不过我找不到stringgrid 呀,在那块了。
    还有怎样把各科对应的成绩列出来,似乎库结构应该是,姓名,数学。语文。
    成绩不做字段。
    但这样不符合数据库规则呀,而且浪费空间呀。
      

  5.   

    放一个DBgrid,一个stringgrid,两个挨到一起,给人错觉,以为是在一起的,然后就自己写代码计算成绩。
    stringgrid不会找不到吧,小妹~~~,吓我呀
      

  6.   

    看来你还没使用过dbgrid.照我的方法去试试,或好好看看书上怎么使用dbgrid.
      

  7.   

    先用Query 查询。 select *,数学+语文+英语  as 总成绩
     from 
         (SELECT 姓名,
             SUM(CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS 数学, 
             SUM(CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS 语文, 
             SUM(CASE 科目 WHEN '英语' THEN 成绩 ELSE 0 END) AS 英语
          FROM 科目成绩表 
          GROUP BY 姓名
         ) as aaa查询结果
        姓名  数学 语文 英语  总成绩
        aaa   10    0  20      30
      

  8.   

    修改一下,不应该 sum.
    select *,数学+语文+英语  as 总成绩
    from 
        (SELECT 姓名,
            (CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS 数学, 
            (CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS 语文, 
            (CASE 科目 WHEN '英语' THEN 成绩 ELSE 0 END) AS 英语
          FROM 科目成绩表 
        ) as aaa
    order by 姓名
      

  9.   

    不能连续回复3次,害得我换了个名称abc123456进来修改了一下。
    这个规矩太讨厌了。
      

  10.   

    谢了。
    to hellowbh  你的方法挺特别,
    我的试试,
    现在有三种方法:用stringgrid,用临时表,用hellowbh的方法,等‘
    我弄出那种方法好,一定告诉大家了,
      

  11.   

    还得有sum.因为只有有group by 姓名 子句才会将同一个 姓名 的记录并到一行。
      

  12.   

    to hellowbh
     好象也不行吧,要是科目有两颗,那样可行吗?
      

  13.   

    lin513(ljq513)废话:这个量体裁衣.