SmartFactory_NEOL/SOURCE/Agent,Kiosk/Lib/base/ProductMst.pas
2026-09-04 14:08:41 +09:00

266 lines
9.0 KiB
ObjectPascal
Raw Blame History

unit ProductMst;
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
TProductMst = class(TwItem)
private
{ Private declarations }
FProdCode: string;
FDescriptions: string;
FMatKind: string;
FMatType: string;
FModel: string;
FInternal: string;
FProdExternal: string;
FThickness: string;
FProdLength: string;
FManufact: string;
FMatItem: string;
FProdSpec: string;
FMatName: string;
FmatList: TList;
protected
{ Protected declarations }
public
{ Public declarations }
class function xAddSqlMark(velStr: string): string;
class function xAddSqlDoubleMark(velStr: String): String;
class function xGetStrSqlProductMstList(AQuery: TFDQuery; codeStr, nameStr: string): TList;
class function LoadFromQuery(AQuery: TFDQuery): TList;
class function LoadFromSingleQuery(AQuery: TFDQuery): TProductMst;
class function xGetStrsGroupByColumn(AQuery: TFDQuery; column: string): TStrings;
class function LoadFromStringsQuery(AQuery: TFDQuery; column: string): TStrings;
class function LoadFromStringQuery(AQuery: TFDQuery; column: string): string;
property matList: TList read FmatList write FmatList;
class function xGetStrMaterialWithSameNameAsMe(AQuery: TFDQuery; prodName: string): string;
class function xGetObjLikeMeName(AQuery: TFDQuery; name: string): TProductMst;
published
{ Published declarations }
property ProdCode: string read FProdCode write FProdCode;
property Descriptions: string read FDescriptions write FDescriptions;
property MatKind: string read FMatKind write FMatKind;
property MatType: string read FMatType write FMatType;
property Model: string read FModel write FModel;
property Internal: string read FInternal write FInternal;
property ProdExternal: string read FProdExternal write FProdExternal;
property Thickness: string read FThickness write FThickness;
property ProdLength: string read FProdLength write FProdLength;
property Manufact: string read FManufact write FManufact;
property MatItem: string read FMatItem write FMatItem;
property ProdSpec: string read FProdSpec write FProdSpec;
property MatName: string read FMatName write FMatName;
end;
implementation
{ TProductMst }
class function TProductMst.LoadFromQuery(AQuery: TFDQuery): TList;
var
curProd: TProductMst;
begin
Result := TList.Create;
while not AQuery.Eof do begin
curProd := TProductMst.Create(nil);
curProd.OBID := AQuery.FieldByName('OBID').AsString;
curProd.Name := AQuery.FieldByName('Name').AsString;
curProd.wClassName := AQuery.FieldByName('wClassName').AsString;
curProd.CreateDate := AQuery.FieldByName('CreateDate').AsString;
curProd.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime);
curProd.CreatorID := AQuery.FieldByName('CreatorID').AsString;
curProd.IsValid := AQuery.FieldByName('IsValid').AsString;
curProd.LcStatus := AQuery.FieldByName('LcStatus').AsString;
curProd.ProdCode := AQuery.FieldByName('ProdCode').AsString;
curProd.Descriptions := AQuery.FieldByName('Descriptions').AsString;
curProd.MatKind := AQuery.FieldByName('MatKind').AsString;
curProd.MatType := AQuery.FieldByName('MatType').AsString;
curProd.Model := AQuery.FieldByName('Model').AsString;
curProd.Internal := AQuery.FieldByName('Internal').AsString;
curProd.ProdExternal := AQuery.FieldByName('ProdExternal').AsString;
curProd.Thickness := AQuery.FieldByName('Thickness').AsString;
curProd.ProdLength := AQuery.FieldByName('ProdLength').AsString;
curProd.Manufact := AQuery.FieldByName('Manufact').AsString;
curProd.MatItem := AQuery.FieldByName('MatItem').AsString;
curProd.ProdSpec := AQuery.FieldByName('ProdSpec').AsString;
curProd.MatName := AQuery.FieldByName('MatName').AsString;
Result.Add(curProd);
AQuery.Next;
end;
end;
class function TProductMst.LoadFromSingleQuery(AQuery: TFDQuery): TProductMst;
begin
Result := TProductMst.Create(nil);
while not AQuery.Eof do begin
Result.OBID := AQuery.FieldByName('OBID').AsString;
Result.Name := AQuery.FieldByName('Name').AsString;
Result.wClassName := AQuery.FieldByName('wClassName').AsString;
Result.CreateDate := AQuery.FieldByName('CreateDate').AsString;
Result.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime);
Result.CreatorID := AQuery.FieldByName('CreatorID').AsString;
Result.IsValid := AQuery.FieldByName('IsValid').AsString;
Result.LcStatus := AQuery.FieldByName('LcStatus').AsString;
Result.ProdCode := AQuery.FieldByName('ProdCode').AsString;
Result.Descriptions := AQuery.FieldByName('Descriptions').AsString;
Result.MatKind := AQuery.FieldByName('MatKind').AsString;
Result.MatType := AQuery.FieldByName('MatType').AsString;
Result.Model := AQuery.FieldByName('Model').AsString;
Result.Internal := AQuery.FieldByName('Internal').AsString;
Result.ProdExternal := AQuery.FieldByName('ProdExternal').AsString;
Result.Thickness := AQuery.FieldByName('Thickness').AsString;
Result.ProdLength := AQuery.FieldByName('ProdLength').AsString;
Result.Manufact := AQuery.FieldByName('Manufact').AsString;
Result.MatItem := AQuery.FieldByName('MatItem').AsString;
Result.ProdSpec := AQuery.FieldByName('ProdSpec').AsString;
Result.MatName := AQuery.FieldByName('MatName').AsString;
AQuery.Next;
end;
end;
class function TProductMst.LoadFromStringQuery(AQuery: TFDQuery;
column: string): string;
var
valStr: string;
begin
Result := '';
while not AQuery.Eof do begin
valStr := AQuery.FieldByName(column).AsString;
Result := valStr;
AQuery.Next;
end;
end;
class function TProductMst.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 TProductMst.xAddSqlDoubleMark(velStr: String): String;
begin
Result := '';
Result := '"' + velStr + '"';
end;
class function TProductMst.xAddSqlMark(velStr: string): string;
begin
Result := '';
Result := '''' + velStr + '''';
end;
class function TProductMst.xGetObjLikeMeName(AQuery: TFDQuery;
name: string): TProductMst;
var
sql: string;
begin
Result := nil;
sql := 'SELECT * FROM "ProductMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(name)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(name);
sql := sql + ' ORDER BY "Name"';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetObjLikeMeName <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromSingleQuery(AQuery);
end;
class function TProductMst.xGetStrMaterialWithSameNameAsMe(AQuery: TFDQuery;
prodName: string): string;
var
sql, column: string;
begin
Result := '';
sql := 'SELECT "MatKind" FROM "ProductMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(prodName)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(prodName);
sql := sql + ' LIMIT 1';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrMaterialWithSameNameAsMe <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
column := 'MatKind';
Result := LoadFromStringQuery(AQuery, column);
end;
class function TProductMst.xGetStrsGroupByColumn(AQuery: TFDQuery; column: string): TStrings;
var
sql: string;
begin
Result := nil;
sql := 'SELECT DISTINCT ' + xAddSqlDoubleMark(column) + ' FROM "ProductMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
//sql := sql + ' ORDER BY "Name"';
sql := sql + ' ORDER BY ' + xAddSqlDoubleMark(column);
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrsGroupByColumn <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromStringsQuery(AQuery, column);
end;
class function TProductMst.xGetStrSqlProductMstList(AQuery: TFDQuery; codeStr,
nameStr: string): TList;
var
sql: string;
begin
Result := nil;
sql := 'SELECT * FROM "ProductMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(codeStr)) > 0 then sql := sql + ' AND "MatKind"=' + xAddSqlMark(codeStr);
if Length(Trim(nameStr)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(nameStr);
sql := sql + ' ORDER BY "Name"';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrSqlProductMstList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromQuery(AQuery);
end;
end.