首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

给出一个限制条件后判断在DBGrid1中显示

2012-03-27 
请教高手 给出一个限制条件后判断在DBGrid1中显示我有个问题我们老师让做一个学籍管理系统我做的有个菜单

请教高手 给出一个限制条件后判断在DBGrid1中显示
我有个问题
  我们老师让做一个学籍管理系统
      我做的有个菜单       学生管理-学生信息   当我单击时   在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;

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

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

热点排行