前几天提过的问题,不过我说得不清楚,而且也没有朋友正面回答过,所以今天再提一下:希望能正常显示,也同时希望语句能简练一点。Access表下两个表表1(字段‘积分’和‘级别’)积分 级别
0
3
10
101
1010
10002
200
……表2(字段 二级 三级 四级 五级) 二级 三级 四级 五级
10 100 1000 10000
但是在Access表2中 有二级 三级 四级 五级 四个字段,它们的字段内容为积分界限,分别由DBedit1、Dbedit2、Dbedit3、Dbedit4控制,操作者可以自由定义表2中的数据。如果以上表为例,我需要得到的结果:当0~9积分级别为一级,10~99积分级别为二级……以此类推。
我自己写了几句: begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表1,表2 set 表1.级别=''一级'' where 表2.二级>表1.积分');
adoquery1.ExecSQL;
end;
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表1,表2 set 表1.级别=''二级'' where 表1.积分>=表2.二级');
adoquery1.ExecSQL;
end;
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表1,表2 set 表1.级别=''三级'' where 表1.积分>=表2.三级');
adoquery1.ExecSQL;
end;
……
这样写下去不会报错,但后一位(如果是三级、四级或五级)就不能正常附给“级别”了。各位能否帮小弟看一下呢?应该如何更改,或者是否会有更简练的写法。
0
3
10
101
1010
10002
200
……表2(字段 二级 三级 四级 五级) 二级 三级 四级 五级
10 100 1000 10000
但是在Access表2中 有二级 三级 四级 五级 四个字段,它们的字段内容为积分界限,分别由DBedit1、Dbedit2、Dbedit3、Dbedit4控制,操作者可以自由定义表2中的数据。如果以上表为例,我需要得到的结果:当0~9积分级别为一级,10~99积分级别为二级……以此类推。
我自己写了几句: begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表1,表2 set 表1.级别=''一级'' where 表2.二级>表1.积分');
adoquery1.ExecSQL;
end;
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表1,表2 set 表1.级别=''二级'' where 表1.积分>=表2.二级');
adoquery1.ExecSQL;
end;
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表1,表2 set 表1.级别=''三级'' where 表1.积分>=表2.三级');
adoquery1.ExecSQL;
end;
……
这样写下去不会报错,但后一位(如果是三级、四级或五级)就不能正常附给“级别”了。各位能否帮小弟看一下呢?应该如何更改,或者是否会有更简练的写法。
close;
sql.clear;
sql.add('update 表1,表2 set 表1.级别=''一级'' where 表2.二级>表1.积分');
ExecSQL;
sql.clear;
sql.add('update 表1,表2 set 表1.级别=''二级'' where 表1.积分>=表2.二级');
ExecSQL;
sql.clear;
sql.add('update 表1,表2 set 表1.级别=''三级'' where 表1.积分>=表2.三级');
ExecSQL;
end;
建议修改表2,改成
一级 二级 三级
10 100 1000 .....
然后用这个更新语句
update 表1 set 表1.级别=表2.级别 from 表1,表2 where 表1.积分<表2.积分
identity 10 一级
(自增) 100 二级
.....
一级 二级 三级
10 100 1000 .....
这种形式的但是也希望把所有的问题都弄清楚,如果按照DoerSoft() 的写法还是不能将最后一个字段附给“级别”,也就是写到 ……
ExecSQL;
sql.clear;
sql.add('update 表1,表2 set 表1.级别=''五级'' where 表1.积分>=表2.五级');
ExecSQL;
end;之后还是不能正常显示五级。只能显示四级,我也不知道为什么,是否执行了前面四个Update之后,不能执行下去,还是遇到什么冲突了?