unit EmpMst; 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 TEmpMst = class(TwItem) private { Private declarations } FOrdCode: string; FPosition: string; FRole: string; FInDate: string; FOutDate: string; FStatus: string; FEmpTelNum: string; FEmpAddress: string; FDescriptions: string; FEmpID: string; FEmpPwd: string; FEngCode: string; FEmgTelNum: string; FRelationship: string; FTeamName: string; FPermissions: string; FIsWebAdmin: string; FEMail: string; FIsAlarm: string; protected { Protected declarations } public { Public declarations } class function LoadFromQuery(AQuery: TFDQuery): TList; class function xGetStrSqlEmpMstList(AQuery: TFDQuery; status, team, empName: string): TList; class function xAddSqlMark(velStr: string): string; class function xGetStrsEmpMstAllNames(AQuery: TFDQuery; column: string): TStrings; class function LoadFromStringsQuery(AQuery: TFDQuery; column: string): TStrings; class function xAddSqlDoubleMark(velStr: String): String; class function xGetStrsDistinctTeamName(AQuery: TFDQuery; column: string): TStrings; class function xGetStrEmpAutoNumber(AQuery: TFDQuery): string; published { Published declarations } property OrdCode: string read FOrdCode write FOrdCode; property Position: string read FPosition write FPosition; property Role: string read FRole write FRole; property InDate: string read FInDate write FInDate; property OutDate: string read FOutDate write FOutDate; property Status: string read FStatus write FStatus; property EmpTelNum: string read FEmpTelNum write FEmpTelNum; property EmpAddress: string read FEmpAddress write FEmpAddress; property Descriptions: string read FDescriptions write FDescriptions; property EmpID: string read FEmpID write FEmpID; property EmpPwd: string read FEmpPwd write FEmpPwd; property EngCode: string read FEngCode write FEngCode; property EmgTelNum: string read FEmgTelNum write FEmgTelNum; property Relationship: string read FRelationship write FRelationship; property TeamName: string read FTeamName write FTeamName; property Permissions: string read FPermissions write FPermissions; property IsWebAdmin: string read FIsWebAdmin write FIsWebAdmin; property EMail: string read FEMail write FEMail; property IsAlarm: string read FIsAlarm write FIsAlarm; end; implementation { TEmpMst } class function TEmpMst.LoadFromQuery(AQuery: TFDQuery): TList; var curEmp: TEmpMst; begin Result := TList.Create; while not AQuery.Eof do begin curEmp := TEmpMst.Create(nil); curEmp.OBID := AQuery.FieldByName('OBID').AsString; curEmp.Name := AQuery.FieldByName('Name').AsString; curEmp.wClassName := AQuery.FieldByName('wClassName').AsString; curEmp.CreateDate := AQuery.FieldByName('CreateDate').AsString; curEmp.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime); curEmp.CreatorID := AQuery.FieldByName('CreatorID').AsString; curEmp.IsValid := AQuery.FieldByName('IsValid').AsString; curEmp.LcStatus := AQuery.FieldByName('LcStatus').AsString; curEmp.OrdCode := AQuery.FieldByName('OrdCode').AsString; curEmp.Position := AQuery.FieldByName('Position').AsString; curEmp.Role := AQuery.FieldByName('Role').AsString; curEmp.InDate := AQuery.FieldByName('InDate').AsString; curEmp.OutDate := AQuery.FieldByName('OutDate').AsString; curEmp.Status := AQuery.FieldByName('Status').AsString; curEmp.EmpTelNum := AQuery.FieldByName('EmpTelNum').AsString; curEmp.EmpAddress := AQuery.FieldByName('EmpAddress').AsString; curEmp.Descriptions := AQuery.FieldByName('Descriptions').AsString; curEmp.EmpID := AQuery.FieldByName('EmpID').AsString; curEmp.EmpPwd := AQuery.FieldByName('EmpPwd').AsString; curEmp.EngCode := AQuery.FieldByName('EngCode').AsString; curEmp.EmgTelNum := AQuery.FieldByName('EmgTelNum').AsString; curEmp.Relationship := AQuery.FieldByName('Relationship').AsString; curEmp.TeamName := AQuery.FieldByName('TeamName').AsString; curEmp.Permissions := AQuery.FieldByName('Permissions').AsString; curEmp.IsWebAdmin := AQuery.FieldByName('IsWebAdmin').AsString; curEmp.EMail := AQuery.FieldByName('EMail').AsString; curEmp.IsAlarm := AQuery.FieldByName('IsAlarm').AsString; Result.Add(curEmp); AQuery.Next; end; end; class function TEmpMst.LoadFromStringsQuery(AQuery: TFDQuery; column: string): TStrings; var valStr: string; begin Result := TStringList.Create; while not AQuery.Eof do begin valStr := AQuery.FieldByName(column).AsString; Result.Add(valStr); AQuery.Next; end; end; class function TEmpMst.xAddSqlDoubleMark(velStr: String): String; begin Result := ''; Result := '"' + velStr + '"'; end; class function TEmpMst.xAddSqlMark(velStr: string): string; begin Result := ''; Result := '''' + velStr + ''''; end; class function TEmpMst.xGetStrEmpAutoNumber(AQuery: TFDQuery): string; var num: Integer; sql, column: string; resStrs: TStrings; begin Result := ''; sql := 'SELECT COUNT(*) FROM "EmpMst"'; try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetStrEmpAutoNumber Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; column := 'COUNT'; resStrs := LoadFromStringsQuery(AQuery, column); if resStrs.Count > 0 then begin num := StrToIntDef(resStrs.Strings[0],1); num := num + 1; Result := IntToStr(num); end; resStrs.Free; end; class function TEmpMst.xGetStrsDistinctTeamName(AQuery: TFDQuery; column: string): TStrings; var sql: string; begin Result := nil; sql := 'SELECT DISTINCT ' + xAddSqlDoubleMark(column) + ' FROM "EmpMst"'; sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t'); try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetStrsDistinctTeamName Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; Result := LoadFromStringsQuery(AQuery, column); end; class function TEmpMst.xGetStrsEmpMstAllNames(AQuery: TFDQuery; column: string): TStrings; var sql: string; begin Result := nil; sql := 'SELECT ' + xAddSqlDoubleMark(column) + ' FROM "EmpMst"'; sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t'); try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetStrsEmpMstAllNames Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; Result := LoadFromStringsQuery(AQuery, column); end; class function TEmpMst.xGetStrSqlEmpMstList(AQuery: TFDQuery; status, team, empName: string): TList; var sql: string; begin Result := nil; sql := 'SELECT * FROM "EmpMst"'; sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t'); sql := sql + ' AND "Permissions"<>' + xAddSqlMark('system'); if Length(Trim(team)) > 0 then sql := sql + ' AND "TeamName"=' + xAddSqlMark(team); if Length(Trim(empName)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(empName); if Length(Trim(status)) > 0 then sql := sql + ' AND "Status"=' + xAddSqlMark(status); sql := sql + ' ORDER BY "OrdCode"'; try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetStrSqlEmpMstList Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; Result := LoadFromQuery(AQuery); end; end.