我有个问题
 我们老师让做一个学籍管理系统
   我做的有个菜单   学生管理-学生信息 当我单击时 在DBGrid1中显示我做的学生信息的表格
   这个我做到了
   接着还有个菜单    成绩管理-(本学期成绩,补考成绩,极限补考成绩(前面三个是并列的)),我想实现的是   当我单击本学期成绩时就显示我做的本学期成绩的表格  
   这个我也做到了 
  重点到了 
  我还设制了一个button1我让他的caption的值为检查分数 
  是想实现当我点button1时  就会在DBGrid1中显示所有成绩不及格的学生的信息(比如在里面的一个 couscore的值小于60)。
   我做了总是出错最后好象是说我做的程序有漏洞什么的
  请帮帮我呀 我用的是 table1 和datasource
   下面是我的写的程序  
   帮我改改谢谢了 
procedure TForm1.N2Click(Sender: TObject);
begin
       table1.Active :=true;
end;procedure TForm1.N4Click(Sender: TObject);
begin
     table1.Active :=false;
     table1.DatabaseName :='学生成绩登记表';
    table1.TableName :='学生成绩登记表.db';
    DBGrid1.DataSource :=datasource1;
    datasource1.DataSet :=table1;
    table1.Active :=true;
end;procedure TForm1.Button6Click(Sender: TObject);
begin
  table1.Active :=false;
 if table1.FieldByName('CouScore').AsString <'80' then
  begin
 // table1.filtered:=true;
 table1.Active :=false;
  table1.DatabaseName :='学生成绩登记表';
  table1.TableName :='学生成绩登记表.db';
  DBGrid1.DataSource :=datasource1;
  datasource1.DataSet :=table1;
  table1.Active :=true;
  end;
end;begin   //if messagedlg('您确定要添加记录吗?',mtwarning,[mbyes,mbno],0)=mryes then
        a:=strtoint(edit1.Text);
        //b:=strtoint(edit9.Text);
       // c:=strtoint(edit10.Text);
       // d:=strtoint(edit13.Text);
       // e:=strtoint(edit14.Text);
        table1.insertrecord([a,edit2.Text,edit3.Text ,edit4.text,edit5.Text,edit6.Text,edit7.Text,edit8.Text,edit9.Text,edit10.Text,edit11.Text,edit12.Text,edit13.Text,edit14.Text,edit15.Text]);end;

解决方案 »

  1.   

    你可以在你点击button1的时候用datasource的filter方法过滤数据
    将不及格的记录显示出来
    要是一条条判断,数据量大的话会很慢的
    datasource.dataset.filter := 'couscore < 60';
    datasource.dataset.filtered := true;
    这样就可以过滤了
    想取消过滤就用
    datasource.dataset.filter := '';
    datasource.dataset.filtered := false;
      

  2.   

    楼上正解,不过看你程序好象做的很复杂,那么简单的功能几乎不用写代码,全部可以由控件完成。
    '您确定要添加记录吗?' onbeforepost
    所有edit都用dbedit
    所有数据库操作都用标准actionlist,数据过滤采用楼上办法,程序稳定又不会出错。
      

  3.   

    二楼的帅哥
    datasource.dataset.filter := 'couscore < 60';
    datasource.dataset.filtered := true;
    中的':='是=吧 我认为
      

  4.   

    delphi中赋值是 := 而不是 =。
      

  5.   

    我是帅哥你们知道吗我只是说话谦虚点怎么就成mm了 你难到想让我说脏话吗 (开玩笑的)
    我是男生 可爱的男生 哈哈
    还有
      你说的那个我试过了 但是我怎么才能在我点击 学生信息时在gbgrid中再显示学生登记表
     就是可以来回的点击切换呢
      明不明白我说的吗呀
      在  学生信息  本学期成绩登记表 和 button1来回的切换 我想应该明白了把