实数的比较条件

wazhqi 2003-02-10 05:04:37
有表结构如:
含量 :实型
消光 :实型
.......
.....
它的标准是
含量 >=89 >=86 >=86 其它
消光 <=0.06 <=0.10 <=0.20
则质量为优质品 一等品 二等品 不合格品
代码怎样写呢
...全文
56 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wazhqi 2003-02-11
  • 打赏
  • 举报
回复
我没有用控件呀
ttna 2003-02-11
  • 打赏
  • 举报
回复
dobetterthatnthink的方法不错,
你也可以不用存储过程,你不是想获得当前记录的质量值吗?
先建一个对照表tab1(如上dobetterthatnthink所示),
然后依照tab1更新你的数据表
sql:
while not yourTab.eof
begin
while not tab1.eof
begin
if yourTab.含量>=tab1.hl and 消光<=tab1.h2 then
update yourTabname set 质量=tab1.degrade where id=yourTab.id
tab1.next
end;
yourtab1.next
end;

wazhqi 2003-02-11
  • 打赏
  • 举报
回复
to dobetterthatnthink()
我用的数据库为access2000.
多壮志 2003-02-11
  • 打赏
  • 举报
回复
我认为很好解决。直接再加一个表格,表格可以如此定义
(
hl:decimal(10,2),
rhl:varchar(3),
hg:decimal(10,2),
rgh:varchar(3),
degrade varchar(10)
)
其中rhl和rgh分别表示关系,例如带如一个具体的例子如下:
hl rhl hg rgh degrade
------------------------------------------------------------
89 >= 0.06 <= 优质品
86 >= 0.10 <= 一等品

然后实际运用的时候,可以通过存储过程来返回结果。如果不会写,我建议您在看看资料。有些问题,太简单,问了也不 会回答.
这样处理,可以灵活,不需要每次都重新写诸如CASE的语句.




baby19820917 2003-02-10
  • 打赏
  • 举报
回复
我的个人意见:你用的控件是有问题的。我建一你换一个adoqruey这样的工作量就小了很多的啊。只要写好你的sql语句就可以实现你的功能了。而且这一点还是很好实现的啊。
idilent 2003-02-10
  • 打赏
  • 举报
回复
没有认真看,但是我觉得有的条件应该把=去掉吧。
wazhqi 2003-02-10
  • 打赏
  • 举报
回复
我的代码
if (RoundFloat(TQ_ZJHG.FieldByName('含量(%)').AsFloat, 2) - 89.00 >= 0.00)
and (RoundFloat(TQ_ZJHG.FieldByName('消光').AsFloat, 2) - 0.06 <= 0.00)
and (RoundFloat(TQ_ZJHG.FieldByName('NA离子(%)').AsFloat, 2) - 0.80 <= 0.00)
then
begin
TQ_ZJHG.FieldByName('质量').AsString := '1'; //优级品
exit;
end;
if (RoundFloat(TQ_ZJHG.FieldByName('含量(%)').AsFloat, 2) - 86.00 >= 0.00)
and (RoundFloat(TQ_ZJHG.FieldByName('消光').AsFloat, 2) - 0.10 <= 0.00)
and (RoundFloat(TQ_ZJHG.FieldByName('NA离子(%)').AsFloat, 2) - 1.20 <= 0.00)
then
begin
TQ_ZJHG.FieldByName('质量').AsString := '2'; //一等品
exit;
end;
if (RoundFloat(TQ_ZJHG.FieldByName('含量(%)').AsFloat, 2) - 86.00 >= 0.00)
and (RoundFloat(TQ_ZJHG.FieldByName('消光').AsFloat, 2) - 0.20 <= 0.00)
and (RoundFloat(TQ_ZJHG.FieldByName('NA离子(%)').AsFloat, 2) - 1.40 <= 0.00)
then
begin
TQ_ZJHG.FieldByName('质量').AsString := '3'; //二等品
exit;
end
else
begin
TQ_ZJHG.FieldByName('质量').AsString := '5'; //不合格品
exit;
end;
end;
可是测试时在边界数据不正确?
eg 86 0.10
86 0.20
ltmb118 2003-02-10
  • 打赏
  • 举报
回复

89 = A 86 = B ....

<= 0.06 = 1 , <= 0.10 = 2 ....

case of
...
case of
...
end

end



Billy_Chen28 2003-02-10
  • 打赏
  • 举报
回复
写什么代码???

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧