266 lines
9.0 KiB
ObjectPascal
266 lines
9.0 KiB
ObjectPascal
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.
|
||
|