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

📄 sys910_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
  end;
end;

//选择要设置预警的表名
procedure TSys910_02Form.ActivePage2;
var
  APass:Boolean;
begin
  if trim(edtCond.Text)='' then
  begin
    ShowMsg('UMS10000148');  //预警条件说明不能为空,请重新输入
    edtCond.SetFocus;
    Abort;
  end;
  APass:=False;
  ATableName:='';
  adsTables.First;
  while not adsTables.Eof do
  begin
    if adsTables.FieldByName('FSelected').AsBoolean then
    begin
      ATableName:=ATableName+','+adsTables.FieldByName('FCode').Value;
      APass:=True;
    end;
    adsTables.Next;
  end;
  Delete(ATableName,1,1);
  if not APass then
  begin
    ShowMsg('UMS10000143');  //请单击选择要设置预警的表名
    dbgConditions.SetFocus;
    Abort;
  end;
end;

//设置预警条件
procedure TSys910_02Form.ActivePage3;
var
  S,ASubStr:String;
  I,AStart,AEnd:Integer;
begin
  if trim(RichEdit1.Text)='' then
  begin
    ShowMsg('UMS10000144');  //请设置正确的预警条件
    RichEdit1.SetFocus;
    Abort;
  end;
  S:=RichEdit1.Text;
  AStart:=0;
  AEnd:=0;
  AExpression:=S;
  for I:=1 to Length(S) do
  begin
    if (AStart=0) and (S[I]='[') then AStart:=I
    else if (AEnd=0) and (S[I]=']') then AEnd:=I;
    if (AStart<>0) and (AEnd<>0) then
    begin
      ASubStr:=Copy(S,AStart+1,AEnd-AStart-1);
      if adsFields.Locate('FieldName',ASubStr,[]) then
        ReplaceString(ASubStr,adsFields.FieldByName('Field').Value,AExpression);
      AStart:=0;
      AEnd:=0;
    end;
  end;

  try
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select * from '+ATableName+' where '+AExpression);
    SYSDM.qryQuery.Open;
  except
    ShowMsg(GetDBString('UMS10000144')+#13+AExpression);  //请设置正确的预警条件
    RichEdit1.SetFocus;
    Abort;
  end;
end;

//设置预警接收人
procedure TSys910_02Form.ActivePage4;
begin
  if trim(edtReceive.Text)='' then
  begin
    ShowMsg('UMS10000145');  //接收人说明不能为空,请重新输入
    edtReceive.SetFocus;
    Abort;
  end;
  adsSys500A.First;
  while not adsSys500A.Eof do
  begin
    if (adsSys500AFAlter.Value) or (adsSys500AFEMail.Value) then Exit;
    adsSys500A.Next;
  end;
  ShowMsg('UMS10000146');  //请选择预警信息的接收用户
  dbgUser.SetFocus;
  Abort;
end;

//设置预警信息显示的内容
procedure TSys910_02Form.ActivePage5;
var
  S,ASubStr:String;
  I,AStart,AEnd:Integer;
begin
  if trim(edtShowMsg.Text)='' then
  begin
    ShowMsg('UMS10000147');  //预警信息显示的内容不能为空,请重新输入
    edtShowMsg.SetFocus;
    Abort;
  end;
  S:=edtShowMsg.Text;
  AStart:=0;
  AEnd:=0;
  AMessage:=S;
  for I:=1 to Length(S) do
  begin
    if (AStart=0) and (S[I]='[') then AStart:=I
    else if (AEnd=0) and (S[I]=']') then AEnd:=I;
    if (AStart<>0) and (AEnd<>0) then
    begin
      ASubStr:=Copy(S,AStart+1,AEnd-AStart-1);
      if adsFields.Locate('FieldName',ASubStr,[]) then
        ReplaceString(ASubStr,adsFields.FieldByName('Field').Value,AMessage);
      AStart:=0;
      AEnd:=0;
    end;
  end;
  edtShowMsg.Text:=AMessage;
end;

//完成
procedure TSys910_02Form.SaveAlterData;
begin
  if AAlterNo=0 then
    Sys910_01Form.qrySys910A.Append
  else
    Sys910_01Form.qrySys910A.Edit;
  Sys910_01Form.qrySys910A.FieldByName('S910A_002').Value:=trim(edtAlterName.Text);  //预警名称
  Sys910_01Form.qrySys910A.FieldByName('S910A_003').Value:=trim(edtCond.Text);  //预警条件
  Sys910_01Form.qrySys910A.FieldByName('S910A_004').Value:=trim(edtReceive.Text);  //接收人
  Sys910_01Form.qrySys910A.FieldByName('S910A_005').Value:=ATableName;  //表名
  Sys910_01Form.qrySys910A.FieldByName('S910A_006').Value:='';  //程序编号
  Sys910_01Form.qrySys910A.FieldByName('S910A_007').Value:=trim(edtShowMsg.Text);  //预警信息
  Sys910_01Form.qrySys910A.FieldByName('S910A_008').Value:=AExpression;  //条件表达式
  Sys910_01Form.qrySys910A.Post;
  Sys910_01Form.qrySys910A.Refresh;
  AAlterNo:=Sys910_01Form.qrySys910A.FieldByName('S910A_001').Value;

  qrySys910B.First;
  while not qrySys910B.Eof do qrySys910B.Delete;
  adsSys500A.First;
  while not adsSys500A.Eof do
  begin
    if adsSys500A.FieldByName('FAlter').AsBoolean then
    begin
      qrySys910B.Append;
      qrySys910B.FieldByName('S910B_001').Value:=AAlterNo;  //预警编号
      qrySys910B.FieldByName('S910B_002').Value:=adsSys500A.FieldByName('FUserNo').Value;  //用户编号
      qrySys910B.FieldByName('S910B_003').Value:=adsSys500A.FieldByName('FEMail').Value;  //发送邮件
      qrySys910B.FieldByName('S910B_004').Value:=adsSys500A.FieldByName('FSMS').Value;  //发送短信
      qrySys910B.FieldByName('S910B_005').Value:=adsSys500A.FieldByName('FType').Value;  //发送周期
      case adsSys500A.FieldByName('FType').AsInteger of
        0:qrySys910B.FieldByName('S910B_006').Value:=0;
        1:qrySys910B.FieldByName('S910B_006').Value:=adsSys500A.FieldByName('FTime').AsInteger;
        2:qrySys910B.FieldByName('S910B_006').Value:=adsSys500A.FieldByName('FTime').AsInteger;
        3:qrySys910B.FieldByName('S910B_006').Value:=adsSys500A.FieldByName('FTime').AsInteger;
      end;
      qrySys910B.FieldByName('S910B_007').Value:=adsSys500A.FieldByName('FLangID').Value;  //语言类别
      qrySys910B.Post;
    end;
    adsSys500A.Next;
  end;
  qrySys910B.UpdateBatch;
  ModalResult:=1;
end;

procedure TSys910_02Form.GetFields(ATable:String;ADataSet:TADODataSet);
var
  I,ADataType:Integer;
  AFieldName,ATableNm:string;
begin
  if ATable='' then Exit;
  adsTables.Locate('FCode',ATable,[]);
  ATableNm:=adsTables.FieldByName('FName').AsString;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select * from '+ATable+' where 1<>1');
  SYSDM.qryQuery.Open;
  for I:=0 to SYSDM.qryQuery.FieldCount-1 do
  begin
    AFieldName:=SYSDM.qryQuery.Fields[I].FieldName;
    ADataType:=0;
    case SYSDM.qryQuery.Fields[I].DataType of
      ftSmallint,ftInteger,ftWord:ADataType:=0;
      ftFloat,ftCurrency,ftBCD:ADataType:=1;
      ftString:ADataType:=2;
      ftDate,ftTime,ftDateTime:ADataType:=3;
    end;
    if SYSDM.qryQuery.Fields[I].DataType<>ftAutoInc then
    begin
      ADataSet.Append;
      ADataSet.FieldByName('Field').Value:=ATable+'.'+AFieldName;
      AFieldName:=ATable+copy(AFieldName,Pos('_',AFieldName)+1,6);  //取得字段编号
      ADataSet.FieldByName('FieldName').Value:=ATableNm+'.'+GetDBString(AFieldName);
      ADataSet.FieldByName('FieldType').Value:=ADataType;
      ADataSet.Post;
    end;
  end;
end;

procedure TSys910_02Form.SetFields(ATable:String);
var
  S:String;
  I:Integer;
begin
  adsFields.Close;
  adsFields.FieldDefs.Clear;
  adsFields.FieldDefs.Add('Field',ftString,50);
  adsFields.FieldDefs.Add('FieldName',ftString,50);
  adsFields.FieldDefs.Add('FieldType',ftSmallint,0);
  adsFields.CreateDataSet;
  S:='';
  for I:=1 to Length(ATable) do
  begin
    if ATable[I]<>',' then
      S:=S+ATable[I]
    else
    begin
      GetFields(S,adsFields);
      S:='';
    end;
  end;
  if S<>'' then GetFields(S,adsFields);
end;

procedure TSys910_02Form.bbtnNextClick(Sender: TObject);
begin
//下一步(&N)
  case PageControl1.ActivePageIndex of
    1:ActivePage1;  //设置预警名称
    2:ActivePage2;  //选择要设置预警的表名
    3:ActivePage3;  //设置预警条件
    4:ActivePage4;  //设置预警接收人
    5:ActivePage5;  //设置预警信息显示的内容
    6:SaveAlterData;  //完成
  end;
  PageControl1.ActivePageIndex:=PageControl1.ActivePageIndex+1;
  bbtnBack.Enabled:=PageControl1.ActivePageIndex<>0;
  bbtnNext.Caption:=GetDBString('SYS91002003');  //下一步(&N)

  case PageControl1.ActivePageIndex of
    1://设置预警名称
      begin
        edtAlterName.SetFocus;
      end;
    2://选择要设置预警的表名
      begin
        edtCond.SetFocus;
        dbgConditions.SetFocus;
      end;
    3://设置预警条件
      begin
        SetFields(ATableName);
      end;
    4://设置预警接收人
      begin
        edtReceive.SetFocus;
      end;
    5://设置预警信息显示的内容
      begin
        edtShowMsg.SetFocus;
      end;
    6://完成
      begin
        bbtnNext.Caption:=GetDBString('SYS91002005');  //完成
        Label10.Caption:=GetDBString('SYS91002025')+edtAlterName.Text;  //预警名称:
        Label11.Caption:=GetDBString('SYS91002026')+edtCond.Text;  //预警条件:
        Label12.Caption:=GetDBString('SYS91002027')+edtReceive.Text;  //接收人:
      end;
  end;
end;

procedure TSys910_02Form.bbtnExitClick(Sender: TObject);
begin
//退出(&X)
  Close;
end;

procedure TSys910_02Form.dxDBGrid1DblClick(Sender: TObject);
begin
  edtShowMsg.Text:=edtShowMsg.Text+'['+adsFieldsFieldName.AsString+']';
end;

procedure TSys910_02Form.lbFieldsDblClick(Sender: TObject);
var
  S:String;
begin
  S:='['+adsFields.FieldByName('FieldName').Value+']';
  InsertText(RichEdit1,S);
end;

procedure TSys910_02Form.mmiAllClick(Sender: TObject);
begin
//全选
  if adsSys500A.IsEmpty then Exit;
  adsSys500A.First;
  while not adsSys500A.Eof do
  begin
    adsSys500A.Edit;
    adsSys500A.FieldByName('FAlter').AsBoolean:=True;
    adsSys500A.FieldByName('FEMail').AsBoolean:=True;
    adsSys500A.FieldByName('FSMS').AsBoolean:=True;
    adsSys500A.Post;
    adsSys500A.Next;
  end;
end;

procedure TSys910_02Form.mmiNotSelClick(Sender: TObject);
begin
//反选
  if adsSys500A.IsEmpty then Exit;
  adsSys500A.First;
  while not adsSys500A.Eof do
  begin
    adsSys500A.Edit;
    adsSys500A.FieldByName('FAlter').AsBoolean:=not adsSys500A.FieldByName('FAlter').AsBoolean;
    adsSys500A.FieldByName('FEMail').AsBoolean:=not adsSys500A.FieldByName('FEMail').AsBoolean;
    adsSys500A.FieldByName('FSMS').AsBoolean:=not adsSys500A.FieldByName('FSMS').AsBoolean;
    adsSys500A.Post;
    adsSys500A.Next;
  end;
end;

procedure TSys910_02Form.dbgConditionsKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=#32 then  //vk_space
  begin
    if adsTables.IsEmpty then Exit;
    adsTables.Edit;
    adsTables.FieldByName('FSelected').AsBoolean:=not adsTables.FieldByName('FSelected').AsBoolean;
    adsTables.Post;
  end;
end;

procedure TSys910_02Form.dbgConditionsMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if dbgConditions.GetColumnAt(X,Y)=nil then Exit;
  if dbgConditions.GetColumnAt(X,Y).Field.FieldName='FSelected' then
  begin
    if adsTables.IsEmpty then Exit;
    adsTables.Edit;
    adsTables.FieldByName('FSelected').AsBoolean:=not adsTables.FieldByName('FSelected').AsBoolean;
    adsTables.Post;
  end;
end;

procedure TSys910_02Form.adsSys500AFAlterChange(Sender: TField);
begin
  if not adsSys500A.FieldByName('FAlter').AsBoolean then
  begin
    adsSys500A.FieldByName('FEMail').AsBoolean:=False;
    adsSys500A.FieldByName('FSMS').AsBoolean:=False;
  end;
end;

procedure TSys910_02Form.adsSys500AFEMailChange(Sender: TField);
begin
  if adsSys500A.FieldByName('FEMail').AsBoolean then
  begin
    adsSys500A.FieldByName('FAlter').AsBoolean:=True;
  end;
end;

procedure TSys910_02Form.adsSys500AFSMSChange(Sender: TField);
begin
  if adsSys500A.FieldByName('FSMS').AsBoolean then
  begin
    adsSys500A.FieldByName('FAlter').AsBoolean:=True;
  end;
end;

procedure TSys910_02Form.edtTimeCustomDlg(Sender: TObject);
begin
  Sys910_03Form:=TSys910_03Form.Create(Application);
  Sys910_03Form.OpenData(adsSys500AFUserName.AsString);
  Sys910_03Form.ShowModal;
end;

end.

⌨️ 快捷键说明

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