我说一下大概的思路,因为没有看到你的具体表结构如果你的课程名称不定,那你要想办法把它变成"定"
如每个班级课程应当是定的(在你的系统中要有这个资料)建一数组他在最大下标为要班级的课程数+1
arr(1)=课程1名称
    .
    .
    .
    .
arr(max-1)=课程数名称
arr(max)="总学分"
建一临时表
字段为
学号,课程1,2,3...课程最大数,总学分以要查询班级的学生做循环
do while not eof("学生")
  select 临时表
  append blank
   repl 学号 with 学生.学号
   找学生 课程1 的学分 找到 为找到的值 没找到为0
   ....
   select 学生
   skip
enddo
repl all in 临时表 总学分 with 课程1 的学分+...课程max 的学分报表的制作就比较简单
 头   学号 课程1名称 课程2名称 课程3名称 课程4名称 ... 总学分    -------------------------------------------------------------
 明细 001    5           6          4        5     ....  xxx
      002    5           6          4        6     ....  xxx头行   域控件数设大一点 可以设最多课程数班级课程数+2
       域控件的值为 iif(type("arr(1)")="C", arr(1), "") ...明细行 域控件数和头行一样
       域控件的值为 iif(type("课程1")="N", 课程1,0) ...
             格式为 @Z