SmartFactory_NEOL/SOURCE/Lib/base - 20260114_old/MaterialMst.pas
2026-09-04 14:06:10 +09:00

233 lines
6.8 KiB
ObjectPascal
Raw Blame History

unit MaterialMst;
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
TMaterialMst = class(TwItem)
private
{ Private declarations }
FMatCode: string;
FDescriptions: string;
FMatType: string;
FCustName: string;
FUnitt: string;
FUnitAmo: string;
protected
{ Protected declarations }
public
{ Public declarations }
class function xAddSqlMark(velStr: string): string;
class function xGetStrSqlMaterialMstList(AQuery: TFDQuery; codeStr, nameStr: string): TList;
class function LoadFromQuery(AQuery: TFDQuery): TList;
class function xGetStrMatKindSameMatCode(AQuery: TFDQuery; matCode: string): string;
class function LoadFromStringQuery(AQuery: TFDQuery; column: string): string;
class function xGetObjLikeMeMatCode(AQuery: TFDQuery; matCode: string): TMaterialMst;
class function xGetStrsDistinctMainMaterialName(AQuery: TFDQuery): TStrings;
class function xAddSqlDoubleMark(velStr: String): String;
class function LoadFromStringsQuery(AQuery: TFDQuery; column: string): TStrings;
published
{ Published declarations }
property MatCode: string read FMatCode write FMatCode;
property Descriptions: string read FDescriptions write FDescriptions;
property MatType: string read FMatType write FMatType;
property CustName: string read FCustName write FCustName;
property Unitt: string read FUnitt write FUnitt;
property UnitAmo: string read FUnitAmo write FUnitAmo;
end;
implementation
{ TMaterialMst }
class function TMaterialMst.LoadFromQuery(AQuery: TFDQuery): TList;
var
curMat: TMaterialMst;
begin
Result := TList.Create;
while not AQuery.Eof do begin
curMat := TMaterialMst.Create(nil);
curMat.OBID := AQuery.FieldByName('OBID').AsString;
curMat.Name := AQuery.FieldByName('Name').AsString;
curMat.wClassName := AQuery.FieldByName('wClassName').AsString;
curMat.CreateDate := AQuery.FieldByName('CreateDate').AsString;
curMat.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime);
curMat.CreatorID := AQuery.FieldByName('CreatorID').AsString;
curMat.IsValid := AQuery.FieldByName('IsValid').AsString;
curMat.LcStatus := AQuery.FieldByName('LcStatus').AsString;
curMat.MatCode := AQuery.FieldByName('MatCode').AsString;
curMat.Descriptions := AQuery.FieldByName('Descriptions').AsString;
curMat.MatType := AQuery.FieldByName('MatType').AsString;
curMat.CustName := AQuery.FieldByName('CustName').AsString;
curMat.Unitt := AQuery.FieldByName('Unitt').AsString;
curMat.UnitAmo := AQuery.FieldByName('UnitAmo').AsString;
Result.Add(curMat);
AQuery.Next;
end;
end;
class function TMaterialMst.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 TMaterialMst.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 TMaterialMst.xAddSqlDoubleMark(velStr: String): String;
begin
Result := '';
Result := '"' + velStr + '"';
end;
class function TMaterialMst.xAddSqlMark(velStr: string): string;
begin
Result := '';
Result := '''' + velStr + '''';
end;
class function TMaterialMst.xGetObjLikeMeMatCode(AQuery: TFDQuery;
matCode: string): TMaterialMst;
var
i: Integer;
sql: string;
tmpList: TList;
tmpMat: TMaterialMst;
begin
Result := nil;
sql := 'SELECT * FROM "MaterialMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
sql := sql + ' AND "MatCode" = ' + xAddSqlMark(matCode);
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetObjLikeMeMatCode <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
tmpList := LoadFromQuery(AQuery);
if tmpList.Count > 0 then begin
Result := TMaterialMst(tmpList.Items[0]);
tmpList.Delete(0);
end;
i:=0;
while tmpList.Count > i do begin
tmpMat := TMaterialMst(tmpList.Items[i]);
tmpMat.Free;
tmpList.Delete(i);
end;
tmpList.Free;
end;
class function TMaterialMst.xGetStrMatKindSameMatCode(AQuery: TFDQuery;
matCode: string): string;
var
sql, column: string;
begin
Result := '';
sql := 'SELECT "Name" FROM "MaterialMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(matCode)) > 0 then begin
sql := sql + ' AND "MatCode"=' + xAddSqlMark(matCode);
end;
sql := sql + ' LIMIT 1';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrMatKindSameMatCode <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
column := 'Name';
Result := LoadFromStringQuery(AQuery, column);
end;
class function TMaterialMst.xGetStrsDistinctMainMaterialName(
AQuery: TFDQuery): TStrings;
var
sql, colName: string;
begin
Result := nil;
sql := 'SELECT DISTINCT "Name" FROM "MaterialMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
sql := sql + ' AND ' + xAddSqlDoubleMark('LcStatus') + '=' + xAddSqlMark('MAIN');
sql := sql + ' ORDER BY "Name"';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrsDistinctMainMaterialName <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
colName := 'Name';
Result := LoadFromStringsQuery(AQuery, colName);
end;
class function TMaterialMst.xGetStrSqlMaterialMstList(AQuery: TFDQuery; codeStr,
nameStr: string): TList;
var
sql: string;
begin
Result := nil;
sql := 'SELECT * FROM "MaterialMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(codeStr)) > 0 then begin
codeStr := '%' + codeStr + '%';
sql := sql + ' AND "MatCode" LIKE ' + xAddSqlMark(codeStr);
end;
if Length(Trim(nameStr)) > 0 then begin
nameStr := '%' + nameStr + '%';
sql := sql + ' AND "Name" LIKE ' + xAddSqlMark(nameStr);
end;
sql := sql + ' ORDER BY "LcStatus", "MatCode"';
// sql := sql + ' ORDER BY ("LcStatus" = ''<27>ֿ<EFBFBD><D6BF><EFBFBD>'') DESC, "MatCode"';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrSqlMaterialMstList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromQuery(AQuery);
end;
end.