Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

InterBase



Вернуться к списку функций
 Назначение прав пользователей на таблицу

 Прислал: Dracula (Krivoy Rog) ( 28 января 2003 г. )
©  Dracula
 Описание:
Какое может быть описание? И так все понятно. Кто делает эти формы?

 Зависимости:
uses IBQuery, IBDataBase, SysUtils

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Назначение прав пользователей на таблицу

Какое может быть описание? И так все понятно. Кто делает эти формы?

Зависимости: uses IBQuery,IBDataBase,SysUtils
Автор:       Dracula, dracula@krruda.dp.ua, Krivoy Rog
Copyright:   Dracula
Дата:        28 января 2003 г.
***************************************************************** }

unit IBRights;
  interface
 
  uses IBQuery,IBDataBase,SysUtils;



  type
   TIBUserRights=record
    sel:Boolean;
    ins:Boolean;
    upd:Boolean;
    del:Boolean;
    exe:Boolean;
  end;

function GetUserRights(UserName,Relation:String;IBDb:TIBDataBase):TIBUserRights;
  var
   Rights:TIBUserRights;


  implementation

function GetUserRights(UserName,Relation:String;IBDb:TIBDataBase):TIBUserRights;
   var
    Qr:TIBQuery;
    Tr:TIBTransaction;
  begin
    if Assigned(IBDb) then
   begin
    Tr:=TIBTransaction.Create(nil);
     try
      Tr.DefaultDatabase:=IBDb;
      Qr:=TIBQuery.Create(nil);
      Qr.Database:=IBDb;
      Tr.StartTransaction;
      Qr.Close;
      Qr.Sql.Clear;
      Qr.Sql.Add('select RDB$USER,RDB$PRIVILEGE,RDB$RELATION_NAME '+
               'from RDB$USER_PRIVILEGES '+
               'where upper(RDB$USER)=:AUser '+
               'and upper(RDB$RELATION_NAME)=:ARelation');
      Qr.Prepare;
      Qr.Params.ParamValues['AUser']:=AnsiUpperCase(UserName);
      Qr.Params.ParamValues['ARelation']:=AnsiUpperCase(Relation);
      Qr.Open;
      while not Qr.eof do
     begin
      if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='S'
      then Rights.sel:=true else Rights.sel:=false;
      if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='I'
      then Rights.ins:=true else Rights.ins:=false;
      if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='U'
      then Rights.upd:=true else Rights.upd:=false;
      if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='D'
      then Rights.del:=true else Rights.del:=false;
      if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='X'
      then Rights.exe:=true else Rights.exe:=false;
      if Copy(Trim(Qr.FieldByName('RDB$PRIVILEGE').AsString),1,1)='R'
      then //Rights.ref:=true else Rights.ref:=false;
       begin
        Rights.sel:=true;
        Rights.ins:=true;
        Rights.upd:=true;
        Rights.del:=true;
        Rights.exe:=true;
       end;
      Qr.Next;
     end;
    Qr.Close;
    Tr.Commit;
    Qr.Free;
   finally
    Tr.Free;
   end;
  end;
 Result:=Rights;
end;

end.

 Пример использования:
uses .....,IBRights;
......
var rights:TIBUserRights;
implementation
.....
begin
...
rights:=GetUserRights(DllLogin,NameTable,IBDataBase);
.....
end;


Вернуться к списку функций

Наверх ▲