> > //- ÷ÏÔ ÜÔÏ ÎÁ áÌØÆÁ 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;
>
> þÔÏ ×ÎÕÔÒÉ QueryValueAsStr ?
üÔÏÔ ×ÏÐÒÏÓ ÌÕÞÛÅ ÁÄÒÅÓÏ×ÁÔØ [EMAIL PROTECTED]
QueryValueAsStr - ÜÔÏ ÍÅÔÏÄ ËÏÍÐÏÎÅÎÔÁ TFIBDatabase.
÷ ÉÓÈÏÄÎÉËÁÈ FibPlus ÏÎ ×ÙÇÌÑÄÉÔ ÔÁË.
function TFIBDatabase.QueryValueAsStr(const aSQL:
string;FieldNo:integer):string;
var
v: Variant;
begin
v:=QueryValue(aSQL,FieldNo);
if VarIsNull(v) then
Result:='Null'
else
Result:=VarAsType(v,varString)
end;
function TFIBDatabase.QueryValue(const aSQL:
string;FieldNo:integer;aTransaction:TFIBTransaction=nil):Variant;
begin
Result := InternalQueryValue(aSQL,FieldNo, [varEmpty],aTransaction);
end;
function TFIBDatabase.InternalQueryValue(const aSQL: string;FieldNo:integer;
ParamValues:array of variant; aTransaction:TFIBTransaction
):Variant;
var Query: TFIBQuery;
i :integer;
c :integer;
begin
Result := False;
if Assigned(aTransaction) then
Query :=GetQueryForUse(aTransaction,aSQL)
else
Query :=GetQueryForUse(vInternalTransaction,aSQL);
with Query.Params do
if High(ParamValues)<Count-1 then
c:=High(ParamValues)
else
c:=Count-1;
with Query do
try
if not Transaction.Active then
Transaction.StartTransaction;
try
for i:=0 to c do
if not VarIsEmpty(ParamValues[i]) then
Params[i].Value:=ParamValues[i];
ExecQuery;
if (Current.Count>0) then
if (FieldNo>=0) then
begin
if Fields[FieldNo].SQLType = SQL_BLOB then
Result := Fields[FieldNo].AsString
else
Result := Fields[FieldNo].Value
end
else
begin
c:= Pred(Current.Count);
Result:=VarArrayCreate([0,c],varVariant);
for i:=0 to c do
if Fields[i].SQLType = SQL_BLOB then
Result[i] := Fields[i].AsString
else
Result[i] := Fields[i].Value
end;
except
if Transaction.Active then
Transaction.RollBack;
raise;
end
finally
if Transaction.InTransaction and (aTransaction=nil) then
Transaction.Commit;
if c<0 then
Free
else
FreeQueryForUse(Query);
end;
end;