Вы указали в комментарии, что вы хотите, чтобы несколько пользователей могли видеть разные строки данных в одной и той же таблице или таблицах
Это на самом деле довольно просто: вам просто нужноопределить для каждого пользователя (или типа пользователя) критерии, которые определяют, какие строки данных они должны видеть, а затем написать предложение Where
, которое выбирает только эти строки.Как правило, плохая идея жестко кодировать идентификационные данные пользователей в базе данных и какие данные им разрешено видеть и какие операции им разрешено выполнять с данными.
Трудно привести конкретный пример, не вдаваясь в детали того, что вы хотите сделать, но следующий простой пример может помочь.
Предположим, у вас есть таблица клиентов и один пользователь.предназначен для работы с США, второй пользователь имеет дело с Францией, а третий - с остальным миром.
В вашем приложении вы могли бы иметь перечислимый тип для представления этого:
type
TRegion = (rtUSA, rtFR, rtRoW); // RoW = Rest of the World
Затем вы можете написать функцию для генерации предложения Where
оператора SQL Select, например:
function GetRegionWhereClause(const ARegion : TRegion) : String;
begin
Result := ' Where ';
case ARegion of
rtUSA : Result := Result + ' Customer.Country = ''USA''';
rtFR : Result := Result + ' Customer.Country = ''FR''';
rtRoW : Result := Result + ' not Customer.Country in (''USA'', ''FR'')'
end; { case }
end;
Затем вы можете вызвать GetRegionWhereClause
при создании Sql, чтобы открыть таблицу Customers..
Аналогичным образом определите для каждого типа пользователя, какие операции ему разрешено выполнять с данными (Обновить, Вставить, Удалить).Но реализация этого была бы скорее вопросом выборочного включения и отключения функций графического интерфейса в вашем приложении для выполнения задач в вопросе.