数据库的查询(100分)

  • 主题发起人 主题发起人 ZhangLiMing
  • 开始时间 开始时间
Z

ZhangLiMing

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个表结构如下:
XX班成绩单:
姓名 语文 数学 外语 ..........
张三 98 81 102 ..........
李四 79 87 99 ..........
王五 100 54 87 ..........
......
我的问题是:
在一个DBGrid控件中我要查询分数为87分的记录(不管
哪一门课)
请问该如何查询?
 
edit1.text:='87';
with query2 do
beign
close;
sql.clear;
sql.add('select * from tablename where m=:ll or ch=:ll or en=:ll');
parambyname('ll').value:=strtoint(edit1.text);
open;
end;
---->dbgrid2
 
select * from XX where (语文成绩=87)or(数学成绩=87)or(外语成绩=87)
 
我来晚了55555555555555555。。。。。。。。
 
我更晚.........
 
莫道君行晚,更有晚行人
 
看看这分拿不到。。唉。晚了
 
我想你用的应该是TABLE控件吧,如果是,也可以这样查询:

Table1.Filter='YY=55 or SX=87 or WY=87';
Table1.Filtered:=True;

我觉得文件型数据库还是用filter比较好。

 
但是.....
我的'问题'是不是只有三门课,如果有很多课该怎么办,
而且我要求找到一个相符的数据就跳到DBGrid相应的格上.......

 
把表頭做成數組, 然後循環取數..

看來 "起的早, 不見得身體好" ...xixi
 
不怎么好吧...
 
先用query把全部数据读出来
然后
for i:=0 to Query.filedcount-1 do
begin
if Query.fields=87 then
...
end


 
我来的太晚了
 
我认为只要句sql语句就行了我写好了发给你
 
大家看清楚:
>>而且我要求找到一个相符的数据就跳到DBGrid相应的格上.......
提问者的意思是先把所有分数查出来,然后用查询在DBGRID上做定位。
不是用SQL语句过滤耶。
大家抢分这么积极,题目也不看清楚。
有本事的继续发言啊!
 
方法:逐行逐列查找
var
no, x ,y:integer;
begin
while not Query1.Eof do begin
for i:=x to y do begin //x, y 为存放分数字段的序号
if Query1.Fields.AsInteger=87 then begin
DBGrid1.SelectedIndex:=i; //跳到相应的格子
//........ 其他操作
end;
end;
Query1.Next;
end;
end;
 
多人接受答案了。
 
后退
顶部