unit MachProcessData; 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 TMachProcessData = class(TwItem) private { Private declarations } FOrdDate: string; FRawMaterial: string; FMachTemp: string; FHoldTime: string; FPower1: string; FPower2: string; FDensity1: string; FDensity2: string; FDescriptions: string; protected { Protected declarations } public { Public declarations } class function xGetObjsMachProcessData(AQuery: TFDQuery; nameStr, stDate, enDate: string): TList; class function xAddSqlMark(velStr: string): string; class function LoadFromQuery(AQuery: TFDQuery): TList; class function xGetStrsDistinctMachName(AQuery: TFDQuery): TStrings; class function LoadFromStringQuery(AQuery: TFDQuery; column: string): TStrings; published { Published declarations } property OrdDate: string read FOrdDate write FOrdDate; property RawMaterial: string read FRawMaterial write FRawMaterial; property MachTemp: string read FMachTemp write FMachTemp; property HoldTime: string read FHoldTime write FHoldTime; property Power1: string read FPower1 write FPower1; property Power2: string read FPower2 write FPower2; property Density1: string read FDensity1 write FDensity1; property Density2: string read FDensity2 write FDensity2; property Descriptions: string read FDescriptions write FDescriptions; end; implementation { TMachProcessData } class function TMachProcessData.LoadFromQuery(AQuery: TFDQuery): TList; var curProc: TMachProcessData; begin Result := TList.Create; while not AQuery.Eof do begin curProc := TMachProcessData.Create(nil); curProc.OBID := AQuery.FieldByName('OBID').AsString; curProc.Name := AQuery.FieldByName('Name').AsString; curProc.wClassName := AQuery.FieldByName('wClassName').AsString; curProc.CreateDate := AQuery.FieldByName('CreateDate').AsString; curProc.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime); curProc.CreatorID := AQuery.FieldByName('CreatorID').AsString; curProc.IsValid := AQuery.FieldByName('IsValid').AsString; curProc.LcStatus := AQuery.FieldByName('LcStatus').AsString; curProc.OrdDate := AQuery.FieldByName('OrdDate').AsString; curProc.RawMaterial := AQuery.FieldByName('RawMaterial').AsString; curProc.MachTemp := AQuery.FieldByName('MachTemp').AsString; curProc.HoldTime := AQuery.FieldByName('HoldTime').AsString; curProc.Power1 := AQuery.FieldByName('Power1').AsString; curProc.Power2 := AQuery.FieldByName('Power2').AsString; curProc.Density1 := AQuery.FieldByName('Density1').AsString; curProc.Density2 := AQuery.FieldByName('Density2').AsString; curProc.Descriptions := AQuery.FieldByName('Descriptions').AsString; Result.Add(curProc); AQuery.Next; end; end; class function TMachProcessData.LoadFromStringQuery(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 TMachProcessData.xAddSqlMark(velStr: string): string; begin Result := ''; Result := '''' + velStr + ''''; end; class function TMachProcessData.xGetObjsMachProcessData(AQuery: TFDQuery; nameStr, stDate, enDate: string): TList; var sql: string; begin Result := nil; sql := 'SELECT * FROM "MachProcessData"'; sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t'); if Length(Trim(nameStr)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(nameStr); if Length(Trim(stDate)) > 0 then begin sql := sql + ' AND "OrdDate">=' + xAddSqlMark(stDate); sql := sql + ' AND "OrdDate"<=' + xAddSqlMark(enDate); end; sql := sql + ' ORDER BY "OrdDate" DESC, "Name"'; try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetObjsMachProcessData Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; Result := LoadFromQuery(AQuery); end; class function TMachProcessData.xGetStrsDistinctMachName( AQuery: TFDQuery): TStrings; var sql, column: string; begin Result := nil; sql := 'SELECT DISTINCT "Name" FROM "MachProcessData"'; sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t'); try AQuery.Close; AQuery.SQL.Text := sql; AQuery.Open; except on E: Exception do ShowMessage('xGetStrsDistinctMachName Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; column := 'Name'; Result := LoadFromStringQuery(AQuery, column); end; end.