> > îÏ ÐÒÏÂÌÅÍÁ × ÔÏÍ, ÔÏ ×ÓÅ ÜÔÏ ÒÁÂÏÔÁÅÔ ÎÁ áÌØÆÅ ÓÔÁÂÉÌØÎÏ, ÂÅÚ ÐÒÏÂÌÅÍ,
Á ÎÁ
> > âÅÔÔÅ ÏÔËÁÚÙ×ÁÅÔÓÑ. îÁ ×ÙÈÏÄÎÙÅ ÐÏÐÒÏÂÕÀ ÄÅÔÁÌØÎÏ ÐÏÓÍÏÔÒÅÔØ. éÅÝÝÅ ×
> > ÐÒÅÄÙÄÕÝÉÈ ÂÅÔÔÁÈ ÔÏÞÎÏ ÒÕÇÁÌÏÓØ ÎÁ 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