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

190 lines
5.6 KiB
ObjectPascal
Raw Blame History

unit LinkMst;
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
TLinkMst = class(TwItem)
private
{ Private declarations }
FOrdNum: string;
FSiteName: string;
FURL: string;
FDescriptions: string;
FMenuType: string;
FParentName: string;
FIsParent: string;
FParentCode: string;
FDepth: string;
protected
{ Protected declarations }
public
{ Public declarations }
class function xAddSqlMark(velStr: string): string;
class function xGetObjsLinkMstList(AQuery: TFDQuery): TList;
class function xAddSqlDoubleMark(velStr: string): string;
class function LoadFromQuery(AQuery: TFDQuery): TList;
class function xGetIntLinkMstCount(AQuery: TFDQuery): Integer;
class function LoadFromStringsQuery(AQuery: TFDQuery; column: string): TStrings;
class function xGetStrParentCode(AQuery: TFDQuery; pName,pCode: string): string;
published
{ Published declarations }
property OrdNum: string read FOrdNum write FOrdNum;
property SiteName: string read FSiteName write FSiteName;
property URL: string read FURL write FURL;
property Descriptions: string read FDescriptions write FDescriptions;
property MenuType: string read FMenuType write FMenuType;
property ParentName: string read FParentName write FParentName;
property IsParent: string read FIsParent write FIsParent;
property ParentCode: string read FParentCode write FParentCode;
property Depth: string read FDepth write FDepth;
end;
implementation
{ TLinkMst }
class function TLinkMst.LoadFromQuery(AQuery: TFDQuery): TList;
var
curLink: TLinkMst;
begin
Result := TList.Create;
while not AQuery.Eof do begin
curLink := TLinkMst.Create(nil);
curLink.OBID := AQuery.FieldByName('OBID').AsString;
curLink.Name := AQuery.FieldByName('Name').AsString;
curLink.wClassName := AQuery.FieldByName('wClassName').AsString;
curLink.CreateDate := AQuery.FieldByName('CreateDate').AsString;
curLink.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime);
curLink.CreatorID := AQuery.FieldByName('CreatorID').AsString;
curLink.IsValid := AQuery.FieldByName('IsValid').AsString;
curLink.LcStatus := AQuery.FieldByName('LcStatus').AsString;
curLink.OrdNum := AQuery.FieldByName('OrdNum').AsString;
curLink.SiteName := AQuery.FieldByName('SiteName').AsString;
curLink.URL := AQuery.FieldByName('URL').AsString;
curLink.Descriptions := AQuery.FieldByName('Descriptions').AsString;
curLink.MenuType := AQuery.FieldByName('MenuType').AsString;
curLink.ParentName := AQuery.FieldByName('ParentName').AsString;
curLink.IsParent := AQuery.FieldByName('IsParent').AsString;
curLink.ParentCode := AQuery.FieldByName('ParentCode').AsString;
curLink.Depth := AQuery.FieldByName('Depth').AsString;
Result.Add(curLink);
AQuery.Next;
end;
end;
class function TLinkMst.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 TLinkMst.xAddSqlDoubleMark(velStr: String): String;
begin
Result := '';
Result := '"' + velStr + '"';
end;
class function TLinkMst.xAddSqlMark(velStr: string): string;
begin
Result := '';
Result := '''' + velStr + '''';
end;
class function TLinkMst.xGetIntLinkMstCount(AQuery: TFDQuery): Integer;
var
sql, column: string;
resStrs: TStrings;
begin
Result := 0;
sql := 'SELECT COUNT(*) FROM "LinkMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetIntLinkMstCount <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
column := 'COUNT';
resStrs := LoadFromStringsQuery(AQuery, column);
if resStrs.Count > 0 then begin
Result := StrToIntDef(resStrs.Strings[0],1);
Result := Result + 1;
end;
resStrs.Free;
end;
class function TLinkMst.xGetObjsLinkMstList(AQuery: TFDQuery): TList;
var
sql: string;
begin
Result := nil;
sql := 'SELECT * FROM "LinkMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
sql := sql + ' ORDER BY "OrdNum"';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetObjsLinkMstList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromQuery(AQuery);
end;
class function TLinkMst.xGetStrParentCode(AQuery: TFDQuery; pName,
pCode: string): string;
var
sql, colnum: string;
tmpStrs: TStrings;
begin
Result := '';
sql := 'SELECT * FROM "LinkMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(pName)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(pName);
if Length(Trim(pCode)) > 0 then sql := sql + ' AND "ParentCode"=' + xAddSqlMark(pCode);
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetStrParentCode <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
colnum := 'OrdNum';
tmpStrs := LoadFromStringsQuery(AQuery, colnum);
if tmpStrs.Count > 0 then Result := tmpStrs.Strings[0];
tmpStrs.Free;
end;
end.