![]() |
|
كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ (/showthread.php?tid=6137) |
كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - ibrahimkira - 30-04-2014 السلام عليكم ورحمة الله تعالى و بركاته كيف اعمل برنامج multi-user 'اي صلاحيات المستخدمين ' بواسطة قاعدة بيانات MS Access و شكرا مقدما
كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - cleversa - 04-05-2014 ﻻيمكن عمل عدة مستخدمين للاكسس يمكنك عمل مشاركة فقط ويمكنك الرجوع لموقع مايكروسوفت لمعرفة طرق المشاركة لقاعدة بيانات الاكسس اما افضل واسهل قاعدة بيانات لعمل عدة مستخدمين فهي ابسليوت داتا بيس كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - Lam.Abdeldjalil - 09-05-2014 السلام عليكم يمكن عمل برنامج متعدد المستخدمين للاكسس بطريقتين الأولى التي ذكرها الأخ cleversa ( لا ينصح بها عند كثرة المستخدمين بل عدد المستخدين محدود بـ10 على ما أظن) الثانية صعبة بعض الشيئ برنامج متعدد الطبقات (طبقة البيانات - طبقة العمليات 'المنطق'-طبقة العرض'برنامج العميل') اما افضل واسهل قاعدة بيانات لعمل عدة مستخدمين فهي ابسليوت داتا بيس أسهل ربما ، أفضل من كل المحركات الموجودة لا أعتقد ( أفضل من أي جانب ؟ ) كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - ibrahimkira - 28-05-2014 شكرا لك اخي cleversa انا اصبحت استخدم ابسليوت داتا بيس لكن كيف اعطاء صلاحيات مثل : مدير . مستخدم 1.. مستخدم2... تعدد المستخدمين فيها على حسب ما اطلعت و فهمت هو تعدد المستخدمين للبرنامج في نفس الوقت على العموم شكرا لك شكرا لك اخي Lam.Abdeldjalil ....حاليا استعمل ابسليوت داتا بيس لكن قصدت تعدد المستخدمين من حيث الصلاحيات كما ذكرت سابقا ... لاني في صدد عمل برنامج يستخدمه الكثير من الاشخاص على نفس الجهاز و لذلك ستتفاوت صلاحياتهم في الدخول له . لقد اطلعت على الامثلة المرفقة مع القاعدة لكن لم اجد ضالتي بعد ... و شكرا مسبقا
كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - لؤي - 29-05-2014 ibrahimkira كتب :. لقد اطلعت على الامثلة المرفقة مع القاعدة لكن لم اجد ضالتي بعد ... و شكرا مسبقا :d السلام عليكم لما لا تعمل هذا برمجيا حيث تدرج قائمة المستخدمين في جدول و عند كل ولوج تتحقق من المستخدم برمجيا وتمنحه صلاحيات التي تودها أو تقسم مستخديك إلى مجموعات و تمنح المجموعة الصلاحيات برمجيا .... كيف اعمل برنامج multi-user 'صلاحيات المستخدمين' بواسطة قاعدة بيانات؟ - Najy Ibraheem - 30-05-2014 السلام عليكم... أعتقد أن أفضل طريقة هي استعمال حقل للصلاحيات (في جدول المستخدمين) و يكون نوع الحقل مفكرة أو مذكرة (Memo). ثم استعمال الدوال التالية لمعالجة الصلاحيات. بهذه الطريقة لن تكون مقيداً بعدد محدود من الصلاحيات، و يمكنك أن تزيد بعد ذلك في الصلاحيات دون الحاجة إلى تعديل الجدول في قاعدة البيانات. أ. نفرض أن جول المستخدمين اسمه Users و يتكون من الحقول التالية: 1. UserID 2. UserName 3. Password 4. Authorities الصلاحيات ب. في القسم interface لكود النافذة الرئيسية أو unit عامة قم بتعريف الصلاحيات كثوابت مع إعطائها قيماً متسلسلة ابتداءً من الواحد. مثلاً: كود : const
AUTH_ADD_NEW = 1; // إضافة بيانات
AUTH_MODIFY = 2; // تعديل بيانات
AUTH_DELETE = 3; // حذف بيانات
AUTH_PRINT_INVOICE = 4; // طباعة فاتورة
AUTH_PRINT_SALES_REPORT = 5; // طباعة تقرير المبيعات
AUTH_BACKUP = 6; // نسخ احتياطي
AUTH_RESTORE = 7; // استعادة بيانات
// إلخج. قم بتعريف متغير يمثل صلاحيات المستخدم الذي قام بتسجيل الدخول، مثلاً: كود : var
UserAuths: string;*** و طبعاً ستضبط قيمة هذا المتغير عند تسجيل الدخول حسب ما هو محفوظ في سجل المستخدم في قاعدة البيانات. د. ضع التصريحات التالية في القسم interface: كود : procedure GiveAuthority(var Authorities: string; Index: Integer);
procedure DeleteAuthority(var Authorities: string; AuthCount, Index: Integer);
procedure GiveAllAuthorities(var Authorities: string);
procedure DeleteAllAuthorities(var Authorities: string);
function UserHasAuthority(Authorities: string; Index: Integer): Boolean;هـ. في القسم implementation ضع تعريفات الإجراءات و الدوال السابقة: كود : procedure GiveAuthority(var Authorities: string; Index: Integer);
var
Auths: string;
AuthLen: Integer;
begin
if Index < 1 then
Exit;
Auths := UpperCase(Trim(Authorities));
if Auths = 'A' then
Exit
else if Auths = 'N' then
Auths := '';
AuthLen := Length(Auths);
if Index <= AuthLen then
Auths := StuffString(Auths, Index, 1, 'T')
else
Auths := Auths + StringOfChar('F', Index - AuthLen - 1) + 'T';
if Pos('F', Auths) = 0 then
Authorities := 'A'
else
Authorities := Auths;
end;
procedure DeleteAuthority(var Authorities: string; AuthCount, Index: Integer);
var
Auths: string;
AuthLen: Integer;
begin
if Index < 1 then
Exit;
Auths := UpperCase(Trim(Authorities));
if Auths = 'N' then
Exit
else if Auths = 'A' then
Auths := StringOfChar('T', AuthCount);
AuthLen := Length(Auths);
if Index <= AuthLen Then
Auths := StuffString(Auths, Index, 1, 'F')
else
Auths := Auths + StringOfChar('F', Index - AuthLen - 1) + 'F';
if Pos('T', Auths) = 0 then
Authorities := 'N'
else
Authorities := Auths;
end;
procedure GiveAllAuthorities(var Authorities: string);
begin
Authorities := 'A';
end;
procedure DeleteAllAuthorities(var Authorities: string);
begin
Authorities := 'N';
end;
function UserHasAuthority(Authorities: string; Index: Integer): Boolean;
var
Auths: string;
AuthLen: Integer;
begin
if Index < 1 then
Result := False
else begin
Auths := UpperCase(Trim(Authorities));
AuthLen := Length(Auths);
if Auths = '' then
Result := False
else if Auths = 'N' then
Result := False
else if Auths = 'A' then
Result := True
else if Index > AuthLen then
Result := False
else if Copy(Auths, Index, 1) = 'T' then
Result := True
else
Result := False;
end;
end;*** في الأكواد السابقة: الصلاحيات يمكن أن تكون: - A تشير إلى All أي لديه كل الصلاحيات. - N تشير إلى None أي ليس لديه أية صلاحيات. - سلسلة من حروف T و F حيث مث الـ T و جود الصلاحية، و تمثل الـ F عدم وجود الصلاحية. *** و الدوال تعمل كالتالي: * الإجراء GiveAuthority لمنح المستخدم إحدى الصلاحيات: كود : GiveAuthority(UserAuths, AUTH_PRINT_SALES_REPORT);* الإجراء DeleteAuthority لسحب إحدى الصلاحيات: كود : DeleteAuthority(UserAuths, 20, AUTH_PRINT_SALES_REPORT);
// حيث 20 - مثلاً - عدد الصلاحيات في برنامجك* الإجراء GiveAllAuthorities: لمنح المستخدم كافة الصلاحيات: كود : GiveAllAuthorities(UserAuths)* الإجراء DeleteAllAuthorities: لإزالة كافة الصلاحيات: كود : DeleteAllAuthorities(UserAuths)* الدالة UserHasAuthority لمعرفة ما إذا كان المستخدم يملك إحدى الصلاحيات أم لا. هذه الدالة تعيد True أو False: كود : if UserHasAuthority(UserAuths, AUTH_BACKUP) then begin
// ...
// إجراءات النسخ الاحتياطي
// ...
end
else
ShowMessage('ليس من صلاحياتك إجراء النسخ الاحتياطي');نرجو الاستفادة و السلام. |