الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الصلاحيات و المستخدمين في برنامجك

رائج
بدأه nasser50001 في 3 يوليو 2005 · 221 رد · 74,376 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#101

بارك الله فيك اخى ناصر على هذا الابداع والتميز وجعله الله فى ميزان حسناتك

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#102

ما شاء الله أخي nasser مجهود أكثر من رائع ... إن شاء الله فى ميزان حسناتك

و لكن أخي أريد أن استوضح منك على شئ

أنا كنت أعمل بالأكسيس و انتقلت قريباً إلى الsql server

ماذا يحث اذا لم استخدم حقوق المستخدمين من داخل الsql server وعن طريق برنامجي vb قمت بكامل التحكم للمستخدمين

ماذا سيحدث؟؟؟؟؟؟؟؟؟

أرجوا منك الرد لأن الموضوع مهم جداً لى

سبحان الله و بحمده سبحان الله العظيم

أبو كريم و مازن و نور

vb.net - c# - asp.net - oracle - sql server

manager@tm-center.com

00966508268649

#103

مشكوووور لجميع الأخوة الأفاضل على الردود ولكم شكري وتقديري

أخي الفاضل egyman

بالنسبة للتعامل مع sql server من دون استخدام حقوقو المستخدمين فهذا لا يصلح أبدا

لماذا لأنك بالفعل تستخدم حقوق المستخدم sa عند الإتصال بقاعدة البيانات والتعامل معها لذلك يجب استخدام حقوق المستخدم قبل الإتصال بقاعدة البيامنات وينصح دائما تغيير كلمة المرور الخاصة بالحساب sa حتى يتم التحكم بصورة كاملة بالبرنامج

وعند الدخول باسم مستخدم آخر ستحتاج الى تغيير رسائل النظام التي ستصدر مثل لو انك دخلت باسم مستخدم ليس له صلاحية التعديل فستجد رسالة بأنه ليس لك صلاحية التعديل وهي بالإنجليزية يجب تغييرها الى سرالة بسيطة موجهة للمستخدم فلذلك يجب معرفة صلاحيات كل مستخدم وسأتعرض لذلك إن شاء الله في الدروس القادمة بإذن الله

هذا رد على ما فهمته من سؤالك وإن كان هناك استيضاح آخر انا تحت أمرك

تحياتي لكم

اخوكم ناصر

#104

طرق الاتصال بقاعدة البيانات SQL SERVER من خلال الفيجوال بيسك

أولا : عن طريق الكود

حيث يتم استخدام الكائن ADO ومزودات الإتصال بقاعدة البيانات حيث يمكنك استخدام كائن الإتصال SQLOLEDB الجديد وكذلك يمكنك استخدام الكائن MSDASQL القديم

1 - استخدام الكائن SQLOLEDB

ملاحظات عند استخدام الكائن SQLOLEDB

- يتم استخدام الخاصية Initial catalog للتعبير عن قاعدة البيانات المراد استخدامها

- يتم استخدام الخاصية Data Source لتحديد اسم خادم قاعدة البيبانات المراد الإتصال به

- نستخدم الخاصية Integrated Security لتحديد التراخيص المستخدمة فإذا أخذت القيمة SSPI فيعني ذلك استخدام تراخيص الويندوز windowes authentication

وإذا تم استخدام اسم المستخدم user ID وكلمة المرور للمستخدم password فهذا يعني اننا نستخدم تراخيص SQL SERVER

مثال على استخدام SQLOLEDB

dim cnn as new adodb
cnn.open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=yourdatabase;Data Source=yourServerName;"

شرح جملة الإتصال

- يتم تعريف كائن الإتصال بقاعدة البياناتcnn ( وهنا يجب تحديد كائنات microsoft ActiveX data oblect) في مرجع البرنامج

2 - هذه الجملة تستخدم تراخيص وصول الخاصة بالويندوز nt بمعنى ان مستخدمي الشبكة يمكنهم الوصول الى sql server باستخدام مستخدم الويندوز فقط من دون استخدام اسم مستخدم وكلمة مرور خاصة لكل مستخدم

على سبيل المثال

إذا كان خادم قاعدة البيانات على جهاز داخل الشبكة باسم nasser وانت تريد الوصول الى الخادم من خلال جهاز اسمة ahmed فيمكن لمسؤول الجهاز nassser عمل حساب لك في الويندوز وبمجرد الدخول الى جهازه بهذا الحساب يمكنك الوصول الى خادم قاعدة البيانات ويكون لك الصلاحيات الممنوحة لك من المسؤول

وتم شرح بقية الجملة في الملاحظات بالأعلى

طريقة أخري للإتصال وتستخدم في حالة تعبئة بيانات الإتصال من خلال مربعات نصوص

Dim cn As New ADODB.Connection
Dim ServerName As String, DatabaseName As String, _
   UserName As String, Password As String

ServerName = text1.Text
DatabaseName = text2.Text
UserName = text3.Text
Password = text4.Text

cnn.Provider = "sqloledb"

cnn.Properties("Data Source").Value = ServerName
cnn.Properties("Initial Catalog").Value = DatabaseName
If option1.Value = True Then
    cnn.Properties("Integrated Security").Value = "SSPI"
Else
    cnn.Properties("User ID").Value = UserName
    cnn.Properties("Password").Value = Password
End If

cnn.Open

2 - استخدام الكائن MSDASQL

ملاحظات عند استخدام الكائن MSDASQL وهو كائن اقدم من الكائن السابق

- يتم استخدام الخاصية Initial catalog أو الجملة DATABASE للتعبير عن قاعدة البيانات المراد استخدامها

- يتم استخدام الخاصية Data Source أو الكلمة SERVER لتحديد اسم خادم قاعدة البيبانات المراد الإتصال به

- نستخدم الخاصيةTRUSTED TIMOUT لتحديد التراخيص المستخدمة فإذا أخذت القيمة YESفيعني ذلك استخدام تراخيص الويندوز windowes authentication

وإذا تم استخدام اسم المستخدم user ID أو UID وكلمة المرور للمستخدم PWD أو password فهذا يعني اننا نستخدم تراخيص SQL SERVER

مثال على استخدام MSDASQL

Dim cn As New ADODB.Connection
Dim Str As String

cnn.Provider = "sqloledb"

Str = "Server=MyServer;Database=your datbase;Trusted_Connection=yes"
cnn.Open Str

أو بالشكل التالي

Dim cnn As New ADODB.Connection

cnn.ConnectionTimeout = 100
cnn.Open "MyDataSource", "sa", "MyPassword"
أو
' cnn.Open "DSN=DataSourceName;UID=sa;PWD=Password;"

cnn.Close

هذه طرق الإتصال مع قاعدة البيانات SQL SERVER وسارفق مثال الإتصال قريبا

مع تحيات nasser5001 (ناصر) وبنت اليمن

الفريق العربي للبرمجة

تم تعديل هذه المشاركة بواسطة nasser50001 في 29 أغسطس 2005 في 08:48

#105

بارك الله فيك أخ ناصر وأنتي أختي بنت اليمن

بارك الله فيكما ووفقكما كنا في حاجة ماسه لهذه الدروس ولكن نتمنى أن تعطونا فكرة عن كيفية عمل وتحديد مسار قاعدة البيانات للبرنامج حين تنصيبه على جهاز آخر وعملية الرجستر وجزاكم الله عظيم الجزاء

أخوكم الجوهري

ولا تطيلو علينا فنحن في أنتظار دائم

#106

مشكووور أخي aljwhary

ولكن سؤالك غير واضح ... ارجو التوضيح أكثر

تحياتي لك

اخوك ناصر

#107

مستنيينك على أحر من الجمر يامهندس ناصر

نفع الله بعلمك كل المبرمجين العرب

شاكرين مهللين

وجزاكم الله خيرا

#108

السلام عليكم . . .

اخى ناصر بكرر شكرى على هذا الشرح الرائع . . .

تقبل تحياتى ،،،

KHALED_HELAL

#109

جزاكم الله خيرا اخواني الأعزاء على المرور والتعليق

تحياتي لكم

اخوكم ناصر

#110

هذه بعض التوضيحات عن عملية تراخيص الدخول لخادم sql server

02_09_05_11_05_45_1125727545_.JPG

02_09_05_11_07_33_11257276531.JPG

ومرفق مثال عن عملية الإتصال بقاعدة البيانات بالطرق المشروحة سابقا

تحياتي لكم

اخوكم ناصر

sql conn.rar

#111

شكرا كثير على هذه الدروس المفيدة و الممتعة حقا

و جزاك الله كل خير على هذا المجهود

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#112

كائن إدارة قاعدة بيانات SQL SERVER والذي يسمى SQLDMO

وهو كائن رائع يمكنك من إجراء جميع العمليات على خادم قاعدة البيانات من خلال برنامج الفيجوال بيسك الذي تعمل عليه

ولكي تتعامل مع هذا الكائن يجب على الأقل أن يكون مثبت عندك SQL SERVER أو أدوات العميل من SQL SERVER حتى تستطيع التعامل مع هذا الكائن الرهيب

أولا : تعريف الكائن في مرجع البرنامج

من قائمة PROJECT اختار REFRANCES ثم اختار الكائن

MICROSOFT SQLDMO OBJECT LIBARARY

وبهذا يكون تم اختيار الكائن الذي سنتعامل معه وهي خطوة أساسية لبد العمل

ثانيا : الاتصال بالخادم SQL SERVER باستخدام الكائن SQLDMO

وهنا سنكتب كود الاتصال ثم نقوم بشرح الكود بالتفصيل

وهنا ضع ثلاث مربعات نصوص وسمها كالتالي txtServer ، txtLoginId ، txtPwd

وزري اختيار سمها option1,option2 وعناوينها كالتالي windows authentication و sql server authentication وأداة عنوان LABEL4 لإظهار رسائل الخطأ أو الاتصال

Dim oSQLServer As SQLDMO.SQLServer
Set oSQLServer = New SQLDMO.SQLServer
If option1.Value = True Then   ' windows authentication
    oSQLServer.LoginSecure = True
    oSQLServer.Connect Trim(txtServer), Trim(txtLoginId)
ElseIf option2.Value = True Then   ' SQL Server authentication
    oSQLServer.Connect Trim(txtServer), Trim(txtLoginId), Trim(txtPwd(
End If
Label4.Caption = "Connected to " & txtServer
MsgBox "Connected successfully.", vbInformation, "SQL.."

في البداية يتم تعريف متغير يعبر عن الكائن SQLDMO كما كنا نفعل مع الكائن ADO بالجملة Dim oSQLServer As SQLDMO.SQLServer وهذا الكائن يستخدم في التعامل مع الخادم مثل العودة باسم الخادم أو الاتصال به أو قطع الاتصال به .... الخ

ثم حدد أن الكائن جديد باستخدام الجملة

Set oSQLServer = New SQLDMO.SQLServer

وبعدها إذا اختار المستخدم windows authentication فيتم التعامل مع اسم الخادم واستخدام أمان ويندوز باستخدام الجملة

oSQLServer.LoginSecure = True

ثم جملة الاتصال بالخادم والتي لها الصورة العامة التالية

OSQLSERVER.CONNECT SERVER_NAME,LOG_NAME,PASSOWRD

والبارامترات الثلاثة هي على الترتيب ( اسم الخادم – اسم المستخدم – كلمة المرور ) وطبعا في الحالة الأولى يمكننا الاستغناء عن كلمة المرور واسم المستخدم والاتصال بالخادم مباشرة

اما الحالة الثانية sql server authentication فيتم تحديد اسم المستخدم وكلمة المرور باستخدام الجملة

oSQLServer.Connect Trim(txtServer), Trim(txtLoginId), Trim(txtPwd(

ثالثا : عرض قواعد البيانات الموجودة بالخادم في قائمة أو مربع سرد

بعد الاتصال بالخادم ونجاح الاتصال يمكنك عرض جميع قواعد البيانات الموجودة بالخادم في مربع سرد أو قائمة باستخدام الكود التالي

Dim oDatabase as SQLDMO.Database
Set oDatabase = oSQLServer.Databases("Northwind")
Dim nDatabase as Integer
For nDatabase = 1 to oSQLServer.Databases.Count
    List1.AddItem oSQLServer.Databases(nDatabase).Name
Next nDatabase

ثالثا : عرض الجداول الموجودة في قاعدة بيانات معينه في قائمة أو مربع سرد

بعد الاتصال بالخادم ونجاح يمكنك عرض الجداول الموجودة في قاعدة بيانات محددة في مربع سرد أو قائمة باستخدام الكود التالي

    Dim oDatabase As SQLDMO.Database
    Dim oTable As SQLDMO.Table
    Dim ntab As Integer
        Set oDatabase = oSQLServer.Databases(List1.Text)
        
For ntab = 1 To oDatabase.Tables.Count
    List2.AddItem oDatabase.Tables(ntab).Name
Next ntab

يمكنك تطبيق ما تم التحدث عنه في هذا الدرس وسنتابع معا العمليات الأخرى على هذا الكائن الرائع

سارفق مثال الدرس قريبا

يتبع >>>>>>

مع تحيات Nasser50001( ناصر ) وبنت اليمن

الفريق العربي لبرمجة

#113

مثال رائع جدا جدا :D

على الدرس السابق :D

تحياتي لكم

اخوكم ناصر

sqldmo object.rar

#114

الأخ ناصر كيف الحال أولاً

وهذا ا\توضيح لسؤالي

اخي ناصر لقد قمت بعمل برنامج لقسم السجلات الطبية في المستشفى العسكري وهو خاص للقسم نوعا ما وكل شئ عال وميه في المية في البرنامج الى ان قمت بتحزيمة وتنصيبة على احد الأجهزة في القسم وتم تحميله على الجهاز بشكل ممتاز ولكن عند قيامي بفتح نموذج إدخال المواعيد ظهرت لي رساله يطالبني فيها بقاعدة البيانات ووضع لي مسار قاعدة البيانات على جهازي في المنزل ولم أستطع تشغيل البرنامج الى هذا اليوم .

ارجو ان أكون قد وضحت لك اخي ناصر مشكلتي .

كما اود وارجو منك المساعده على تصميم برنامج سوف أقوم بكتابت تفاصيله لك لاحقا ً اذا أمكن أخي ناصر ولك خالص الإحترام .

وهذا بريدي aljwhary@hotmail.com

أرجو منك المواصله معي اخ ناصر ولك جزيل الشكر

أخوكم أبو تركي / علي الجوهري

#115

أشكركم أخي ناصر وأختي بنت اليمن فالموضوع أكثر من رائع، نفع الله بعلمكما وأثابكما خيير الثواب

ورجائي هو أن لا تنسوا عمل ملف PDF عن كامل الموضوع حتى يكون مرجع قيم لمن يحصل عليه

ودعائي لكم بدوام التوفيق

#116

شكرا لجميع الأخوة الكرام على المرور وخلاص هانت ظل درس أو اثنين وتنتهي هذه السلسلة

أخي الجوهري

بالنسبة لسؤالك انت تستخدم في ربط قاعدة البيانات ايه ( أدوات ولا كائنات ) حتى استطيع معرفة مصدر المشكلة بالضبط

بالنسبة لرسالة الخطأ تعني أن مسار قاعدة البيانات هو المار الموجود بالجهاز الذي في منزلك ولذلك يجب اعطاء مسار قاعدة البيانات التي ستعمل عليها

أو تضع قاعدة البيانات في نفس المسار المطلوب

منتظر ردك

اخوك ناصر

#117

أخي الفاضل abdullahbamusa

إن شاء الله الدروس ستجمع في ملف pdf إن شاء الله وفي عرض بوربوينت بإذن الله

تحياتي لك

اخوك ناصر

#118

جزاك الله خيرا أخي الحبيب... (h)

____________________________________________________________________________

{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)

____________________________________________________________________________

In a world without walls and fences, who needs Windows and Gates

مدونتي

#119

تابع العمل مع الكائن SQLDMO

خامسا : الحصول على أسماء الحقول من جدول محدد

وللحصول على بيانات الحقول من جدول محدد يمكنك استخدام الكود التالي

Dim intCounter As Integer
Dim strdbname As String
List3.Clear
Label10.Caption = "database name is :" & List1.Text & Chr(10) + Chr(13) & " the table is : " & List2.Text
Set SQLtab = SQLDB.Tables(List2.Text)
For intCounter = 1 To SQLtab.Columns.Count
        strdbname = SQLtab.Columns(intCounter).Name
        List3.AddItem strdbname
    Next

حيث يتم تعريف متغير جديد في ملف البرمجة Module للتعامل مع الجدول حيث يتم تعريف المتغير كالتالي

Public SQLtab As New SQLDMO.Table

ثم يتم تحديد أن هذا المتغير يأخذ قيمته من قائمة السرد الخاصة بعرض الجداول List2 باستخدام الجملة

Set SQLtab = SQLDB.Tables(List2.Text)

ثم يتم عمل دوارة لعرض الحقول columns داخل قائمة سرد list3 كما هو واضح بالكود في الأعلى

سادسا : عرض المستخدمين USERS المحددين لكل قاعدة بيانات محددة

ولعرض المستخدمين المحددين لكل قاعدة بيانات يتم اختيارها نستخدم الكود التالي

Dim intCounter1 As Integer
Dim strdbname1 As String
List4.Clear
Set SQLDB = SQLServer.Databases(List1.Text)
    For intCounter1 = 1 To SQLDB.Users.Count
        strdbname1 = SQLDB.Users(intCounter1).Name
        List4.AddItem strdbname1
    Next

حيث يتم تعريف متغير جديد في ملف البرمجة Module للتعامل مع قاعدة البيانات حيث يتم تعريف المتغير كالتالي

Public SQLDB As New SQLDMO.Database

ثم يتم تحديد أن هذا المتغير يأخذ قيمته من قائمة السرد الخاصة بعرض الجداول List1 باستخدام الجملة

Set SQLDB = SQLServer.Databases(List1.Text)

ثم يتم عمل دوارة لعرض المستخدمين داخل قائمة سرد list4 كما هو واضح بالكود في الأعلى

سابعا : عرض المستخدمين LOGINS في خادم قاعدة البيانات

ولعرض المستخدمين اlogin الموجودين في خادم قاعدة البيانات نستخدم الكود التالي

Dim intCounter1 As Integer
Dim strdbname1 As String
List4.Clear
    For intCounter1 = 1 To SQLServer.Logins.Count
        strdbname1 = SQLServer.Logins(intCounter1).Name
        List4.AddItem strdbname1
    Next

حيث يتم تعريف متغير جديد في ملف البرمجة Module للتعامل مع خادم قاعدة البيانات حيث يتم تعريف المتغير كالتالي

Public SQLServer  As New SQLDMO.SQLServer

ثم يتم عمل دوارة لعرض المستخدمين login داخل قائمة سرد list4 كما هو واضح بالكود في الأعلى

ثامنا : إنشاء قاعدة بيانات جديدة

يمكنك إنشاء قاعدة بيانات جديدة باستخدام الكود التالي

SQLDB.Name = Trim(Text4)
SQLServer.Databases.Add SQLDB

حيث يتم تحديد اسم قاعدة البيانات في مربع نص ثم يتم إنشاء قاعدة البيانات باستخدام الجملة

SQLServer.Databases.Add SQLDB

تاسعا : عمل نسخة احتياطية من قاعدة بيانات محددة

لعمل نسخة احتياطية backup من قاعدة البيانات نستخدم الكود التالي

SQLBackupDB.Database = Trim(Text4)
SQLBackupDB.Files = App.Path & "\Backup.mdf"
SQLBackupDB.SQLBackup SQLServer

حيث يجب تعريف متغير لإدارة النسخ الاحتياطي في ملف البرمجة Module باستخدام الجملة التالية

Public SQLBackupDB As New SQLDMO.Backup

وبعدها يتم تحديد اسم النسخة الاحتياطية ومسارها ثم بعد ذلك يتم إنشائها كما في الكود السابق

عاشرا : حذف قاعدة بيانات محددة

لحذف قاعدة بيانات محددة يمكنك استخدام الكود التالي

SQLServer.Databases.Remove Trim(Text4)

الدرس القادم آخر درس في هذه السلسة وستكون عن إنشاء المستخدمين برمجيا وإعطائهم الصلاحيات المعينة مع مثال شامل على كل العمليات البرمجية التي تم الحديث عنها

مع تحيات nasser50001 ( ناصر ) وبنت اليمن

الفريق العربي للبرمجة

#120

السلام عليكم و رحمة الله و بركاته

جزاكم الله خيرا و جاري التحويل لل VB.net

أخوكم عمرو عيسي

#121

و أنا في أنتظار النهاية

#122

اخ عمرو

مرحبا

اعتقد ان ردك غير واضح وليس له سبب .... يمكن غلطان بالموضوع ولا حاجة ؟

#123

السلام عليكم و رحمة الله و بركاته

أعتقد أنك ذكرت في المشاركة رقم 119 ما يلي

الدرس القادم آخر درس في هذه السلسة وستكون عن إنشاء المستخدمين برمجيا وإعطائهم الصلاحيات المعينة مع مثال شامل على كل العمليات البرمجية التي تم الحديث عنها

عموما أنا كل ما قلته أنا بأنتظار النهاية لتحويل الكود و الموضوع لل VB.net لس أكثر و لا أقل

أخوك عمرو عيسي

#124

مجهود رائع وتشكر علية

-waf -waf

#125

الاخ ناصر والاخت بنت اليمن

بارك الله فيكم وجعل هذه الدروس فى ميزان حسناكم :)

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

مواضيع مشابهة