L
lsssxs
Unregistered / Unconfirmed
GUEST, unregistred user!
请指教:有啥好的方法还,感谢先!
问题点:现在从另外一个数据库取得了一个数字,显示在edit1里面,我要在这个edit在范围之内,否则报警;
说明:edit1取的了数据库表的数据,这个是另外的代码,自动取得的了,这个代码不要理了,是别人的dll自动取得的,这个dll会自动取数据到dbedit1显示;
dll同时把数据库表里面的2个字段也取了,放在dbedit2和dbedit3显示;
现在我要作的就是先要edit1比较dbedit2小 比dbedit3大 否则报警
我现在做的方法是先写一个函数,
function baojing(num:string):string;
begin
with DataModule5.baojing do
begin
Close;
SQL.Clear;
SQL.Add('select baojingID,故障名称,报警上限,报警下限,当前值 from baojing');
SQL.Add('where (当前值<=报警下限 and 报警下限<>0) or (当前值>=报警上限 and 报警上限<>0) order by baojingID');//比较查询显示出来
OPen;
next;
end;
end;
然后在edit的onChange事件下:
procedure TFrame9.Edit1Change(Sender: TObject);
begin//先写进去值进去函数,但是我有很多个edit的呀,80个edit呀,都要写这个代码,会累死,程序也会很大,
with DataModule5.baojing do
begin
Close;
SQL.Clear;
SQL.Add('select* from baojing');
OPen;
edit;
fieldbyname('当前值').AsString:=trim(edit1.Text);
post;
if (trim(edit1.Text)<trim(dbedit2.Text)) and (trim(edit1.Text)>trim(dbedit3.Text)) then//这里的比较如果写代码进去,就不需要了,我重复写一下在这里,是想不写edit的值进去数据库就比较,如果写进去了,上面的代码就比较了大小了
begin
baojing(trim(edit1.Text)); //执行函数
end;
end;
要兄弟们指教的是:
1.查询这个事件我写成函数了,可以在onchange下面调用这个函数,但是也要写执行函数的代码,也麻烦;还有好的方法吗?。
2.咋样作一个函数就可以把edit1的值写进去,80个edit的值只要如果改变了,就写进去,最好是简单一点,一句就好,或者设置一下就好,代码公用呢,嘻嘻嘻,咋样作
3.还有一种方法,就是数据库表里面我列表了1~80种故障信息,只要是如果edit的值和dbedit2,dbedit3比较以后满足报警,就找到相对应的报警信息,比如edit1对应数据库表里面的12号故障信息,比如edit55对应数据库表里面的15号信息,如果edit55比较后满足报警条件,就显示15号故障,这个方法最好,那位兄弟有好的方法,
4.还有一种,就是先建立故障列表,写进去80个故障信息,然后使用一个time定时增加edit的值进去字段里面,再使用一个time定期的进行数据库的轮询的比较过滤,把比较后的显示出来,但是这样就会使数据库频繁的查询,会不会对速度或者其他产生影响
在这里感谢大家先,同时先给大家拜个早年
问题点:现在从另外一个数据库取得了一个数字,显示在edit1里面,我要在这个edit在范围之内,否则报警;
说明:edit1取的了数据库表的数据,这个是另外的代码,自动取得的了,这个代码不要理了,是别人的dll自动取得的,这个dll会自动取数据到dbedit1显示;
dll同时把数据库表里面的2个字段也取了,放在dbedit2和dbedit3显示;
现在我要作的就是先要edit1比较dbedit2小 比dbedit3大 否则报警
我现在做的方法是先写一个函数,
function baojing(num:string):string;
begin
with DataModule5.baojing do
begin
Close;
SQL.Clear;
SQL.Add('select baojingID,故障名称,报警上限,报警下限,当前值 from baojing');
SQL.Add('where (当前值<=报警下限 and 报警下限<>0) or (当前值>=报警上限 and 报警上限<>0) order by baojingID');//比较查询显示出来
OPen;
next;
end;
end;
然后在edit的onChange事件下:
procedure TFrame9.Edit1Change(Sender: TObject);
begin//先写进去值进去函数,但是我有很多个edit的呀,80个edit呀,都要写这个代码,会累死,程序也会很大,
with DataModule5.baojing do
begin
Close;
SQL.Clear;
SQL.Add('select* from baojing');
OPen;
edit;
fieldbyname('当前值').AsString:=trim(edit1.Text);
post;
if (trim(edit1.Text)<trim(dbedit2.Text)) and (trim(edit1.Text)>trim(dbedit3.Text)) then//这里的比较如果写代码进去,就不需要了,我重复写一下在这里,是想不写edit的值进去数据库就比较,如果写进去了,上面的代码就比较了大小了
begin
baojing(trim(edit1.Text)); //执行函数
end;
end;
要兄弟们指教的是:
1.查询这个事件我写成函数了,可以在onchange下面调用这个函数,但是也要写执行函数的代码,也麻烦;还有好的方法吗?。
2.咋样作一个函数就可以把edit1的值写进去,80个edit的值只要如果改变了,就写进去,最好是简单一点,一句就好,或者设置一下就好,代码公用呢,嘻嘻嘻,咋样作
3.还有一种方法,就是数据库表里面我列表了1~80种故障信息,只要是如果edit的值和dbedit2,dbedit3比较以后满足报警,就找到相对应的报警信息,比如edit1对应数据库表里面的12号故障信息,比如edit55对应数据库表里面的15号信息,如果edit55比较后满足报警条件,就显示15号故障,这个方法最好,那位兄弟有好的方法,
4.还有一种,就是先建立故障列表,写进去80个故障信息,然后使用一个time定时增加edit的值进去字段里面,再使用一个time定期的进行数据库的轮询的比较过滤,把比较后的显示出来,但是这样就会使数据库频繁的查询,会不会对速度或者其他产生影响
在这里感谢大家先,同时先给大家拜个早年