📄 sys910_02.pas.svn-base
字号:
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 + -