請問高手這是什么算法?
S海鸥 2003-08-19 05:34:03 GetCurFiscalYear(sFYstart, sFYend);
procedure GetCurFiscalYear(var sDateStart, sDateEnd: string);
var
qryTemp: TQuery; sNow: string;
nNowYr, nNowMon, nNowDay, nStartYr, nStartMon, nStartDay, nEndYr, nEndMon, nEndDay: Integer;
begin
sNow := GetFieldDataFromTable('to_char(sysdate, ''YYYYMMDD'')', 'syspar');
nNowYr := StrToInt(Copy(sNow, 1, 4)); // Copy(S; Index, Count: Integer): string
nNowMon := StrToInt(Copy(sNow, 5, 2));
nNowDay := StrToInt(Copy(sNow, 7, 2));
qryTemp := TQuery.Create(nil);
qryTemp.Databasename := OPS_DATABASE;
with qryTemp, qryTemp.SQL do
try
Close;
Clear;
Add('select FYSTARTMON, FYSTARTDAY, FYENDMON, FYENDDAY');
Add('from syspar');
Open;
nStartMon := FieldByName('FYSTARTMON').AsInteger;
nStartDay := FieldByName('FYSTARTDAY').AsInteger;
nEndMon := FieldByName('FYENDMON').AsInteger;
nEndDay := FieldByName('FYENDDAY').AsInteger;
Close;
finally
qryTemp.free; // Free qryTemp Instance
end;
if (nNowMon > nStartMon) or ((nNowMon = nStartMon) and (nNowDay >= nStartDay)) then
nStartYr := nNowYr
else
nStartYr := nNowYr - 1;
if (nStartMon = 1) and (nStartDay = 1) then
nEndYr := nStartYr
else
nEndYr := nStartYr + 1;
sDateStart := YMD2DateStr(nStartYr, nStartMon, nStartDay, OPS_DATEFORMAT);
sDateEnd := YMD2DateStr(nEndYr, nEndMon, nEndDay, OPS_DATEFORMAT);
end;
----------------------------------------------------------
if (nNowMon > nStartMon) or ((nNowMon = nStartMon) and (nNowDay >= nStartDay)) then
nStartYr := nNowYr
else
nStartYr := nNowYr - 1;
if (nStartMon = 1) and (nStartDay = 1) then
nEndYr := nStartYr
else
nEndYr := nStartYr + 1;
-------------------------------------------------------
請問﹕
上面這段代碼 起什么作用或是一個什么算法?
其中 FYSTARTMON, FYSTARTDAY, FYENDMON, FYENDDAY 字段的值分別為:
4, 1, 3, 31