unit AlarmLog; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, wItem, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Phys.PGDef, FireDAC.VCLUI.Wait, FireDAC.Comp.UI, FireDAC.Phys.PG, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client ; type TAlarmLog = class(TwItem) private { Private declarations } FMachName: string; FMachType: string; FSendMsg: string; FSendMsgDate: string; FSendMsgTime: string; FSendMsgEmp: string; FAlarmDate: string; FAlarmTime: string; FAlarmType: string; FAlarmSeverity: string; FAlarmStatus: string; FSensorName: string; protected { Protected declarations } public { Public declarations } class function xGetObjsAlarmList(AQuery: TFDQuery; status, mtype, mname, stDate, enDate: string): TList; class function xAddSqlMark(velStr: string): string; class function LoadFromQuery(AQuery: TFDQuery): TList; published { Published declarations } property MachName: string read FMachName write FMachName; property MachType: string read FMachType write FMachType; property SendMsg: string read FSendMsg write FSendMsg; property SendMsgDate: string read FSendMsgDate write FSendMsgDate; property SendMsgTime: string read FSendMsgTime write FSendMsgTime; property SendMsgEmp: string read FSendMsgEmp write FSendMsgEmp; property AlarmDate: string read FAlarmDate write FAlarmDate; property AlarmTime: string read FAlarmTime write FAlarmTime; property AlarmType: string read FAlarmType write FAlarmType; property AlarmSeverity: string read FAlarmSeverity write FAlarmSeverity; property AlarmStatus: string read FAlarmStatus write FAlarmStatus; property SensorName: string read FSensorName write FSensorName; end; implementation { TAlarmLog } class function TAlarmLog.LoadFromQuery(AQuery: TFDQuery): TList; var curAlarm: TAlarmLog; begin Result := TList.Create; while not AQuery.Eof do begin curAlarm := TAlarmLog.Create(nil); curAlarm.OBID := AQuery.FieldByName('OBID').AsString; curAlarm.Name := AQuery.FieldByName('Name').AsString; curAlarm.wClassName := AQuery.FieldByName('wClassName').AsString; curAlarm.CreateDate := AQuery.FieldByName('CreateDate').AsString; curAlarm.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime); curAlarm.CreatorID := AQuery.FieldByName('CreatorID').AsString; curAlarm.IsValid := AQuery.FieldByName('IsValid').AsString; curAlarm.LcStatus := AQuery.FieldByName('LcStatus').AsString; curAlarm.MachName := AQuery.FieldByName('MachName').AsString; curAlarm.MachType := AQuery.FieldByName('MachType').AsString; curAlarm.SendMsg := AQuery.FieldByName('SendMsg').AsString; curAlarm.SendMsgDate := AQuery.FieldByName('SendMsgDate').AsString; curAlarm.SendMsgTime := AQuery.FieldByName('SendMsgTime').AsString; curAlarm.SendMsgEmp := AQuery.FieldByName('SendMsgEmp').AsString; curAlarm.AlarmDate := AQuery.FieldByName('AlarmDate').AsString; curAlarm.AlarmTime := AQuery.FieldByName('AlarmTime').AsString; curAlarm.AlarmSeverity := AQuery.FieldByName('AlarmSeverity').AsString; curAlarm.AlarmStatus := AQuery.FieldByName('AlarmStatus').AsString; curAlarm.SensorName := AQuery.FieldByName('SensorName').AsString; Result.Add(curAlarm); AQuery.Next; end; end; class function TAlarmLog.xAddSqlMark(velStr: string): string; begin Result := ''; Result := '''' + velStr + ''''; end; class function TAlarmLog.xGetObjsAlarmList(AQuery: TFDQuery; status, mtype, mname, stDate, enDate: string): TList; var sql: string; begin Result := nil; sql := 'SELECT * FROM "AlarmLog"'; sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t'); if Length(Trim(status)) > 0 then sql := sql + ' AND "AlarmStatus"=' + xAddSqlMark(status); if Length(Trim(mtype)) > 0 then sql := sql + ' AND "MachType"=' + xAddSqlMark(mtype); if Length(Trim(mname)) > 0 then sql := sql + ' AND "MachName"=' + xAddSqlMark(mname); if Length(Trim(stDate)) > 0 then begin // sql := sql + ' AND "AlarmDate"=>' + xAddSqlMark(stDate); // sql := sql + ' AND "AlarmDate"=<' + xAddSqlMark(enDate); sql := sql + ' AND "AlarmDate"::date BETWEEN ' + xAddSqlMark(stDate) + ' AND ' + xAddSqlMark(enDate); end; try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetObjsAlarmList Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; Result := LoadFromQuery(AQuery); end; end.