不要这样苦恼,麻烦是有点麻烦,但也不是很难的。
我不会用DELPHI,PB也很水,不过你这个问题我的看法是这样的,提供一个思路:
你的表设计没有问题,应该是这样设计的。
你用MSHFGRID 控件就可以了(不知DELPHI、PB 中能不能用),录入前生成一个交叉表格的样子。若以前有成绩数据,从数据库中取出数来填到对应的单元格中去。成绩表录入在此控件上进行,在窗体上加个保存按钮,需要保存时按表格中的内容进行相应的数据库操作。
MSHFGRID  不能直接修改,所以你需要加一个TEXTBOX或其他的控件来录入数据。录入后的内容再反映到MSHFGRID中去。具体内容也很多,要注意的细节也很繁琐,就不细说了。你可以查一下

解决方案 »

  1.   

    谢谢按钮大哥
    不过MSHFGRID是什么控件,vb的么
      

  2.   

    能不能不叫我大哥?我是女的! MSHFGRID 是MS的一个表格控件,在VB中很好调用.不知道用DELPHI或PB 可不可以,若有类似的表格控件也可以考虑.
      

  3.   

    呵呵,这几位有趣.
    言归正传,我觉得你根本不必做这样的输入界面,换成只输入
    学号,课程号,成绩的界面,输入学号时提示姓名,输入课程号时提示课程名,
    至多做到可以选择"姓名"来输入学号,选择课程名来输入课程号.
    报表才作成
        sno  sname  课程1  课程2  课程3  课程4  课程5...
        0909  王华    98      87    45      54    56
        8343  黎明    76      67    98      69    67
        0987  张强    87      98    77      89    68     
      

  4.   

    教授?FOXBASE?!
    !!
    刚好我前一段时间有做过!用来管理工序调度计划的(可惜我是用VB实现的,^_^)
    给个思路!
    库结构不用变!
    1:首先形成你所需交叉表(用 存储过程(IF SQL Server);视图(IF ACCESS),数据是只读的)
      可以做到动态列!
    2:用网格来显示交叉表;(推荐用VSgrid!或者MSHFGRID+TEXT)
    3:用网格的CELL_CHANGE(row,col)事件,根据行和列来添加,修改数据库(注意NULL情况)
      然后再刷新网格
    4:我的情况比你复杂多了!细节问题自己处理!
      

  5.   

      好啊,论坛两大著名人物居然是MM。哈。
      我提供一个建议:
      这个问题其实也就是近似于把一个表格转了90度,dephi我是门外汉,vfp中有数组变量,我想dephi。
      这样子。建临时表输入,录入界面的sno,sname部分先不考虑,把课程成绩信息赋给数组变量。array1(row,col),建array2(col,row),然后把行列互换,再然后你只要考虑把成绩表里的sno填上就行了,这就很简单了。因为换过来的课程1,2,3,4,5门课的信息每个人都有
      

  6.   

    ???怎么!!!按钮工厂是女Pro, 真想不到.
      

  7.   

    不信!
    网上MM少!
    MSDN上MM更少!
    能够让我遇见,又解风情的----没有!
      

  8.   

    TO: 贴主:
    不好意思拿你的贴子开了几句玩笑,请别介意。TO: 大家:
    郑重声明:本人,男,31岁,已婚,有一子,7岁。请大家千万不要搞错:)
      

  9.   

    to argin:
    这句话怎么这么经典,就为这句话,贴主可以加分了^@^
      

  10.   

    to tell:
    这个问题,我今天做财务报表刚试过,你可以一试
      

  11.   

    看mssql帮助,交叉表项:
    下面sql语句可把第一个表旋转90度
    SELECT Year, 
        SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,
        SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,
        SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,
        SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4
    FROM Northwind.dbo.Pivot
    GROUP BY YearYear   Quarter   Amount                                  
    ----   -------   ------                                  
    1990   1        1.1                                      
    1990   2        1.2           Year Q1 Q2 Q3 Q4       
    1990   3        1.3    ==>    1990 1.1 1.2 1.3 1.4      
    1990   4        1.4           1991 2.1 2.2 2.3 2.4      
    1991   1        2.1                                      
    1991   2        2.2                                      
    1991   3        2.3                                      
    1991   4        2.4                                      
    不过这只能用做显示,delphi中的decisioncube和pb中的交叉报表都有这样的功能。要输入就只能用临时表了