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

📄 u_645_command.pas

📁 此系统完成了单向复费率电能表的抄表以及编程
💻 PAS
📖 第 1 页 / 共 5 页
字号:
                   ' 掩码='''+str6+''','+
                   ' 标识='''+str7+''' '+
                   ' where 命令='''+str1+''' ';
          datam.ADOQ1.Close;
          datam.ADOQ1.SQL.Clear;
          datam.ADOQ1.SQL.Text :=sqlstr;
          datam.ADOQ1.ExecSQL;

          datam.ADOConnection1.CommitTrans;
        except
          datam.ADOConnection1.RollbackTrans;
          MyMsgBox(' 添加"命令"在"命令集"中的过程失败!','系  统  错  误', 0);
          exit;
        end;
      end
      else
      begin
        MyMsgBox(' 该"命令"已经在"命令集"中存在!','系  统  错  误', 0);
        exit;
      end;
    end
    else
    begin
      try
        datam.ADOConnection1.BeginTrans;
        sqlstr :='insert into '+T_name+' (命令,名称,长度,块标志,读写,掩码,标识)'+
                 ' values ('+
                 ' '''+str1+''','+
                 ' '''+str2+''','+
                 ' '''+str3+''','+
                 ' '''+str4+''','+
                 ' '''+str5+''','+
                 ' '''+str6+''','+
                 ' '''+str7+''')';
        datam.ADOQ1.Close;
        datam.ADOQ1.SQL.Clear;
        datam.ADOQ1.SQL.Text :=sqlstr;
        datam.ADOQ1.ExecSQL;

        datam.ADOConnection1.CommitTrans;
      except
        datam.ADOConnection1.RollbackTrans;
        MyMsgBox(' 添加"命令"在"命令集"中的过程失败!','系  统  错  误', 0);
        exit;
      end;

    end;
    Dbgrid_show(T_name);
    f_645.DBGrid1.Refresh;
end;

procedure TF_645.RzEdit3KeyPress(Sender: TObject; var Key: Char);
begin
  case key of
    '0'..'9':;
    chr(8):;
  else
    key:=chr(0);
  end;
end;

procedure TF_645.RzShapeButton2Click(Sender: TObject);
var
  T_name,sqlstr,str:string;
begin
  T_name := trim(rZEDIT1.Text);
  str := trim(DBedit1.Text);
  sqlstr := 'delete from '+T_name+' where 命令= '''+str+''' ';
  if MessageDlg('确认是要删除"'+Rzlabel5.Caption+'"中的['+str+']"命令" 吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    datam.ADOQ1.Close;
    datam.ADOQ1.SQL.Clear;
    datam.ADOQ1.SQL.Text :=sqlstr;
    datam.ADOQ1.ExecSQL;
    Dbgrid_show(T_name);
    f_645.DBGrid1.Refresh;
  end;
end;

procedure TF_645.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  s1,s2:string;
begin
  with TMyCustomDBGrid (Sender) do
  begin
     s1 := DataLink.Fields[6].AsString;
     s2 := DataLink.Fields[4].AsString;
       if s1 = '1'  then
          Canvas.Font.Color:= clRED;            //  .Brush.Color
       if s2 = '1'  then
          Canvas.Font.Color:= clblue;            //  .Brush.Color
    DefaultDrawColumnCell(Rect,DataCol,Column,State);
  end;

end;

procedure TF_645.DBGrid1CellClick(Column: TColumn);
var
   s_field,s_table,sqlstr,s_flag:string;
begin
    s_field := trim(DBedit1.Text);
    s_table := trim(Rzedit1.Text);
    if (s_field <> '') or (s_table <> '') then
    begin
      sqlstr := 'select * from '+s_table+' where 命令='''+s_field+''' ';
      try
        with datam.ADOQ1 do
        begin
          close;
          Sql.Clear;
          Sql.Add(sqlstr);
          Open;

          s_flag := fieldbyname('标识').AsString ;
          if s_flag = '0' then
             begin
            Rzpagecontrol3.ActivePageIndex :=0;
            //Rzcombobox2.Text := trim(s_field);
            end


          ELSE
          BEGIN
            Rzpagecontrol3.ActivePageIndex :=1;    // 自定义命令
            Rzedit8.Text := fieldbyname('命令').AsString ;
            Rzedit9.Text := fieldbyname('名称').AsString ;
            Rzedit10.Text := fieldbyname('长度').AsString ;
            Rzcombobox5.Text := fieldbyname('掩码').AsString ;
            s_flag := fieldbyname('块标志').AsString ;
            if s_flag ='0' then
              Rzcombobox4.ItemIndex := 0
            else
              Rzcombobox4.ItemIndex := 1;

            s_flag := fieldbyname('读写').AsString ;
            if s_flag ='0' then
              Rzcombobox6.ItemIndex := 0
            else
              Rzcombobox6.ItemIndex := 1;
              
          END;
         // showmessage(fieldbyname('命令').AsString);
        end;

      except
        MyMsgBox(' 提取数据失败!','系  统  错  误', 0);
        exit;
      end;

    end;
end;

procedure TF_645.RzRadioGroup1Click(Sender: TObject);
begin

   if RzRadioGroup1.Buttons[0].Checked then
   begin
      Rzedit6.Enabled := true;
      Rzedit6.Clear;
      Rzedit6.SetFocus;
      Rzedit7.Enabled := false;
      Rzedit7.Clear;
      Rzspinedit1.Enabled := false;
      Rzspinedit1.Value :=1;
      Rzcheckbox1.Enabled := true;
      Rzcheckbox1.Checked := false;
      Rzedit12.Enabled := false;;
      Rzedit12.Clear;
   end
   else
   begin
      Rzedit6.Enabled := false;
      Rzedit6.Clear;


      Rzcheckbox1.Checked := false;
      Rzedit12.Enabled := false;;
      Rzedit12.Clear;

      Rzcheckbox1.Enabled := false;

      Rzedit7.Enabled := true;
      Rzedit7.Clear;

      Rzspinedit1.Enabled := true;
      Rzspinedit1.Value :=1;

      Rzedit7.SetFocus;
   end;
end;

procedure TF_645.RzPageControl2Change(Sender: TObject);
var
  sqlstr,str,str1:string;
  i,j,h:integer;

   filename :string;
   k,m:integer;
begin
   case rzpagecontrol2.ActivePageIndex of
    0:
      begin
        Rzedit6.Enabled := true;
        Rzedit6.Clear;
        Rzedit6.SetFocus;
        Rzedit7.Enabled := false;
        Rzedit7.Clear;
        Rzspinedit1.Enabled := false;
        Rzspinedit1.Value :=1;
        f_645.DBEdit1.DataField := '命令';
      end;
    1:
      begin
        checklist1RF;    //抄表
      end;
    2:
      begin
        checklist2RF;    //编程
      end;
   end;
end;

procedure TF_645.RzComboBox7Change(Sender: TObject);
begin
   if Rzcombobox7.ItemIndex =3 then
   begin
      Rzlabel23.Visible := true;
      Rzdatetimeedit3.Visible := true;
      Rzdatetimeedit4.Visible := true;
   end
   else
   begin
      Rzlabel23.Visible := false;
      Rzdatetimeedit3.Visible := false;
      Rzdatetimeedit4.Visible := false;
   end;
end;

procedure TF_645.RzShapeButton3Click(Sender: TObject);
var
  d_1,d_2,sqlstr,bh,s_bh,sql_str,str:string;
  i,len:integer;
begin
  d_1 := formatdatetime('yyyy-mm-dd hh:ss:mm',now);
  d_2 := formatdatetime('yyyy-mm-dd 00:00:00',now);
  if RzRadioGroup1.Buttons[0].Checked then
  begin
     if not Rzcheckbox1.Checked then
     begin
       Rzedit6.Text:= PadLStr(trim(Rzedit6.Text),12,'0');
       bh := trim(Rzedit6.Text);
     sql_str :='select * from '+trim(edit1.Text)+'_bh where 表号='''+bh+'''';
      with datam.ADOQ1 do
      begin
          close;
          sql.Clear;
          sql.Add(sql_str);
          open;
      end;
     if  datam.ADOQ1.RecordCount<>0 then

        begin
           MyMsgBox('库中已经存在该表号数据,请重新录入!','系  统  错  误', 0);
           rzedit6.SetFocus;
           exit;
         end;
       sqlstr := 'insert into '+ trim(edit1.Text)+'_bh (表号,录入日期)'+
                   ' values ('+
                   ' '''+bh+''','+
                   ' '''+d_1+''')';
       try
         with datam.ADOQ1 do
         begin
           datam.ADOConnection1.BeginTrans;
           close;
           sql.Clear;
           sql.Add(sqlstr);
           execsql;
           datam.ADOConnection1.CommitTrans;
         end;
       except
         datam.ADOConnection1.RollbackTrans;
         MyMsgBox(' 插入数据失败!','系  统  错  误', 0);
         exit;
       end;
     end
     else
     begin
       IF trim(Rzedit12.Text) ='' then
       begin
         MyMsgBox(' 请在下面的输入或选择"定位表号",本记录将插入在"定位表号"之后!','系  统  错  误', 0);
         exit;
       end;

       sqlstr :='select * from '+ trim(edit1.Text)+'_bh'+' where 表号='''+trim(Rzedit12.Text)+''' ';
       with datam.ADOQ1 do
       begin
         close;
         sql.Clear;
         sql.Add(sqlstr);
         open;
         str := trim(fieldbyname('录入日期').AsString);

         d_1 := copy(str,1,length(str)-1)+inttostr(strtoint(rightstr(str,1)) +1);
         Rzedit6.Text:= PadLStr(trim(Rzedit6.Text),12,'0');
         bh := trim(Rzedit6.Text);
         sqlstr := 'insert into '+ trim(edit1.Text)+'_bh (表号,录入日期)'+
                     ' values ('+
                     ' '''+bh+''','+
                     ' '''+d_1+''')';
         try
           with datam.ADOQ1 do
           begin
             datam.ADOConnection1.BeginTrans;
             close;
             sql.Clear;
             sql.Add(sqlstr);
             execsql;
             datam.ADOConnection1.CommitTrans;
           end;
         except
           datam.ADOConnection1.RollbackTrans;
           MyMsgBox(' 插入数据失败!','系  统  错  误', 0);
           exit;
         end;
       end;
     end;
  end
  else
  begin
     bh := trim(Rzedit7.Text);
     Rzedit7.Text:= PadLStr(trim(Rzedit7.Text),12,'0');
     len := strtoint(Rzspinedit1.Text);
     for i := 0 to len do
     begin
       s_bh := inttostr(strtoint(bh) + i);
       s_bh := PadLStr(s_bh,12,'0');

       sqlstr := 'insert into '+ trim(edit1.Text)+'_bh (表号,录入日期)'+
                   ' values ('+
                   ' '''+s_bh+''','+
                   ' '''+d_1+''')';
       try
         with datam.ADOQ1 do
         begin
           datam.ADOConnection1.BeginTrans;
           close;
           sql.Clear;
           sql.Add(sqlstr);
           execsql;
           datam.ADOConnection1.CommitTrans;
         end;
       except
         datam.ADOConnection1.RollbackTrans;
         MyMsgBox(' 插入数据失败!','系  统  错  误', 0);
         exit;
       end;
     end;
  end;

  sqlstr := 'select 表号,录入日期 from '+trim(edit1.Text)+'_bh'+' where 录入日期>= '''+d_2+''' order by 录入日期 ' ;
  with datam.ADOQ3 do
  begin
    try
      close;
      sql.Clear;
      sql.Add(sqlstr);
      open;
      f_645.DBEdit2.DataField := '表号';
    except
      MyMsgBox(' 查询数据失败!','系  统  错  误', 0);
      exit;
    end;
  end;

end;

procedure TF_645.RzBitBtn1Click(Sender: TObject);
var
   sqlstr:string;
   d_1,d_2:string;
begin

    if Rzcombobox7.ItemIndex <> 3 then
    begin
      if (trim(rzdatetimeedit1.Text) = '') or
         (trim(rzdatetimeedit2.Text) = '') then
      begin
        MyMsgBox(' 请设定查询数据的"日期时间"范围!','系  统  错  误', 0);
        exit;
      end;

      d_1 :=trim(rzdatetimeedit1.Text)+' '+trim(rzdatetimeedit2.Text);

      if length(d_1) <> 19 then
      begin
        MyMsgBox(' 查询数据的"日期时间"范围设置有误!','系  统  错  误', 0);
        exit;
      end;

      case Rzcombobox7.ItemIndex of
       0: sqlstr := 'select 表号,录入日期 from '+trim(edit1.Text)+'_bh'+' where 录入日期= '''+d_1+''' order by 录入日期' ;
       1: sqlstr := 'select 表号,录入日期 from '+trim(edit1.Text)+'_bh'+' where 录入日期>='''+d_1+''' order by 录入日期';
       2: sqlstr := 'select 表号,录入日期 from '+trim(edit1.Text)+'_bh'+' where 录入日期<='''+d_1+''' order by 录入日期';
      end;

    end
    else
    begin
      if (trim(rzdatetimeedit1.Text) = '') or
         (trim(rzdatetimeedit2.Text) = '') or
         (trim(rzdatetimeedit3.Text) = '') or
         (trim(rzdatetimeedit4.Text) = '') then
      begin
        MyMsgBox(' 请设定查询数据的"日期时间"范围!','系  统  错  误', 0);
        exit;
      end;

      d_1 :=trim(rzdatetimeedit1.Text)+' '+trim(rzdatetimeedit2.Text);
      d_2 :=trim(rzdatetimeedit3.Text)+' '+trim(rzdatetimeedit4.Text);

      if (length(d_1) <> 19) or (length(d_2) <> 19) then
      begin
        MyMsgBox(' 查询数据的"日期时间"范围设置有误!','系  统  错  误', 0);
        exit;
      end;

⌨️ 快捷键说明

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