190 lines
5.6 KiB
ObjectPascal
190 lines
5.6 KiB
ObjectPascal
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.
|
||
|