> > îÏ ÐÒÏÂÌÅÍÁ × ÔÏÍ, ÔÏ ×ÓÅ ÜÔÏ ÒÁÂÏÔÁÅÔ ÎÁ áÌØÆÅ ÓÔÁÂÉÌØÎÏ, ÂÅÚ ÐÒÏÂÌÅÍ,
Á ÎÁ
> > âÅÔÔÅ ÏÔËÁÚÙ×ÁÅÔÓÑ. îÁ ×ÙÈÏÄÎÙÅ ÐÏÐÒÏÂÕÀ ÄÅÔÁÌØÎÏ ÐÏÓÍÏÔÒÅÔØ. éÅÝÝÅ ×
> > ÐÒÅÄÙÄÕÝÉÈ ÂÅÔÔÁÈ ÔÏÞÎÏ ÒÕÇÁÌÏÓØ ÎÁ fbclient.dll/
>
>     á Ñ É ÎÅ ÇÏ×ÏÒÀ, ÞÔÏ ÎÅÔ ÐÒÂÌÅÍÙ. îÏ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ, ÇÄÅ ËÏÐÁÔØ,
> ÍÎÅ ÎÕÖÅÎ ÂÏÌÅÅ-ÍÅÎÅÅ ÔÏÞÎÙÊ ÐÏÒÑÄÏË ÄÅÊÓÔ×ÉÊ
> --
> èÏÒÓÕÎ ÷ÌÁÄ


//- ÷ÏÔ ÜÔÏ ÎÁ áÌØÆÁ 2.1 ÒÁÂÏÔÁÌÏ ÎÁ Beta ×ÅÒÓÉÑÈ ×ÙÚÙ×ÁÌÏ ÏÛÉÂËÕ ×
fbclient.dll --------------------
bool __fastcall  TDM::DostupFnYes( int iCodFn, bool bMsg = true )
{
  Screen->Cursor = crHourGlass;
  bool bResult;
  AnsiString sSql = "select * from GET_PRAVA_USER_FN ("+  IntToStr(iCodFn)
+")";
  if(FIBDb->QueryValueAsStr(sSql, 0).ToInt() > 0) bResult=true;
  else
   {
    if( bMsg == true)
    {
     AnsiString sMsg;
     sMsg = "îÅÔ ÐÒÁ× ÄÏÓÔÕÐÁ. ëÏÄ ÆÕÎËÃÉÉ - " + IntToStr(iCodFn) + ".";
     ShowMessage(sMsg.c_str());
    }//if( bMsg == true)
    bResult=false;
   }
  Screen->Cursor = crDefault;
  return bResult;
}

//-  á ×ÏÔ ÉÚÍÅÎÅÎÎÙÊ ×ÁÒÉÁÎÔ ÒÁÂÏÔÁÅÔ É ÎÁ Alfa É Beta
ÒÓÉÑÈ   ---------------------------------
bool __fastcall  TDM::DostupFnYes( int iCodFn, bool bMsg = true )
{
  Screen->Cursor = crHourGlass;
  bool bResult;
  // ÷ÍÅÓÔÏ ×ÙÚÏ×Á SQL ÚÁÐÒÏÓÁ ÞÅÒÅÚ ÆÕÎËÃÉÀ FIBDb->QueryValueAsStr(sSql,
0).ToInt(), Ñ×ÎÏ ×ÙÚÙ×ÁÅÔÓÑ ÐÒÏÃÅÄÕÒÁ ÞÅÒÅÚ TStoreProc
(ProcDostupFnYes)  ----
  // ðÏÓÌÅ ×ÙÚÏ×Á ÐÒÏÃÅÄÕÒÙ ÞÅÒÅÚ TStoreProc ×ÓÅ ÚÁÒÁÂÏÔÁÌÏ.
  // ðÏ ×ÓÅÊ ×ÉÄÉÍÏÓÔÉ ÐÒÏÂÌÅÍÁ × ÐÏÌÕÞÅÎÉÉ ÚÎÁÞÅÎÉÑ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ
ÐÒÏÃÅÄÕÒÏÊ, ÞÅÒÅÚ ÚÁÐÒÏÓ "select * from GET_PRAVA_USER_FN (270)"  ----
  // ðÒÏÃÅÄÕÒÁ ÔÏÞÎÏ ×ÏÚ×ÒÁÝÁÅÔ ÅÄÉÎÓÔ×ÅÎÎÏÅ ÚÎÁÞÅÎÉÅ. ôÅËÓÔ ÐÒÏÃÅÄÕÒÙ
ÐÒÉ×ÅÄÅÎ ÎÉÖÅ.
  ProcDostupFnYes->ParamByName("ID_FN")->Value = iCodFn;
  ProcDostupFnYes->ExecProc();
  ProcDostupFnYes->ParamByName("DOSTUP_YES")->Value;
  if(ProcDostupFnYes->ParamByName("DOSTUP_YES")->Value > 0) bResult=true;
  else
   {
    if( bMsg == true)
    {
     AnsiString sMsg;
     sMsg = "îÅÔ ÐÒÁ× ÄÏÓÔÕÐÁ. ëÏÄ ÆÕÎËÃÉÉ - " + IntToStr(iCodFn) + ".";
     ShowMessage(sMsg.c_str());
    }//if( bMsg == true)
    bResult=false;
   }
  Screen->Cursor = crDefault;
  return bResult;
}
//--------------------------------------------------------------------------
-

// ôÅËÓÔ ÐÒÏÃÅÄÕÒÙ
CREATE PROCEDURE GET_PRAVA_USER_FN (
    ID_FN integer)
returns (
    DOSTUP_YES smallint)
as
declare variable ID bigint;
declare variable ID_USER bigint;
BEGIN
    DOSTUP_YES = 0;
    /* LOGIN_USER ÕÎÉËÁÌØÎÙÊ ËÌÀÞ*/
    select ID from personal where LOGIN_USER = current_user into :id_user;
    /* ID_FNÂ ÕÎÉËÁÌØÎÙÊ ËÌÀÞ*/
    SELECT ID FROM ADMIN_PRAVA_USER where ((ID_FN = :ID_FN) and (ID_USER =
:ID_USER) and (DEL = 1)) INTO :ID;
    if (ID is not null) then
    begin
        IF (EXISTS(SELECT ID FROM ADMIN_USER_TIME_DOSTUP WHERE
((ID_PRAVA_USER = :ID) and (DEL = 1))))
        THEN
         begin
          IF (EXISTS(SELECT ID FROM ADMIN_USER_TIME_DOSTUP WHERE
((ID_PRAVA_USER = :ID) and (DEL = 1) and ( current_time >= BEG_TIME)  and
( current_time <= END_TIME)) ))
              THEN  DOSTUP_YES = 1;
         end
        ELSE DOSTUP_YES = 1;
    end
    SUSPEND;
END



Ответить