الســلام عليكم ورحمة الله وبركاته
اخوانى الاعضــاء الكرام , كيـف حــال الجميع ؟
أســأل الله العظيــم أن تـكونوا فى أفضــل حـال وأتم عــافية
اليــوم بأذن الله سنـتعلم معــاً كيفية أنشــاء وربـط قواعد بيانات SQL Server 2000 بـالفيجوال بيسيك 6.0 أســأل الله العظيم ان يُوفقنى فى إيصـال المعلومة اليكم بشـكل ومُتضح وبسيـط
فلنبدأ بســـــم الله الملك
سنــقوم اليــوم بأنشــأء برنامج لأضافة بيانات المُستخدمين كمــثال نعتمد عليه أثنــاء الشرح
اولاً إنشــاء قاعدة بيانات جديدة :
فى مرحلة انشــاء قاعدة بيانات داخل SQL Server 2000 سيتم ذلك بأستخدام SQL Server Enterprise Manager ويمكننا تشغيله عبر الاتى :
من قائمة أبدأ (Start) ومنا الى All Programs ثم Microsoft SQL Server ونختار Enterprise Manager
كما هو موضح بالصورة الأتية :
Download Example
ستظهر لنا نافذة SQL Server Enterprise Manager الان سنقوم بفتح قسم قواعد بيانات الخادم عن طريق اختيار Database من الـ Tree View التى امامنا مثل ما هو موضح بالصورة :
ستجد الان امامك بعض قواعد البيانات تأتى مع برنامج SQL Server ولأنشاء قاعدة بيانات جديدة ننقر كليك يمين -Right Click- على اى مكان فارغ فى نافذة قواعد البيانات ونختار من القائمة New Data Base كما هو موضح بالصورة :
الان ستظهر لنا نافذة خصائص قاعدة البيانات فنقوم بكتابة أسـم قاعدة البيانات التى سنقوم بأنشاءها وهو UsersData ثم ننقر على زر Ok الموجود بالنافذة مثل ما موضح بالصورة :
الان سنجد ان قاعدة البيانات UsersData التى قمنا بأنشاءها بجانب القواعد الاخرى والأن سنـقوم بأنشاء جدول جديد وذلك عبر الأتى ننقر على قاعدة البيانات UsersData التى قمنا بأنشاءها كلكتين -Double Click- حتى نقوم بفتحها ستظهر لك نافذة خصائص القاعدة تجاهلها وانقر على زر Cancel ..
الان ستظهر لك أقسـام قاعدة البيانات من جداول واستعلامات ... الخ مثل ما هو موضح بالصورة :
وبما أننا نريد انشاء جدول جديد فسنـقوم بالنقر على قسم جداول القاعدة وهو Tables نقرتين -Double Click- ستجد مجموعة من الجداول ايضاً خاصة بالـ SQL Server نفسة ولأنشاء جدول جديد سنقوم بنفس طريقة انشاء قاعدة البيانات بالنقر كليك يمين على اى مكان فارغ فى نافذة الجداول مثل ما هو موضح بالصورة :
الان ستظهر لنا نافذة تصميم الجداول وكما ترى اول عمود على اليسـار وهو Column Name نقوم بأدخال أسم الحقل به وكذلك الـ Data Type نقوم بتحديد نوع الحقل من خلاله وبعدها Lengh الذى نقوم بتحديد سعة الحقل من خلاله واخيراً Alow Null والذى يعنى بأمكانية السماح بوجود الحقل فارغ داخل السجل او لا .
وسنقوم الان بأنشاء 5 حقول وهما :
UsrNme = varchar
UsrTel = char
UsrMail = varchar
UsrCntry = char
UsrDte = datetime
وكما ترى فجانب اسماء الحقول انواعها ايضا او الـ Data Type
كما هو موضح بالصورة :
الان نقوم بأغلاق الجدول ستظهر لنا رســالة تأكيد حقل التغيرات عليه ونقوم بتسميته بأسم TabUsers وننقر على OK سنجد الجدول أمامنا مع مجموعة الجداول الاخرى ولفتح الجدول فننقر عليه كليك يمين ونختار Return all rows من العنصر Open Table بالقائمة كما هو مُوضح بالصورة التالية :
الان سنجد الجدول أمامنا Access كما هو موضح بالصورة :
أعتقد ان الامر بسيط جدا ومُشابه الى حد كبير لقواعد بيانات MS-Access
والان سنبدأ فى انشاء البرنامج عبر الفيجوال بيسيك 6.0 بعد ان توحد الله
انشاء برنامج بيانات المُستخدمين :
1 قم بفتح مشروع جديد عن طريق فيجوال بيسيك 6.0 وقم بأنشاء Form جديد ثم قم بأضافة الأدوات التاليى عليه :
عدد 5 من اداة Label
عدد 5 من اداة ****Box
عدد 5 من أداة CommandButton
عدد 1 من اداة DataGrid
قم بتنسيق الادوات على الـ Form كما هو موضح بالصورة التالية :
الان قم بتسمية الكائنات عن طريق الخاصية Name على النحو التالى :
Project1 = UsersDataPro
Form1 = frmMain
Label1 = lblNme
Label2 = lblTel
Label3 = lblMail
Label4 = lblCntry
Label5 = lblDte
****1 = txtNme
****2 = txtTel
****3 = txtMail
****4 = txtCntry
****5 = txtDte
Command1 = cmdMveFst
Command2 = CmdMvePvs
Command3 = cmdMveNxt
Command4 = cmdMveLst
Command5 = cmdSave
DataGrid1 = MyGrid
والأن قم بحفظ المشروع فى مجلد جديد
أننا سنقوم بالربط عن طريق مكتبة ADO فسنقوم أولاً بتعريف المكتية عن طريق الاتى :
من قائمة Project ومنها الى Reference ونختار من النافذة :
Microsoft ActiveX Data Object 2.8 Library
ثم ننقر على Ok ويُفضل ان تقوم بغلق المشروع وفتحه من جديد
الان الى مرحلة البرمجة :
الاتصال بالقاعدة :
قم بأنشاء Module جديد وقم بتسميته بأسم Defination -او لا تُسميه كما تريد -
والان سنقوم بالأعلان عن متغيرات ADO لنقوم بأنشاء الاتصال :
كود PHP:
Public Cn As New ADODB.Connection
Public Rs As New ADODB.Recordset
والان سنقوم بعمل أجراء عام للأتصال بالقاعدة عن طريق الكود التالى :
كود PHP:
Public Sub MyConnection()
If Cn.State = 1 Then Cn.Close
Cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=UserData"
Rs.Cursor******** = adUseClient
If Rs.State = 1 Then Rs.Close
Rs.Open "SELECT * FROM TabUsers", Cn, adOpenKeyset, adLockOptimistic
Set frmMain.MyGrid.DataSource = Rs
End Sub
الان لدينا اجراء الاتصال العام حيث يمكننا استعدائه عن طريق اى مكان فى البرنامج فقط بجملة Call + اسم الاجراء وهو MyConnection -وسنقوم بذلك اثناء عمل الأتصال بأذن الله -
والان سنقوم بكتابة كود اعداد اسماء الادوات على الـ Form وايضاً استعداء كود اجراء الأتصال وسيكون ف الحدث Form_Load كالتالى :
كود PHP:
Private Sub Form_Load()
'تنسيق اسماء الادوات على الفورم
Me.Caption = "Users Data"
lblNme.Caption = "User Name:"
lblTel.Caption = "User Tel:"
lblMail.Caption = "User E_Mail:"
lblCntry.Caption = "User Country"
lblDte.Caption = "User Join Date:"
txtNme.**** = ""
txtTel.**** = ""
txtMail.**** = ""
txtCntry.**** = ""
txtDte.**** = ""
cmdSave.Caption = "Save"
cmdDelete.Caption = "Delete"
cmdFind.Caption = "Find"
cmdEdit.Caption = "Edit"
cmdExit.Caption = "Exit"
'_______________________
'استدعاء كود اجراء الاتصال بالقاعدة
Call MyConnection
'______________________________
End Sub
والان الى كود الحفظ ولن تختلف الاكواد عن طريقة استخدامنا للـ ADO مع Access فالفارق كان فى تحديد الـ Provider فى الاتصال فقط لذا سأضع لكم الاكواد فقط لكل أداة
كود الحفظ :
كود PHP:
Private Sub cmdSave_Click()
On Error Resume Next
If Trim(txtNme.****) = "" Then
MsgBox "Please enter user name !", vbExclamation
ElseIf Trim(txtTel.****) = "" Then
MsgBox "Please enter user tel. !", vbExclamation
ElseIf Trim(txtMail.****) = "" Then
MsgBox "Please enter user E_Mail !", vbExclamation
ElseIf Trim(txtCntry.****) = "" Then
MsgBox "Please enter user coountry !", vbExclamation
ElseIf Trim(txtDte.****) = "" Then
MsgBox "Please enter date of user join !", vbExclamation
Else
Rs.AddNew
Rs.Fields!UsrNme = txtNme.****
Rs.Fields!UsrTel = txtTel.****
Rs.Fields!UsrMail = txtMail.****
Rs.Fields!UsrCntry = txtCntry.****
Rs.Fields!UsrDte = txtDte.****
Rs.Update
Call MyConnection
MsgBox "Data of user:" & " " & txtNme.**** & " " & "has saved successfully", vbInformation
End If
End Sub
كود الحذف :
كود PHP:
Private Sub cmdDelete_Click()
On Error Resume Next
If Rs.RecordCount = 0 Then
MsgBox "Database empty !", vbExclamation
Exit Sub
ElseIf Trim(txtNme.****) = "" Then
MsgBox "Please show data which you try to delete it frist !", vbExclamation
Else
Rs.Find "UsrNme='" & txtNme.**** & "'"
If Rs.EOF = True Then
MsgBox "Data you're trying to delete it not found !", vbCritical
Else
Rs.Delete
txtNme.**** = ""
txtTel.**** = ""
txtMail.**** = ""
txtCntry.**** = ""
txtDte.**** = ""
MsgBox "Data has deleted successfully", vbInformation
End If
End If
End Sub
كود التعديل :
كود PHP:
Private Sub cmdEdit_Click()
On Error Resume Next
If Rs.RecordCount = 0 Then
MsgBox "Database empty", vbExclamation
Exit Sub
End If
If Trim(txtNme.****) = "" Then
MsgBox "Please show data which you want to edit it !", vbExclamation
Else
Rs.Fields!UsrNme = txtNme.****
Rs.Fields!UsrTel = txtTel.****
Rs.Fields!UsrMail = txtMail.****
Rs.Fields!UsrCntry = txtCntry.****
Rs.Fields!UsrDte = Format$(txtDte.****, "mm/dd/yyy")
Rs.Update
Call MyConnection
MsgBox "Data of user:" & " " & "has edited successfully", vbInformation
End If
End Sub
كود عرض بيانات السجل عند النقر عليه فى الـDataGrid :
كود PHP:
Private Sub MyGrid_Click()
If MyGrid.RecordSelectors = True Then
txtNme.**** = MyGrid.Columns(0).****
txtTel.**** = MyGrid.Columns(1).****
txtMail.**** = MyGrid.Columns(2).****
txtCntry.**** = MyGrid.Columns(3).****
txtDte.**** = MyGrid.Columns(4).****
End If
وبهذا نكون قد انتهينا من تنفيذ مثالنا البسيط وها هو المثال :
http://www.mediafire.com/?eigzh2ednjm
[i]