⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 企业污染源在线监控软件(delphi7.0+mysql)可以按说明文件自行扩充驱动(用DDE数据交换技术)来实现任意多个信号的可视化监控及报警。
💻 PAS
📖 第 1 页 / 共 5 页
字号:
if (adoquery4.FieldByName('sbmc').AsString='') then aaa:=aaa+'请输入设备名称!';
if (adoquery4.FieldByName('azdd').AsString='') then aaa:=aaa+'请输入安装地点!';
if (adoquery4.FieldByName('eddl').AsString='') then aaa:=aaa+'请输入额定电流!';
if (adoquery4.FieldByName('fzr').AsString='') then aaa:=aaa+'请输入设备负责人!';
if ((adoquery4.FieldByName('jstd').AsInteger<0)  or (adoquery4.FieldByName('jstd').AsInteger>7)) then aaa:=aaa+'本软件内建的设备监控通道为0--7,共8条,请选择0--7!';
if aaa <> '' then showmessage(aaa);
end;
end;

procedure TForm1.ADOQuery5BeforeScroll(DataSet: TDataSet);
var
aaa:string;
begin
if pagecontrol1.ActivePageIndex=3 then
begin
aaa:='';
if (adoquery5.FieldByName('servername').AsString='') then aaa:=aaa+'请输入dde服务器名称!';
if (adoquery5.FieldByName('itemname').AsString='') then aaa:=aaa+'请输入dde项目名称!';
if (adoquery5.FieldByName('start').AsString='') then aaa:=aaa+'请输入开始通道数据标识!';
if (adoquery5.FieldByName('num').AsString='') then aaa:=aaa+'请输入通道数目!';
if aaa <> '' then showmessage(aaa);
end;
end;

procedure TForm1.ADOQuery6BeforeScroll(DataSet: TDataSet);
var
aaa:string;
begin
if pagecontrol1.ActivePageIndex=4 then
begin
aaa:='';
if (adoquery6.FieldByName('name').AsString='') then aaa:=aaa+'请输入通道名称!';
if (adoquery6.FieldByName('sj_id').AsString='') then aaa:=aaa+'请输入数据标识!';
if (adoquery6.FieldByName('sj_type').AsString='') then aaa:=aaa+'请输入数据类型!';
if (adoquery6.FieldByName('save').AsString='') then aaa:=aaa+'请选择是否保存数据!';
if (adoquery6.FieldByName('if_wrw').AsString='') then aaa:=aaa+'请选择是否企业污染物!';
if (adoquery6.FieldByName('if_time').AsString='') then aaa:=aaa+'请选择是否在实时监控中显示图表!';
if (adoquery6.FieldByName('warming').AsString='') then aaa:=aaa+'请选择是否对此数据通道进行报警监控!';
if adoquery6.FieldByName('sj_id').AsInteger<8 then aaa:=aaa+'数据标识0--7已分配给设备监控通道,此处只能大于7!';
if ((adoquery6.FieldByName('bili').AsString='') and (adoquery6.FieldByName('total_dw').AsString <> '' )) then aaa:=aaa+'请输入换算比例!';
if aaa <> '' then showmessage(aaa);
end;
end;

procedure TForm1.DdeClientItem1Change(Sender: TObject);

var
tmp_sql,aaa,infostr:string;
info_length:integer; //收到的dde信息长度
i,m,n,k,b:integer; //循环变量
tdinfo:array [1..99] of info;
sn,mn,nn:integer;
begin

jvasqlscript9.Script.Clear;
//// 把dde信息解析到tdifo数组
infostr:=ddeclientitem1.Text;
info_length:=length(ddeclientitem1.Text);
m:=1;
n:=1;
aaa:='';
for i:=1 to info_length do
   begin
      if (infostr[i]=',') or (infostr[i]=';') then
         begin
            if infostr[i]=',' then
               begin
                  if n=2 then tdinfo[m].time:=strtodatetime(aaa);
                  if n=1 then tdinfo[m].tongdao:=strtoint(aaa);
                  if n=3 then tdinfo[m].shuju:=strtofloat(aaa);
                  n:=n+1;
                  aaa:='';
               end;
            if infostr[i]=';' then
               begin
                  tdinfo[m].shuju:=strtofloat(aaa);
                  aaa:='';
                  n:=1;
                  m:=m+1;
                  if m>100 then m:=1;
               end;
         end
         else
         begin
            aaa:=aaa+infostr[i];
         end;
   end;
for i:=1 to m-1 do
   begin
       
      //td_shuju[tdinfo[i].tongdao+xx_td[1]]:=tdinfo[i].shuju;
      if (tdinfo[i].tongdao +xx_td[1])<8 then
         begin
            n:=tdinfo[i].tongdao;
            case n of
               0: begin
                  if tdinfo[i].shuju <0.5 then jvtransled1.Color:=clred else jvtransled1.Color:=clskyblue;
                  if (td_shuju[0].shuju=1) and (jvtransled1.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['0',datetimetostr(td_shuju[0].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[0].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[0].shuju then td_shuju[0]:=tdinfo[i];
                  end;
               1: begin
                  if tdinfo[i].shuju <0.5 then jvtransled2.Color:=clred else jvtransled2.Color:=clskyblue;
                  if (td_shuju[1].shuju=1) and (jvtransled2.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['1',datetimetostr(td_shuju[1].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[1].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[1].shuju then td_shuju[1]:=tdinfo[i];
                  end;
               2: begin
                  if tdinfo[i].shuju <0.5 then jvtransled3.Color:=clred else jvtransled3.Color:=clskyblue;
                  if (td_shuju[2].shuju=1) and (jvtransled3.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['2',datetimetostr(td_shuju[2].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[2].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[2].shuju then td_shuju[2]:=tdinfo[i];
                  end;
               3: begin
                  if tdinfo[i].shuju <0.5 then jvtransled4.Color:=clred else jvtransled4.Color:=clskyblue;
                  if (td_shuju[3].shuju=1) and (jvtransled4.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['3',datetimetostr(td_shuju[3].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[3].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[3].shuju then td_shuju[3]:=tdinfo[i];
                  end;
               4: begin
                  if tdinfo[i].shuju <0.5 then jvtransled5.Color:=clred else jvtransled5.Color:=clskyblue;
                  if (td_shuju[4].shuju=1) and (jvtransled5.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['4',datetimetostr(td_shuju[4].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[4].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[4].shuju then td_shuju[4]:=tdinfo[i];
                  end;
               5: begin
                  if tdinfo[i].shuju <0.5 then jvtransled6.Color:=clred else jvtransled6.Color:=clskyblue;
                  if (td_shuju[5].shuju=1) and (jvtransled6.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['5',datetimetostr(td_shuju[5].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[5].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[5].shuju then td_shuju[5]:=tdinfo[i];
                  end;
               6: begin
                  if tdinfo[i].shuju <0.5 then jvtransled7.Color:=clred else jvtransled7.Color:=clskyblue;
                  if (td_shuju[6].shuju=1) and (jvtransled7.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['6',datetimetostr(td_shuju[6].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[6].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[6].shuju then td_shuju[6]:=tdinfo[i];
                  end;
               7: begin
                  if tdinfo[i].shuju <0.5 then jvtransled8.Color:=clred else jvtransled8.Color:=clskyblue;
                  if (td_shuju[7].shuju=1) and (jvtransled8.Color=clskyblue) then
                     begin
                        aaa:=format('insert into shebeiyunxing (sj_id,kj,gj,yunxing) values (%s,"%s","%s","%s");',['7',datetimetostr(td_shuju[7].time),datetimetostr(tdinfo[i].time),datetimetostr(tdinfo[i].time-td_shuju[7].time)]);
                        jvasqlscript9.Script.Add(aaa);
                     end;
                  if tdinfo[i].shuju <> td_shuju[7].shuju then td_shuju[7]:=tdinfo[i];
                  end;
            end;
         end
         else
         begin
            stringgrid1.Cells[1,tdinfo[i].tongdao-7+xx_td[1]]:=timetostr(tdinfo[i].time);
            stringgrid1.Cells[2,tdinfo[i].tongdao-7+xx_td[1]]:=floattostr(tdinfo[i].shuju);
            
         end;
   end;
for i:=1 to m-1 do
   begin
      adoquery11.First;
      while not adoquery11.Eof do
         begin
            n:=adoquery11.Fields[0].AsInteger;
            if tdinfo[i].tongdao+xx_td[1]=adoquery11.Fields[2].AsInteger then
               begin
                  if (adoquery11.Fields[3].AsString='实型') or (adoquery11.Fields[3].AsString='整型') or (adoquery11.Fields[3].AsString='计算') then
                     begin
                        if adoquery11.Fields[10].AsString <> '' then
                           begin
                              td_total[n].day:=td_total[n].day+tdinfo[i].shuju/adoquery11.Fields[11].AsFloat;
                              td_total[n].month:=td_total[n].month+tdinfo[i].shuju/adoquery11.Fields[11].AsFloat;
                              td_total[n].year:=td_total[n].year+tdinfo[i].shuju/adoquery11.Fields[11].AsFloat;
                              td_total[n].modify:=true;
                           end;

                        aaa:=format('insert into linshi (td_id,sj,data) values (%s,"%s",%s);',[adoquery11.fields[0].asstring,datetimetostr(tdinfo[i].time),floattostr(tdinfo[i].shuju)]);  //存储
                        jvasqlscript9.Script.Add(aaa);

                        td_shuju[tdinfo[i].tongdao+xx_td[1]]:=tdinfo[i];   //暂存当前值
                        ////
                        if tdinfo[i].tongdao+xx_td[1]=xs_td then   //处理数据显示
                                             begin

                                                xs_data.Add(floattostr(tdinfo[i].shuju));
                                                xs_time.Add(datetimetostr(tdinfo[i].time));
                                                //处理表格显示
                                                for b:=1 to 21 do
                                                   begin
                                                     if xs_data.Count>=21 then
                                                        begin
                                                           stringgrid2.Cells[0,b]:=timetostr(strtodatetime(xs_time.Strings[xs_time.count-22+b]));
                                                           stringgrid2.Cells[1,b]:=xs_data.Strings[xs_time.Count-22+b];
                                                        end
                                                        else
                                                        begin
                                                           if xs_data.Count>(b-1) then
                                                              begin
                                                                 stringgrid2.Cells[0,b]:=timetostr(strtodatetime(xs_time.Strings[b-1]));
                                                                 stringgrid2.Cells[1,b]:=xs_data.Strings[b-1];
                                                              end
                                                              else
                                                              begin
                                                                 stringgrid2.Cells[0,b]:='';
                                                                 stringgrid2.Cells[1,b]:='';
                                                              end;
                                                        end;
                                                   end;
                                                if sx=1 then
                                                if xs_data.Count >= strtoint(edit2.Text) then
                                                   begin
                                                      edit3.Text:=inttostr(xs_data.Count-strtoint(edit2.Text));
                                                      lineseries1.Clear;
                                                      for b:=1 to strtoint(edit2.Text) do
                                                         begin
                                                            lineseries1.Add(strtofloat(xs_data.Strings[strtoint(edit3.Text)+b-1]),xs_time.Strings[strtoint(edit3.Text)+b-1]);
                                                         end;
                                                   end
                                                   else lineseries1.Add(strtofloat(xs_data.Strings[xs_data.count-1]),xs_time.Strings[xs_data.count-1]);
                                                label36.Caption:=inttostr(xs_data.Count);
                                             end;
                        ////
                        if adoquery11.Fields[12].AsString='是' then      //报警处理
                           begin
                              adoquery9.First;
                              while not adoquery9.Eof do
                                 begin
                                    if adoquery9.Fields[1].AsInteger=n then
                                       begin
                                          if adoquery9.Fields[3].AsString='是' then
                                             begin
                                                if tdinfo[i].shuju> adoquery9.Fields[2].AsFloat then
                                                   begin
                                                      if td_warm[n].max=false then
                                                         begin
                                                            td_warm[n].max:=true;
                                                            aaa:=format('insert into warming (td_id,td_name,warming_time,warming_type,memo) values (%s,"%s","%s","%s","%s");',[inttostr(n),adoquery11.fields[1].asstring,datetimetostr(tdinfo[i].time),'最大值超标',('当前值为'+floattostr(tdinfo[i].shuju)+','+'最大警戒值为'+adoquery9.fields[2].asstring)]);
                                                            jvasqlscript9.Script.Add(aaa);
                                                         end;
                                                   end;

                                             end;
                                          if adoquery9.Fields[5].AsString='是' then
                                             begin
                                                if tdinfo[i].shuju < adoquery9.Fields[4].AsFloat then
                                                   begin
                                                      if td_warm[n].min=false then
                                                         begin
                                                            td_warm[n].min:=true;
                                                            aaa:=format('insert into warming (td_id,td_name,warming_time,warming_type,memo) values (%s,"%s","%s","%s","%s");',[inttostr(n),adoquery11.fields[1].asstring,datetimetostr(tdinfo[i].time),'低于最小值',('当前值为'+floattostr(tdinfo[i].shuju)+','+'最小警戒值为'+adoquery9.fields[4].asstring)]);
                                                            jvasqlscript9.Script.Add(aaa);
                                                         end;
                                                   end;
                                             end;
                                          if adoquery9.Fields[8].AsString='是' then
                                             begin
                                                if td_total[n].day > adoquery9.Fields[6].AsFloat then
                                                   begin
                                                      if td_warm[n].day=false then
                                                         begin
                                                            td_warm[n].day:=true;
                                                            aaa:=format('insert into warming (td_id,td_name,warming_time,warming_type,memo) values (%s,"%s","%s","%s","%s");',[inttostr(n),adoquery11.fields[1].asstring,datetimetostr(tdinfo[i].time),'大于日累最大警戒值',('当前日累值为'+floattostr(td_total[n].day)+','+'最大警戒值为'+adoquery9.fields[6].asstring)]);
                                                            jvasqlscript9.Script.Add(aaa);
                                                         end;
                                                   end;
                                             end;
                                          if adoquery9.Fields[11].AsString='是' then
                                             begin
                                                if td_total[n].month > adoquery9.Fields[9].AsFloat then
                                                   begin
                                                      if td_warm[n].month=false then
                                                         begin
                                                            td_warm[n].month:=true;
                                                            aaa:=format('insert into warming (td_id,td_name,warming_time,warming_type,memo) values (%s,"%s","%s","%s","%s");',[inttostr(n),adoquery11.fields[1].asstring,datetimetostr(tdinfo[i].time),'大于月累最大警戒值',('当前月累值为'+floattostr(td_total[n].month)+','+'最大警戒值为'+adoquery9.fields[9].asstring)]);
                                                            jvasqlscript9.Script.Add(aaa);
                                                         end;
                                                   end;
                                             end;
                                          if adoquery9.Fields[14].AsString='是' then
                                             begin
                                                if td_total[n].year > adoquery9.Fields[12].AsFloat then
                                                   begin
                                                      if td_warm[n].year=false then
                                                         begin
                                                            td_warm[n].year:=true;
                                                            aaa:=format('insert into warming (td_id,td_name,warming_time,warming_type,memo) values (%s,"%s","%s","%s","%s");',[inttostr(n),adoquery11.fields[1].asstring,datetimetostr(tdinfo[i].time),'大于年累最大警戒值',('当前年累值为'+floattostr(td_total[n].year)+','+'最大警戒值为'+adoquery9.fields[12].asstring)]);
                                                            jvasqlscript9.Script.Add(aaa);
                                                         end;
                                                   end;
                                             end;

                                           
                                       end;
                                    adoquery9.Next;
                                 end;
                           end;
                     end
                     else
                     begin
                        //离散数据处理
                        adoquery8.First;
                        while not adoquery8.Eof  do
                           begin
                              if (adoquery8.Fields[1].AsInteger =tdinfo[i].tongdao+xx_td[1]) and (strtofloat(adoquery8.Fields[4].asstring)=tdinfo[i].shuju) then
                                 begin
                                    k:=adoquery8.Fields[0].AsInteger;
                                    yx_total[k].modify:=true;
                                    yx_total[k].day:=tdinfo[i].time-td_shuju[tdinfo[i].tongdao+xx_td[1]].time+yx_total[k].day;
                                    yx_total[k].month:=tdinfo[i].time-td_shuju[tdinfo[i].tongdao+xx_td[1]].time+yx_total[k].month;
                                    yx_total[k].year:=tdinfo[i].time-td_shuju[tdinfo[i].tongdao+xx_td[1]].time+yx_total[k].year;
                                    aaa:=format('insert into linshi (td_id,sj,data) values (%s,"%s",%s);',[adoquery11.fields[0].asstring,datetimetostr(tdinfo[i].time),floattostr(tdinfo[i].shuju)]);  //存储
                                    jvasqlscript9.Script.Add(aaa);
                                    td_shuju[tdinfo[i].tongdao+xx_td[1]]:=tdinfo[i];
                                    ////
                                    if tdinfo[i].tongdao+xx_td[1]=xs_td then   //处理数据显示
                                             begin

                                                xs_data.Add(floattostr(tdinfo[i].shuju));
                                                xs_time.Add(datetimetostr(tdinfo[i].time));
                                                 //处理表格显示
                                                for b:=1 to 21 do
                                                   begin
                                                     if xs_data.Count>=21 then
                                                        begin
                                                           stringgrid2.Cells[0,b]:=timetostr(strtodatetime(xs_time.Strings[xs_time.count-22+b]));
                                                           stringgrid2.Cells[1,b]:=xs_data.Strings[xs_time.Count-22+b];
                                  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -