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

طرق الاتصال العلمية بقواعد بيانات Sql Server

بدأه أبو حنان في 27 أكتوبر 2008 · 3 رد · 10,062 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

بحثت في المنتديات العربية عن كيفية الاتصال بقواعد البيانات SQL Server المرتكزة على قواعد بيانات Microsoft SQL Server Express ، وفي الحقيقة أنني وجدت الكثير من المشاركات التي تدور حول طرق الاتصال تلك ، لكنني لم أجد أي من هذه المشاركات كاف ووافي بحيث لا يحتاج المبرمج المبتدئ إلي طرح الكثير من الأسئلة بعد تلك المشاركة ، من هنا وجدت أنه لابد من وجود مشاركة تكون كافية ووافية تجيب عن أي سؤال قد يتبادر إلي ذهن المبرمج سواء كان مبدءاً أو محترفاً في عملية الاتصال بقواعد بيانات SQL Server .

بسم الله نبدأ ، والله المستعان

في البداية لابد من سرد سيناريو طريقة استخدام برنامجك من قبل المستخدم ، فالمستخدم بعد أن يقوم بتثبيت محرك قواعد البيانات SQL Server Express على جهازه ، ومن ثم يقوم بربط قاعدة البيانات المستخدمة في برنامجك بالسيرفر ( هناك الكثير من الطرق لربط قواعد البيانات بالسيرفر منها اليدوي ومنها عن طريق برنامجك في أول تشغيل له ومنها عن طريق برنامج صغير يرفق مع برنامجك لربط قواعد البيانات من نوع SQL Server ) ابحث عن ذلك في المنتدى ستجد الكثير من المشاركات.

هنا يأتي دور المستخدم لتعريف برنامجك بطريقة الاتصال بالسيرفر وهل هو موجود على الكمبيوتر المحلي ( أي على نفس الكمبيوتر الموجود عليه برنامجك ) أم على كمبيوتر خادم ، وهل طريقة الاتصال بقاعدة البيانات في حال كانت على كمبيوتر خادم ستكون من خلال الـ IP Address أم من خلال اسم الكمبيوتر الخادم ؟.

فكيف تتيح تلك الخيارات للمستخدم ( تابع معي الشرح لتعرف ذلك ) .

في البداية سوف ننشأ قاعدة بيانات Access نضع فيها خيارات المستخدم ونستدعيها عند الحاجة ( تجدر الإشارة إلي أنه يمكنك أن تحفظ خيارات المستخدم في ملف تسجيل ويندوز ( الريجيستري ) ).

لكننا سوف نتبع الطريقة الأولى ففيها سنأخذ فكرة أيضاً عن طريقة الاتصال بقاعدة بيانات Access .

قم بفتح برنامج Access ومن ثم أنشئ قاعدة بيانات فارغة سمها ( Settings ) وأحفظها في مجلد باسم ( Databases ) في نفس مسار برنامجك .

الآن سنقوم بإنشاء جدول في قاعدة البيانات التي قمنا بإنشائها للتو باسم (ConnectionToServer ) حقولها كالتالي :-

post-27370-1225132408_thumb.gif

1- OnLocalComputer نوع بياناته ( نعم/لا )

2- OnComputerServer نوع بياناته ( نعم/لا )

3- ServerIPAddress نوع بياناته ( نص )

4- ServerName نوع بياناته ( نص )

أغلق برنامج Access وشغل برنامج Microsoft Visual Studio 2005 .

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

أضف وحدة نمطية ( Module ) لمشروعك وسمي هذه الوحدة النمطية باسم (MdlConnection ) ، وذلك بفتح قائمة Project ثم Add Module … ، أحفظ الوحدة النمطية بجوار ملفات مشروعك .

في قسم التصريحات العامة في الـ Module اكتب التالي :-

'==================================================|
'هذا المديول يقوم بعمل اتصال عام لقواعد البيانات	|
'ونستطيع الوصول لهذا الاتصال من أي مكان بالبرنامج	 |
'==================================================|
Option Explicit On
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Imports System.IO

شرح الكود :-

قمنا باستيراد مجالات الأسماء الخاصة بالتعامل مع قواعد البيانات من SQL Server وقواعد البيانات من Access وأيضاً مجال الإدخال والإخراج .

وفي قسم التصريحات في الـ Module نكتب التالي :-

'المتغيرات العامة للاتصال بخادم قواعد البيانات

	Public GSQLConnection As New SqlConnection
	Public GSQLCmd As SqlCommand = GSQLConnection.CreateCommand
	Public GDA As SqlDataAdapter = Nothing
	Public GDR As SqlDataReader = Nothing
	Public GDS As New DataSet
	Public GDT As DataTable
	'----------------------------------------------------------------
	'المتغيرات المحلية والتي ستحمل نوع الاتصال بخادم قواعد البيانات 
	' وذلك بعد معرفة نوع الخادم وبياناته من قاعدة البيانات المحلية
	Dim LocalComputer As Boolean = False
	Dim ServerByIPAddress As Boolean = False
	Dim ServerByName As Boolean = False
	'==============================
	'متغيران عامان يحملان قيمة عنوان الاي بي واسم السيرفر 
	Public ServerIPAddress As String
	Public ServerName As String
	'----------------------------------------------------------------
	'المتغيرات الخاصة بالاتصال بقواعد بيانات أكسس أي المحلية
	'متغير الاتصال الأساسي
	Dim WithEvents Cn As New OleDbConnection
	'متغير نص الاتصال بقاعدة البيانات
	Dim CnStr As String
	'متغير كائن الأوامر
	Dim WithEvents Cmd As New OleDbCommand
	'متغير نص جملة الاستعلام
	Dim Sql As String
	'متغير يحمل مجموعة السجلات
	Dim DR As OleDbDataReader

أعتقد أن الكود واضح ولا يحتاج إلي شرح بخلاف التعليقات .

بعدها نقوم بإنشاء إجراء عام كما في الكود التالي :-

Public Sub GeneralConnection()

'إجلب نوعية الاتصال من قاعدة البيانات المحلية
		Call GetConnection()
		'فإذا كانت نوعيته من الخادم على الكمبيوتر المحلي
		If LocalComputer = True Then
			'استدعي إجراء الاتصال بخادم قواعد البيانات على الكمبيوتر المحلي
			Call ConnectToLocalServerComputer()

		End If

		If ServerByIPAddress = True Then
			'استدعي إجراء الاتصال بخادم قواعد البيانات عن طريق عنوان الأي بي 
			Call ConnectToIPAddressServerComputer()

		End If

		If ServerByName = True Then
			'استدعي إجراء الاتصال بخادم قواعد البيانات عن طريق اسم السيرفر 
			Call ConnectToNameServerComputer()

		End If

	End Sub

شرح الكود :-

هذا الإجراء هو الإجراء العام للاتصال بقاعدة البيانات والذي سوف نستدعيه من أي مكان في المشروع .

وأول سطر في هذا الكود (Call GetConnection() ) يقوم باستدعاء إجراء أخر سنقوم بكتابته وهو معرفة خيارات المستخدم من قاعدة بيانات Access التي تم إنشائها سابقاً .

السطر الذي يليه نستفهم من المتغير LocalComputer عما إذا كانت قاعدة البيانات على نفس الكمبيوتر المحلي عندها استدعي الإجراء الخاص بالاتصال بقاعدة البيانات على الكمبيوتر المحلي ( Call ConnectToLocalServerComputer() )وسوف نقوم بكتابة هذا الإجراء لاحقاً .

أما إذا كان المتغير الخاص بالاتصال بقاعدة البيانات من خلال الـ IP Address قيمته تساوي نعم فعندها استدعي الإجراء الخاص بالاتصال بقاعدة البيانات عن طريق الـIP Address والذي سوف نقوم بكتابته لاحقاً .

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

والآن سنقوم بكتابة الإجراء الذي يحتوي على الاتصال بقواعد بيانات Access لمعرفة خيارات المستخدم :-

Public Sub GetConnection()
		'==========================================================|
		'إجراء معرفة نوعية الاتصال هل من خادم محلي أما من خادم شبكة  |
		'==========================================================|
		Try
			CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DataBase Password=MyPassowrd;" & "Data Source=" & Application.StartupPath & "\Databases\Settings.mdb;"
			Cn.ConnectionString = CnStr
			Cn.Open()
			Cmd.Connection = Cn

			Sql = "SELECT* FROM ConnectionToServer"
			Cmd.CommandText = Sql
			DR = Cmd.ExecuteReader()

			DR.Read()
			If DR.Item("OnLocalComputer") = True Then
				LocalComputer = True
			Else
				LocalComputer = False
			End If

			If LocalComputer = False Then
				If DR.Item("ServerIPAddress") IsNot System.DBNull.Value Then
					ServerByIPAddress = True
					ServerIPAddress = DR.Item("ServerIPAddress")

				End If
				If DR.Item("ServerIPAddress") = "" Then
					ServerByIPAddress = False
					ServerByName = True
					ServerName = DR.Item("ServerName")
				End If
			End If

			DR.Close()

		Catch Ex As Exception
			MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "ضع هنا اسم برنامجك")
		Finally
			Cn.Close()
		End Try
	End Sub

شرح الكود :-

نقوم في هذا الإجراء بالاتصال بقاعدة البيانات Settings والتي قمنا بإنشائها سابقاً والتي من المفروض أن تكون في مجلد باسم Databases في نفس مجلد برنامجك .

قمنا بكتابة نص الاتصال بقاعد البيانات سوف أسندنا نص الاتصال للمتغير Cn ومن ثم قمنا بإسناد هذا المتغير لكائن الأوامر Cmd ، ثم كتبنا نص الاستعلام الذي يحدد كل الحقول من جدول ConnectionToServer التي قمنا بإنشائها عند إنشاء قاعدة البيانات .

ثم قمنا بمعرفة الخيارات من خلال قارئ البيانات Data Reader ، ثم أسندنا الخيارات الموجودة في قاعدة البيانات إلى المتغيرات التي تحدد الاتصال بقاعدة البيانات والتي تم شرحها سابقاً .

والآن هيا لنكتب الإجراء الخاص بالاتصال بقاعدة بيانات SQL Server من خلال الكمبيوتر المحلي ( أي نفس الكمبيوتر الذي يعمل عليه برنامجك ) .

Public Sub ConnectToLocalServerComputer()
		'==========================================================|
		'إجراء الاتصال بخادم قواعد البيانات المحلي		  |
		'==========================================================|
		'اجعل نص الاتصال هو الاتصال بالخادم المحلي 
		Try

			GSQLConnection.ConnectionString = "Data Source=" + My.Computer.Name + "\SQLExpress;Initial Catalog=Luxorsystems;Integrated Security=SSPI;"
			GSQLConnection.Open()
		Catch Ex As Exception
						   MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "هنا اكتب اسم برنامجك")

		End Try

	End Sub

هذا الإجراء بالاتصال بقاعدة بيانات SQL Server مستخدماً مجال الأسماء MY ومن سم اسم الكمبيوتر كما في المقطع التالي (My.Computer.Name ) .

ملاحظة :-

في نص الاتصال تجد المقطع التالي Catalog=Luxorsystems وهذا هو اسم قاعدة البيانات المطلوب الاتصال بها ( أنا سميت قاعدة البيانات LuxorSystems ويمكنك استبدالها باسم قاعدة بياناتك .

ثم قمنا بفتح الاتصال بقاعدة البيانات .

والآن هيا بنا لنكتب الإجراء الذي يتصل بقاعدة البيانات من خلال الـ IP Address .

Public Sub ConnectToIPAddressServerComputer()

		'==========================================================|
		'إجراء الاتصال بخادم قواعد البيانات عن طريق عنوان الأي بي	 | |
		'==========================================================|
		Try
	  'نص الاتصال بقواعد البيانات
			GSQLConnection.ConnectionString = "Data Source=" + ServerIPAddress + "\SQLExpress;Network Library=DBMSSOCN;Initial Catalog=Luxorsystems;Integrated Security=SSPI;"
			GSQLConnection.Open()

		Catch Ex As Exception
							MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "هنا اكتب اسم برنامجك")
		End Try
	End Sub

هنا استخدمنا في نص الاتصال المتغير ServerIPAddress والذي يحمل قيمته من قاعدة بيانات Access وهو خيار المستخدم .

ملاحظة :-

في نص الاتصال تجد المقطع التالي Catalog=Luxorsystems وهذا هو اسم قاعدة البيانات المطلوب الاتصال بها ( أنا سميت قاعدة البيانات LuxorSystems ويمكنك استبدالها باسم قاعدة بياناتك .

ثم قمنا بفتح الاتصال بقاعدة البيانات .

والآن هيا بنا لنكتب الإجراء الذي يتصل بقاعدة البيانات من خلال اسم الكمبيوتر :-

Public Sub ConnectToNameServerComputer()

		'==========================================================|
		'إجراء الاتصال بخادم قواعد البيانات عن طريق اسم السيرفر	 |   |
		'==========================================================|
		Try
			'نص الاتصال بقواعد البيانات
			GSQLConnection.ConnectionString = "Data Source=" + ServerName + "\SQLExpress;Initial Catalog= LuxorSystems;Integrated Security=SSPI;"
			GSQLConnection.Open()
		Catch Ex As Exception

				MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, " هنا اكتب اسم برنامجك")

			End If
		End Try
	End Sub

هنا استخدمنا في نص الاتصال المتغير ServerName والذي يحمل قيمته من قاعدة بيانات Access وهو خيار المستخدم .

ملاحظة :-

في نص الاتصال تجد المقطع التالي Catalog=Luxorsystems وهذا هو اسم قاعدة البيانات المطلوب الاتصال بها ( أنا سميت قاعدة البيانات LuxorSystems ويمكنك استبدالها باسم قاعدة بياناتك .

ثم قمنا بفتح الاتصال بقاعدة البيانات .

إلى هنا نكون قد قمنا بكتابة كل الإجراءات الخاصة بالـ Module الخاص بالاتصال بقواعد البيانات .

والآن هيا بنا لنصمم النافذة التي ستتلقى خيارات المستخدم ومن ثم حفظها في قاعدة البيانات Access ويمكنك أن تجعها تظهر في أول مرة تشغيل لبرنامجك .

صمم النافذة كما بالشكل التالي مستعيناً بالمعلومات التالية:-

post-27370-1225132499_thumb.jpg

1- ضع على النافذة ( صندوق مجموعة ) Group Box وغير قيمة الـ Text إلي (خيارات خادم قواعد البيانات ) .

2- ثم ضع داخل ( صندوق المجموعة ) أداة RadioButton ثم غير خاصية Name إلي RdoLocalComputer وغير قيمة الـ Text إلي ( على الكمبيوتر المحلي ).

3- ثم ضع داخل ( صندوق المجموعة ) أداة RadioButton أخرى ثم غير خاصية Name إلىRdoServerComputer وغير قيمة الـ Text إلي ( على الكمبيوتر الخادم ).

4- ضع حاوية ( Panel ) فارغة أسفل الأدوات السابقة وذلك حتى نتمكن من عمل مجموعتين من أدوات Radio .

5- ثم ضع داخل ( الحاوية ) أداة RadioButton ثم غير خاصية Name إليRdoServerIPAddress وغير قيمة الـ Text إلى (عنوان IP الخادم :- ).

6- ثم ضع داخل ( الحاوية ) أداة RadioButton أخرى ثم غير خاصية Name إلي RdoServerName وغير قيمة الـ Text إلى (اسم الخادم :-).

7- ضع بجوار الـ RadioButton الأولى في الحاوية أداة ( مربع نص ) Text Box ثم غير خاصية Name إلى TxtServerIPAddess ثم اجعل خاصية Enabled = False .

8- - ضع بجوار الـ RadioButton الثانية في الحاوية أداة ( مربع نص ) Text Box ثم غير خاصية Name إلى TxtServerName ثم اجعل خاصية Enabled = False .

9- ضع (زري أوامر ) Command Button على النافذة وغير قيمة الـ Text للزر الأول إلى ( حفظ ) والثاني إلى ( إغلاق ) .

والآن نأتي لكتابة الكود لهه النافذة :-

انقر نقراً مزدوجاً على أداه الـ Radio المسماه RdoServerComputer والتي تحمل عنوان ( على الكمبيوتر الخادم )، وذلك لفتح نافذة الكود على خاصية RdoServerComputer_CheckedChanged واكتب الكود التالي :-

		If RdoServerComputer.Checked = True Then
			RdoServerIPAddress.Enabled = True
			Me.TxtServerIPAddess.Enabled = True
			Me.RdoServerIPAddress.Checked = True
			Me.RdoServerName.Enabled = True

		Else
			Me.RdoServerIPAddress.Enabled = False
			Me.TxtServerIPAddess.Enabled = False
			Me.RdoServerName.Enabled = False
			Me.TxtServerName.Enabled = False

		End If

في هذا الكود نختبر اختيار المستخدم هل قام باختيار الخيار الثاني أي (على الكمبيوتر الخادم ) فإذا كان كذلك نقوم بجعل مربع النص الذي سيدخل فيه رقم IP Address نشطاً .

أما إذا رجع المستخدم عن اختياره واختار أداة الاختيار الأولى نجعل مربع النص (على الكمبيوتر الخادم ) غير نشط .

الآن انقر نقراً مزدوجاً على أداه الـ Radio المسماه RdoServerName والتي تحمل عنوان ( اسم الخادم )، وذلك لفتح نافذة الكود على خاصية RdoServerName_CheckedChangedواكتب الكود التالي :-

  If RdoServerName.Checked = True Then
			Me.TxtServerName.Enabled = True
			Me.RdoServerIPAddress.Checked = False
			Me.TxtServerIPAddess.Enabled = False
			Me.TxtServerIPAddess.Clear()
		Else
			Me.TxtServerName.Enabled = False
			Me.TxtServerIPAddess.Enabled = True
		End If

نقوم في هذا الكود بمعرفة اختيار المستخدم فإذا اختار الخيار الثاني في الحاوية أي اختار (اسم الخادم :- ) حينها نقوم بإلغاء تنشيط مربع نص ( رقم IP Address ) وجعله غير نشط ومن ثم تنشيط مربع نص ( اسم الخادم ) ليكتب به المستخدم اسم الكمبيوتر الخادم .

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

Option Explicit On
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Imports System.IO
Imports Microsoft.Win32

ثم اكتب في قسم التصريحات العامة للنافذة وتحت Public Class Form1 الكود التالي :-

'متغير الاتصال الأساسي
	Dim WithEvents Cn As New OleDbConnection
	'متغير نص الاتصال بقاعدة البيانات
	Dim CnStr As String
	'متغير كائن الأوامر
	Dim WithEvents Cmd As New OleDbCommand
	'متغير نص جملة الاستعلام
	Dim Sql As String
	'متغير يحمل مجموعة السجلات
	Dim DR As OleDbDataReader

والآن جاء دور كتابة كود زر ( حفظ ) لحفظ خيارات المستخدم في قاعدة بيانات Access .

انقر نقراً مزدوجاً على زر ( حفظ لفتح نافذة الكود على الخاصية Button1_Click ثم اكتب الكود التالي :-

	

Try
			CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DataBase Password=MyPassowrd;" & "Data Source=" & Application.StartupPath & "\Databases\Settings.mdb;"
			Cn.ConnectionString = CnStr
			Cn.Open()
			Cmd.Connection = Cn

			If Me.RdoLocalComputer.Checked = True Then
				Sql = "UPDATE ConnectionToServer SET OnLocalComputer=" & True & ",OnComputerServer=" & False & ",ServerIPAddress='" & Me.TxtServerIPAddess.Text & "'" & ",ServerName='" & Me.TxtServerName.Text & "'"
			End If
			If Me.RdoServerComputer.Checked = True Then
				If Me.RdoServerIPAddress.Checked = True Then
					Sql = "UPDATE ConnectionToServer SET OnLocalComputer=" & False & ",OnComputerServer=" & True & ",ServerIPAddress='" & Me.TxtServerIPAddess.Text & "'" & ",ServerName='" & Me.TxtServerName.Text & "'"

				End If
				If Me.RdoServerName.Checked = True Then
					Sql = "UPDATE ConnectionToServer SET OnLocalComputer=" & False & ",OnComputerServer=" & True & ",ServerIPAddress='" & Me.TxtServerIPAddess.Text & "'" & ",ServerName='" & Me.TxtServerName.Text & "'"
				End If
			End If
			Cmd.CommandText = Sql
			Cmd.ExecuteNonQuery()
			MsgBox("تم حفظ خيارات المستخدم في قاعدة البيانات", MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "هنا اكتب اسم برنامجك")

			Me.Button1.Enabled = False
		Catch Ex As Exception
			MsgBox(Ex.Message)

		Finally
			Cn.Close()
		End Try

في هذا الكود نقوم بحفظ خيارات المستخدم لاختياره لنوع خادم قواعد البيانات وذلك في قاعدة البيانات Access الموجودة في مجلد Databases الموجود بدوره في نفس مسار برنامجك.

اكتب الكود التالي في حدث النقر على زر أمر ( إغلاق ) لإغلاق نافذة خيارات خادم قواعد البيانات ومن ثم فتح نافذة الاتصال بقاعدة البيانات SQL Server :-

'اغلق النافذة الحالية واعرض نافذة دخول المستخدمين
		Me.Hide()
		Form2.ShowDialog()

ملاحظة :-

يجب في هذه المرحلة أن تقوم بعمل قاعدة البيانات SQL Server ومن ثم ربطها بخادم SQL Server Express ، كما يجب أن تحتوي قاعدة البيانات على جدول باسم / Users بها حقلين الحقل الأول سمه UserID والحقل الثاني سمه Password

الآن صمم النموذج الثاني كما بالشكل التالي :-

post-27370-1225132551_thumb.jpg

بحيث تجعل اسم القائمة التي سيكون فيها أسماء المستخدمين (CmbUserName ) وتجعل اسم مربع النص الذي يتلقى كلمات المرور باسم (TxtPassword ) ، ولا تنسى أن تجعل قيمة الخاصية Password Char لمربع النص ( * ) حتى لا تظهر كلمة المرور ككلمات ولكي تظهر نجوم.

اجعل اسم الأمر ( اتصال ) باسم (CmdConnect ) والأمر ( إلغاء الأمر ) باسم ( CmdCancel ) .

والآن سنكتب كود الأمر (اتصال ) ، انقر نقراً مزدوجاً على أمر اتصال لفتح نافذة الكود كما بالشكل التالي :-

CmdConnect.Enabled = False

		Cursor = Cursors.WaitCursor
		'التأكد من أن المستخدم قد اختار اسم مستخدم من القائمة
		If Me.CmbUserName.Text = "" Then

			MsgBox(" من فضلك .. اختر اسم المستخدم من القائمة ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
			CmdConnect.Enabled = True
			Cursor = Cursors.Default
			Exit Sub

		End If
		If Me.TxtPassword.Text = "" Then

			MsgBox(" من فضلك .. اكتب كلمة المرور ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
			CmdConnect.Enabled = True
			Me.TxtPassword.Focus()
			Cursor = Cursors.Default
			Exit Sub

		End If
		'استدعاء الاتصال العام بقواعد بيانات السيرفر

		Try
			'معرفة حالة الاتصال العام فإذا كان غير مفتوح

			If GSQLConnection.State <> ConnectionState.Open Then
				'عندها استدعي إجراء الاتصال العام من مديول الاتصال
				GeneralConnection()

			End If
			If GSQLConnection.State = ConnectionState.Open Then
				GDR = Nothing

				GSQLCmd.CommandType = CommandType.Text
				GSQLCmd.CommandText = "SELECT* FROM Users WHERE UserID LIKE '" & Me.CmbUserName.Text & "%'"
				GDR = GSQLCmd.ExecuteReader
				GDR.Read()
				'في حالة مساواة كلمة المرور المدخلة لكلمة المرور الموجودة في قاعدة البيانات
				If GDR.Item("Password") = Me.TxtPassword.Text Then
					MsgBox(" انت الآن متصل بقاعدة البيانات بنجاح ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
				End If


				'إغلق كائن قارئ البيانات
				GDR.Close()

				'-------------------------------------------------------

				'-------------------------------------------------------
			ElseIf GDR.Item("Password") <> Me.TxtPassword.Text Then
				GSQLConnection.Close()

				MsgBox(" من فضلك .. اكتب كلمة المرور الصحيحة ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
				Me.TxtPassword.Focus()

				GDR.Close()

			End If

		Catch ex As Exception
			GSQLConnection.Close()

		Finally

			CmdConnect.Enabled = True
			Cursor = Cursors.Default
		End Try

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

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

	Public Sub UsersIDs()
		'==========================================================================|
		'الإجراء الخاص بجلب كل أسماء المستخدمين ووضعهم في قائمة المستخدمين
		' ذلك من قواعد بيانات الخادم 
		'==========================================================================|

		'استدعاء الاتصال العام بقواعد بيانات السيرفر


		Try
			Me.Cursor = Cursors.WaitCursor
			'معرفة حالة الاتصال العام فإذا كان غير مفتوح

			If GSQLConnection.State <> ConnectionState.Open Then
				'عندها استدعي إجراء الاتصال العام من مديول الاتصال
				GeneralConnection()
			End If


			If GSQLConnection.State = ConnectionState.Open Then

				GDR = Nothing

				GSQLCmd.CommandType = CommandType.Text
				GSQLCmd.CommandText = "SELECT* FROM Users"
				GDR = GSQLCmd.ExecuteReader

				Do While GDR.Read()
					CmbUserName.Items.Add(GDR.GetSqlString(0))
					Application.DoEvents()
				Loop
				GDR.Close()
				GSQLConnection.Close()

				Me.Cursor = Cursors.Default

			End If

		Catch

		Finally
			Me.Cursor = Cursors.Default

			GSQLConnection.Close()
		End Try
End Sub

والآن نستدعي الإجراء الأخير في حدث تحميل النافذة كما يلي :-

Call UsersIDs()

والآن اكتب حدث النقر على أمر ( إلغاء الأمر ) بنفسك .

بها نكون قد انتهينا من مشاركتنا هذه وانتظروا قريبا شرح كيفية عمل إنشاء – نسخ احتياطي – استرجاع النسخ الاحتياطي – ربط قواعد البيانات – فك الربط لقواعد البيانات ، والكثير من الأشياء .

وفي النهاية أنا مستعد للإجابة عن أي استفسار حول هذه المشاركة

هذا والله أعلى وأعلم

مع تمنيات شركة الأقصر سيستمز للحلول البرمجية – للجميع بالتوفيق

مختار أحمد

مدير عام شركة الأقصر سيستمز للحلول البرمجية وتكنولوجيا المعلومات

www.luxorsystems.net

luxorsystems@hotmail.com

1

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

#3

radio

#4

شكرا لك اخي العزيز بارك الله فيك هذا بالفعل ما كنت ابحث عنه

زادك الله علما وتقى +1

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…