小弟只有165分,全部奉上!请教(165分)

  • 主题发起人 主题发起人 木工
  • 开始时间 开始时间

木工

Unregistered / Unconfirmed
GUEST, unregistred user!
我用access做了数据库表,用adoquery控件连接。
界面上准备用两个radiogroup控件,
radiogroup1 radiogroup2
高数 优(90-100)
语文 良(80-90)
英语 中(70-80)
物理 及格(60-70)
不及格(小于60)
任意选中两个radiogroup的一项,组合起来,从表中查找符合条件的记录,显示在memo控件中。
望高手们解答,尽量详细一些,给我写几行关键代码。
 
var
ok1,ok2:string;

procedure TForm.FormCreate(Sender: TObject);
begin
ok1:=0; ok2:=0;
end;

procedure TForm.radiogroup1Change(Sender: TObject);
begin
ok1:=radiogroup1.Items[radiogroup1.ItemIndex];
if ok2<>0 then
begin
query1.close;
query1.sql.clear;
query1.sql.add('select * from delphi.db');
query1.sql.add('where km="'+ok1+'"');
query1.sql.add('and where fs="'+ok2+'"');
query1.open;
end;
end;

procedure TForm.radiogroup2Change(Sender: TObject);
begin
ok2:=radiogroup2.Items[radiogroup2.ItemIndex];
if ok1<>0 then
begin
query1.close;
query1.sql.clear;
query1.sql.add('select * from delphi.db');
query1.sql.add('where km="'+ok1+'"');
query1.sql.add('and where fs="'+ok2+'"');
query1.open;
end;
end;

至于显示在memo控件中,我想你应该会吧?
 
xk := RadioGroup1.Items[RadioGroup1.ItemIndex] ; //学科
cj := RadioGroup1.Items[RadioGroup1.ItemIndex] ; //成绩

sql.text := 'select * from 表名 where 学科='+''''+xk+''''+'and 成绩='+''''+cj+'''';
 
就用楼上的啊,简单实用!
 
楼上的很不错的呀,还可以再简化一点:
query1.sql.text := 'select * from 表名 where 学科='''+xk+'''and 成绩='''+cj+'''';
query1.open;
 
我的数据表
学号 姓名 高数 语文 英语 物理
没有"科目"和"成绩"字段
sql语句里不是要where 字段名=''?
query1.sql.text := 'select * from 表名 where 学科='''+xk+'''and 成绩='''+cj+'''';
 
case RadioGroup1.ItemIndex of
0 : query1.sql.text := 'select * from 表名 where '+'RadioGroup1.Items[RadioGroup1.ItemIndex]'+'>90';
1 : ......
2 ; ....
3 : ......
end;
 
var
ok1,ok2:string;

procedure TForm.FormCreate(Sender: TObject);
begin
ok1:=0; ok2:=0;
end;

procedure TForm.radiogroup1Change(Sender: TObject);
begin
ok1:=radiogroup1.Items[radiogroup1.ItemIndex];
if ok2<>0 then
begin
query1.close;
query1.sql.clear;
query1.sql.add('select * from delphi.db');
query1.sql.add('where "'+ok1+'">"'+ok2+'"');
query1.open;
end;
end;

procedure TForm.radiogroup2Change(Sender: TObject);
begin
ok2:=radiogroup2.Items[radiogroup2.ItemIndex];
if ok1<>0 then
begin
query1.close;
query1.sql.clear;
query1.sql.add('select * from delphi.db');
query1.sql.add('where "'+ok1+'">"'+ok2+'"');
query1.open;
end;
end;
 
同意楼上几位
 
还有一点,我的等级是区间.
比如90-100
chur,这个又该如何表达呢?
我的radiogroup2的按钮text:=优(90-100)
..........
..........
 
用between .. and ..这样写
case RadioGroup1.ItemIndex of
0 : query1.sql.text := 'select * from 表名 where '+'RadioGroup1.Items[RadioGroup1.ItemIndex]'+'>90';
1 : query1.sql.text := 'select * from 表名 where '+'RadioGroup1.Items[RadioGroup1.ItemIndex]'+'between 80 and 90'
2 ; ....
3 : ......
end;
 
mlzhou你一个人把东西都写完了,我们咋办?[^]
不过我提示一下在ADOQuery1的open前最好要习惯用try
try
ADOQuery1.open;
except
ADOQuery1.ExecSql;

 
不错,简单!!
简化一下!
str:='select * from 表名 where '+'RadioGroup1.Items[RadioGroup1.ItemIndex] ';
case RadioGroup1.ItemIndex of
0 : query1.sql.text := str+'>90';
1 : query1.sql.text := str+'between 80 and 90'
2 ; ....
3 : ......
end;
 
设置 优(90-100) Tag 为 9
良(80-90) Tag 为 8
中(70-80) Tag 为 7
及格(60-70) Tag 为 6
不及格(小于60) Tag 为 5

if RadioGroup4.Items[4].checked then
Begin
sql.add(' select * from 表名 where '+ RadioGroup1.Items[RadioGroup1.ItemIndex]+
' <60' );
End
else
begin
sql.add(Format('select * from 表名 where '+ RadioGroup1.Items[RadioGroup1.ItemIndex]+' between %d and %d'),
[RadioGroup1.Items[RadioGroup1.ItemIndex].tag *10,RadioGroup2.Items[RadioGroup2.ItemIndex].tag *10+10]);
end;
open;
 
try
ADOQuery1.open;
except
ADOQuery1.close;
 
多人接受答案了。
 
后退
顶部