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 Äõ¸® ½ÇÇà ¿À·ù: ' + 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 Äõ¸® ½ÇÇà ¿À·ù: ' + 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 Äõ¸® ½ÇÇà ¿À·ù: ' + E.Message); end; colnum := 'OrdNum'; tmpStrs := LoadFromStringsQuery(AQuery, colnum); if tmpStrs.Count > 0 then Result := tmpStrs.Strings[0]; tmpStrs.Free; end; end.