المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )


مجلس برامج الكمبيوتر و الأنترنت كل مايخص الكمبيوتر والأنترنت من معلومات واخبار و برامجها

موضوع مغلق
قديم 04-02-2008, 01:55 AM
  #31
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

part3-إنشاء الإستعلام Query باستخدام عبارات SQL



1-إنشاء جملة أو عبارة الإدخال Insert

-قم بفتح قاعدة البيانات التى أنشأنها فى الجزء الاول من الموضوع
-اضغط على Query أو استعلام أو انشاء استعلام طبقا لإصدار أوفيس الذى تستخدمة
-قم باختيار وضع التصميم يعنى عرض التصميم وليس معالج إنشاء استعلام
-قم بإغلاق نافذة عرض الجداول أو Show Table

سنقوم الان بانشاء الاستعلام بدلالة
ProjectIDو ProjectNameو ProjectDescriptionو SequenceNumberو LastUpdateDate
إذهب إلى View أو عرض ثم اختر عرض SQL او SQL View ويمكن ذلك عن طريق عمل كليك يمين بالماوس ثم اختيارها من القائمة أو فى شريط القوائم
سنقوم الان بكتابة صيغة الاستعلام وهى


كود:
INSERT INTO Projects
كود:

(ProjectID, ProjectName, ProjectDescription, SequenceNumber, LastUpdateDate)
VALUES (@ProjectID, @ProjectName, @ProjectDescription, @SequenceNumber,
Date()+Time());

نلاحظ التالى


Insert into Projects ومعنى ذلك أننا سنتعامل مع الجدول Projects ومعنى العبارة قم بعمل إدخال إلى الجدول Projects


ماهو الذى سنقوم بإدخالة إلى الجدول Projects ؟

سنقوم بإدخال القيم التالية

VALUES (@ProjectID, @ProjectName, @ProjectDescription, @SequenceNumber,
Date()+Time());
القيم المذكورة على الترتيب
ولكن أين سنقوم بوضع هذة القيم؟
سنقوم بوضعها فى الحقول التالية على الترتيب
(ProjectID, ProjectName, ProjectDescription, SequenceNumber, LastUpdateDate)
بعد أن قمنا بكتابة صيغة الاستعلام يمكننا مشاهدتة عن طريق View ثم Design View
قم الان بعمل حفظ ستظهر لك رسالة تفيد باختيار اسم للاستعلام قم بحفظها باسم usp_InsertProject
و usp هذة هى اختصار للجملة user stored procedure وهذة التسمية ضرورية طالما أننا سنتعامل من خلال الفيجوال 2005

لكى نتأكد الان من صحة العمل
قم بالذهاب إلى View ثم اختر Datasheet View ستظهر لك نافذة تطلب منك إدخال ProjectID ثم بالضغط على ok سيطلب منك القيمة التالية ProjectName وفى النهاية سيقوم بإدراج التاريخ والوقت الحالى
تلقائيا دون أن يطلب منك ذلك
لكنة يبقى هناك سؤال مهم
ماذا سنكتب فى خانة ProjectID ؟
إذا نظرنا نظرة سريعة على الدرس الأول فى موضوع التعامل مع قواعد البيانات فإننا سنجد أننا قمنا بجعل محتوى الحقول GroupID و ProjectID و GroupProjectID رقم وأن من خصائص هذا الحقل أن طولة =
Replication ID ومعنى هذة الجملة Replication ID بصورة دقيقة تم توليدة أو إنشاؤة و ليس معناة مستنسخ فقد كنت مخطئا عندما عبرت عنة بأنة مستنسخ لأن هناك شرط فى عملية الاستنساخ وهو وجود الشىء
الذى سيتم النسخ منة ووجود النسخة الناشئة عن عملية النسخ وهذا الشرط لن يكون متوفرا فيكون المعنى هو مولد أو منشاء بضم الميم
ماهو هذا الرقم الذى سيتم وضعة ومن أين نأتى بة؟
سنقوم نحن بتوليد هذا الرقم وهو رقم تعريف أو رقم هوية ولة مواصفات خاصة يتم الحصول عليها من خلال الويندوز وهو رقم تجدونة كثيرا من ضمن الأرقام الخاصة ببعض قيم الرجيسترى المعرفة بل هو نفسة وهو بالتحديد رقم
Identities لذلك يتم اختصارة إلى ID إذن Identities هى تعريف أو دليل
-إن أرقام ID التى هى Identities تتكون من 32 رقم مقسمة إلى أربع مجموعات بين كل مجموعة ومجموعة يوجد فاصل وتحتوى على أرقام وحروف كبيرة Capital
3 مجموعات منها تتكون من أربعة رموز ومجموعة واحدة تتكون من 8 رموز ومجموعة أخيرة تتكون من 12 رمز مثل هذا
5D486569-90CA-434E-9FFD-EE5DABA81223
ويتم انشاؤها عشوائيا بدون ترابط بين الرقم السابق والرقم الحالى والرقم القادم
ولكن هناك خطاء نقوم دائما بارتكابة وبإصرار غريب وهو أننا نطلق علية لفظ رقم فكما رأينا هو ليس رقم فهو يحتوى على حروف وأرقام وهناك أيضا فواصل إذن هو ليس رقم إنة ID
كيف نقوم بعمل هذا ID ؟
-قم بفتح مشروع جديد ثم قم بإدراج TextBox وButton
-قم بوضعهما بشكل مناسب مثل هذا

قم بوضع الكود التالى فى TextBox1

كود:
TextBox1.Text = Guid.NewGuid.ToString.ToUpper()قم بوضع الكود التالى فى Button1

كود:
Clipboard.SetText(TextBox1.Text)قم الان بتجربتة لتوليد ID عشوائى
فى الكود الأول الخاص بمربع النص قمنا بإضافة ToUpper من أجل تحويل الحروف الصغيرة إلى حروف كبيرة
الكود الثانى معناه قم بإرسال الناتج إلى Clip Board ويمكنكم التأكد من ذلك بعد أن تضغط على الزر إنشاء بأن تقوم بعمل لصق Past داخل أى ملف نص لتجد ID الذى تم انشاؤة قد تم نسخة داخل ملف النص دون
الحاجة لأن تقوم بعمل Copy نسخ
2- إنشاء عبارة الاختيار Select..

نقوم الان بإنشاء استعلام Query بنفس الطريقة السابقة
قم بتغيير العرض إلى SQL View ثم اكتب الصيغة التالية

كود:
SELECT ProjectID, ProjectName, ProjectDescription, SequenceNumber, LastUpdateDateDate


كود:

FROM Projects
ORDER BY SequenceNumber;والمعنى واضح قم باختيار الحقول ProjectID, ProjectName, ProjectDescription, SequenceNumber, LastUpdateDateDate


من الجدول Projects


ثم قم بترتيبها ترتيبا تصاعديا إعتمادا على SequenceNumber

يعنى السجل الذى لة SequenceNumber 1 أولا ثم 2 ثم 3 .....الخ

3-إنشاء عبارة Update

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

كود:
UPDATE Projects SET ProjectName = @ProjectName, ProjectDescription = @ProjectDescription,

كود:

SequenceNumber = @SequenceNumber, LastUpdateDate = Date()+Time()
WHERE ProjectID=@ProjectID;ثم حفظ باسم usp_updateProject


4-إنشاء عبارة Delete

ووظيفتها الحذف
إنشاء استعلام ثم كتابة العبارة التالية



كود:

Delete
FROM Projects
WHERE ProjectID = @ProjectID;

ثم قم بحفظة باسم usp_DeleteProject
سنقوم الان بإضافة استعلام اخر
قم بإضافة Query
والصيغة هى

كود:
SELECT ProjectID, ProjectName, ProjectDescription, SequenceNumber, LastUpdateDate
FROM Projects
WHERE ProjectID=[@ProjectID];

ثم نقوم بحفظ باسم usp_SelectProjects
وكما ترون فإننا قمنا بالاختيار من ضمن مجموعة من المشاريع Projects عند وجود أكثر من مشروع

و يتبع......
__________________



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




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



التعديل الأخير تم بواسطة محمد المعمري ; 04-02-2008 الساعة 02:01 AM
محمد المعمري غير متواجد حالياً  
قديم 04-02-2008, 11:15 PM
  #32
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

Part4-تعريف Currency Manager
Currency Manager
ما هو Currency Manager أو مدير التعاملات؟
هو مجموعة من أدوات التحكم تقوم بإدارة الاتصال بقاعدة البيانات وربطها بالتطبيق وعرض البيانات داخل الفورم ولكن لكى نفهم معنى Currency Manager يجب أن نعرف مسار عملية الإتصال بقاعدة البيانات
-عندما تريد الإتصال بقاعدة البيانات بغرض التحكم فى محتوياتها فمعنى ذلك أنة قد صدر أمر منك من خلال هذا الإتصال الصادر منك إلى قاعدة البيانات وهذا يسمى Data Connection

وعلى ذلك ينبغى أن يتم الرد فى الوارد

ويسمى الوارد من قاعدة البيانات إليك Data Adaptor ويتضمن معلومات حول الجداول والحقول التى قمت باختيارها
إذن لدينا الان Data Connection و Data Adaptor
ولكن كيف يمكن معرفة محتويات القاعدة من خلال الإتصال وبمعنى أكثر وضوحا كيف وبأى طريقة سيتم عرض المحتويات
يتم تفصيل وتقسيم محتويات قاعدة البيانات فى جزء يعرف باسم DataSet حيث أنة يتم تحليل قاعدة البيانات إلى مكوناتها الرئيسية Tables وViews وStored Procedures و Functions ....الخ
كما يتم عرض مكونات الجداول أيضا من حقول

بعد ذلك تذهب كافة المعلومات إلى أداة الربط Binding Source ومن خلال اسمها فمن الواضح أنها تقوم بتثبيت الاتصال الذى تم إنشاؤة وربط المعلومات بالفورم الذى ستقوم من خلالة بعرض البيانات

إذن هذا هو مسار الاتصال بقاعدة بيانات يمكننا أن نقوم بالحصول على البيانات عن طريق سلوك نفس المسار باستخدام كود دون أن نقوم بربط كل مربع نص بالحقل المطلوب هل يمكن ذلك
مثال
نفترض أن لدينا قاعدة بيانات A وأن بها الجدول B وعدد من الحقول ba,bb,bc,bd وأنة أثناء عمل اتصال بقاعدة البيانات قام معالج الإتصال بعمل Dataset وقام بتسميتها مثلا CDataSet نستطيع أن نقوم بتجميع هذة المعلومات لإنشاء كود لإحضار البيانات التى فى الحقل ba وإظهارها فى TextBox داخل الفورم
أى أننا نريد احضار النص Text الموجود فى قاعدة البيانات A فى الجدول B فى الحقل ba وربط البيانات DataBindings بمربع النص TextBox وبما أن DataSet قام بإحضار ما يلزمنا فى العمل فإننا سنذهب إلية ولن نذهب إلى قاعدة البيانات
يمكننا ترتيب السطر السابق لنحصل على جملة مفيدة كالتالى
TextBox.DataBindings.Add
وAdd لأننا نريد إضافتة
ثم نريد عرض Text الموجود فى DataSet المسماة CDataSet وبالتحديد فى الجدول B الحقل ba
("Text", CDataSet, "B.ba")
فتكون الصيغة الكاملة
TextBox.DataBindings.Add("Text", CDataSet, "B.ba")
ويجب أ ن نعتبرها قاعدة ويمكنكم دائما استخدام هذة القاعدة لإنشاء الكود

خصائص Currency Manager
والمقصود بهذة الخصائص هو العمليات التى يمكننا تنفيذها
1-Bindings
لربط مجموعة من العناصر ليتم التحكم بها من خلال Currency Manager
2-Countr

لمعرفة عدد الصفوف المرتبطة مع Currency Manager
3-Current

لاستدعاء الصف المرتبط حاليا مع Currency Manager
4-List

لعرض قائمة تكون مرتبطة بقاعدة البيانات مثل DataViews
5-Position

للتعامل مع الصف الحالى اعتمادا على رقم هذا الصف داخل قاعدة البيانات
الوظائف التى يمكن تنفيذها من خلال Currency Manager
1- AddNew إضافة جديد
2- CancelCurrentEdit إلغاء التغييرات
3- EndCurrentEdit إنهاء وحفظ
4- Re fresh تحديث وإعادة تعبئة البيانات
5- RemoveAt إزالة
ولكى نفهم ما هو الفرق بين الخاصية والوظيفة فإننا سنقوم بعمل مثال بسيط جدا
مثال : الربط البسيط
الغرض من هذا المثال هو كيف تتعلم أن تقوم بابتكار الكود دون أن تظل تبحث عن كود لإنشاء برنامجك
الان نقوم بعمل ربط مباشر وبسيط للفورم بقاعدة البيانات دون أن نستخدم Binding Navigator
مشروع جديد يحتوى على 4 زر Button و4 TextBox وكذلك 4 Lable
قم بتسمية الأزرار كالتالى
(السجل الأول, السابق, التالى, السجل الأخير)
فى خصائص Lable قم بتسميتها فى Text إلى الإسم , اسم الأب , المدينة , تليفون المنزل أو كما تريد أن تختار من حقول قاعدة البيانات وقم بترتيب TextBox فى شكل مناسب
-كليك يمين على الفورم ثم اذهب إلى خصائص Properties ثم قم بالذهاب إلى DataBindings ومنها قم بالضغط على Text ثم قم بالضغط على زر مربع الإختيار الموجود بة الخيار non ثم اضغط على Add project Data Source
-يظهر لك الان معالج إعداد مصادر البيانات قم باختيار Database ثم Next
-قم باختيار New Connection ثم يظهر لك معالج الإتصال بقاعدة البيانات قم باضغط على Browse ثم قم باختيار قاعدة البيانات التى تريد الاتصال بها وهى طبعا Northwind
-قم بالموافقة على إضافة قاعدة البيانات إلى المشروع ثم قم بالموافقة على حفظ المشروع باسم NorthwindConnectionString ثم Next تظهر لك الان محتويات قاعدة البيانات
قمت باختيار الجدول المعتاد employees والأربعة حقول وهى Firest Name وSecond Name وCity وHome Phone
-كليك يمين على مربع النص الأول الخاص بالإسم واذهب إلى خصائصة ثم إلى Data Binding ثم Text وقم بفتح Other Data Sources ثم NorthwindData Set ثم Employeesثم قم بالضغط على First Name
قم بتجربة البرنامح الان يظهر لك الإسم فى مربع النص
نحن الان قمنا بربط مربع النص TextBox1
الكود
قم بكتابة الكود التالى فى الفورم

كود:
Private m_CurrencyManager As CurrencyManager
هذة العبارة اختيارية m_CurrencyManager ويمكنك وضع أى جملة أو كلمة أو حتى حرف بدلا منها واستخدامها فى المثال
وستجد أن هناك كود تم إنشاؤة تلقائيا وهو هذا

كود:
Me.EmployeesTableAdapter.Fill(Me.NorthwindDataSet. Employees)
قم بتعبئة ما قمنا باختيارة من خلال Data Adaptor وهو موجود فى
كود:
(Dataset.Table (نقوم الان بربط مربع النص TextBox2 بالحقل LastName فإذا قمنا بتطبيق القاعدة

كود:
TextBox.DataBindings.Add("Text", CDataSet, "B.ba")
فإننا نستطيع ببساطة أن نقوم بإنشاء الأكواد الخاصة بمربعات النصوص الثلاثة الباقية فتكون كالتالى
كود:
TextBox2.DataBindings.Add("Text", NorthwindDataSet, "Employees.LastName")
TextBox3.DataBindings.Add("Text", NorthwindDataSet, "Employees.City")
TextBox4.DataBindings.Add("Text", NorthwindDataSet, "Employees.HomePhone")
وسنقوم بوضع هذا الكود داخل الفورم
يمكنكم الان إزالة الرابط الذى يربط مربع النص الأول بقاعدة البيانات وذلك عن طريق الذهاب إلى خصائص TextBox1 ثم إلى DataBinding ومنة إلى Text واختيار Non ثم كتابة سطر الكود الخاص بة وهو كالتالى

كود:
TextBox1.DataBindings.Add("Text", NorthwindDataSet, "Employees.FirstName")
.ولكننا أضفنا هذا السطر فى بداية الفورم

كود:
Private m_CurrencyManager As CurrencyManager
فما هو تعريف CurrencyManager ؟
نقوم الان بوضع تعريف لة ويكون التعريف طبقا للقاعدة التالية

كود:
m_CurrencyManager = DirectCast(Me.BindingContext(DataSet, "Table"), CurrencyManager)
وعندما ننظر إلى المثال الذى نحن بصددة نجد أن DataSet هنا هى NorthwindDataSet ونجد أن الجدول Table هو Employees فيكون التعريف على النحو التالى

كود:
m_CurrencyManager = DirectCast(Me.BindingContext(NorthwindDataSet, "Employees"), CurrencyManager)
ويمكنكم القياس على ذلك
الان قم بوضع تعريف CurrencyManager داخل الفورم ثم قم بتجربة البرنامج الان ستجد أن مربعات النصوص الأربعة قد تم تعبئتها بالبيانات
نحتاج الان إلى أكواد للإزرار
-فى زر الأول

كود:
m_CurrencyManager.Position = 0
-فى زر السابق

كود:
m_CurrencyManager.Position -= 1
-فى زر التالى

كود:
m_CurrencyManager.Position += 1
-فى زر الأخير

كود:
m_CurrencyManager.Position = m_CurrencyManager.Count – 1
يمكنكم تجربة المثال السابق فهو مهم
ويفضل اختيار قاعدة بيانات أخرى أو على الأقل جدول اخر وأضعف الإيمان حقول أخرى
وهذا هو رابط للمشروع
http://www.zshare.net/download/35367836c21be1
ولكن ليس هذا هو كل شىء فيبدوا أن هناك عدد من الوظائف نحتاج إليها مثل الإضافة والإزالة والبحث

أنتهى درس اليوم ... ويتبع........
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 06-02-2008, 04:19 PM
  #33
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

Part5
1-تطبيق على استخدام مدير التعاملات(Currency Manager)الجزء الأول

الجزء الأول
اليوم سنقوم بعمل تطبيق لما تعلمناة فى Part 4 الذى هو Currency Manager وسنتعلم كيف نستخدم الوظائف مثل AddNew وCancelCurrentEdit وEndCurrentEdit وRemoveAt والمثال الذى سنتعامل معة اليوم يصلح لأن يستخدم للتعامل مع بيانات الأفراد والمعلومات الخاصة بهم مثل موظف أو تلميذ أو ملف لأحد المرضى فى مستشفى أو ما شابة ذلك
أولا يجب أن نقوم بإنشاء قاعدة بيانات جديدة وستحتوى قاعدة البيانات على جدول واحد بة 7 حقول
يمكننا تسمية الجدول باسم مثل Information وتسمية قاعدة البيانات بأى اسم
الحقول هى
1-اسم الحقل ID
Data Type=AutoNumber
Indexed= Yes (No Duplicates)
2- FirstName
3- LastName
4- HomePhone
وكلها نص Text
5- Grade
Data Type=Number
6- BirthDate
Data Type= Date/Time
7- PictureFile
Data Type= Text
قم بفتح مشروع جديد ثم ضع المكونات الاتية داخل الفورم وهى كالتالى
-عدد 3 TextBox
-Date Time Picker
- عدد 6 RadioButtons
- PictureBox
-عدد 5 Lable
-عدد 11 Buttons
-OpenFileDialog
-PrintPreviewDialog
أمامنا الان عملية ترتيب هذة المكونات لتكون شكل ملائم ومناسب
-يجب وضع الستة RadioButton داخل GroupBox ونقم بتسميتها فى Text باسم مناسب
-فى خصائص PictureBox يمكنكم تغيير BackColor إلى أى لون كما يفضل تغيير خاصية Size إلى المقياس 3/2
بمعنى أن يكون عرض مربع الصورة إلى طول مربع الصورة = 2 إلى 3 يعنى لو الطول 15 يكون العرض 10 ولو العرض 80 يكون الطول 120 وهكذا
-من المستسحن تغيير الخاصية SizeMode إلى Zoom لكى تستطيع مشاهدة جوانب الصورة كاملة شاملة الحواف
-من الممكن تغيير خاصية الإسم فى الأزرار الخاصة بالتالى فى Text وبدلا من أن نكتب السابق والتالى يمكننا كتابة
الأول كالتالى |< والأخير هكذا >| وكلا من < و > للسابق والتالى فتصبح أزرار التحكم بصورة أفضل
إليكم 2 تصميم لهذا المشروع يمكنكم اختيار أحدهما أو ابتكار تصميم ثالث

أو هذا التصميم

أو ابتكار شكل جديد اخر اعتمادا على المكونات التى لديكم ومن المستحسن وضع كل محموعة من الأزرار داخل GroupBox فهى تظهر الشكل أكثر تماسكا وتعطية صورة احترافية
بعد الإنتهاء من التصميم يجب حفظة ونقل قاعدة البيانات إلى المجلد الذى قمت بحفظ التطبيق الجديد بة
الان ندخل إلى مرحلة التعريفات وشرح الأكواد وكتابتها
التسمية
هناك بعض المكونات يفضل تسميتها بأى اسم مناسب كالتالى
مربعات النصوص الثلاثة يتم تسميتها
txtFirstName وtxtLastName وtxtHomePhone
مجموعة GroupBox2 التى تحتوى على RadioButtons يمكن تسميتها إلى grpGrade
Lable الموجود أسفل صندوق الصورة يتم تسميتة إلى lblPhotoFile
وأخيرا قم بوضع Lable جديد فى أى مكان وقم بتسميتة lblGrade وقم بجعل الخاصية Visible إلى False
***
2-تطبيق على استخدام مدير التعاملات(Currency Manager)الجزء الثانى

الكود
سنقوم باستيراد أسماء المجالات NameSpaces وهى


كود:
Imports System.Data
Imports System.Data.OleDb
وطبعا سيتم كتابتها فى General التى تسمى بالتصريحات العامة وهى المنطقة التى تسبق أسطر إدخال الكود فى أعلى الصفحة


ثم الإعلان عن المتغيرات
كود:
Dim InfoConnection As OleDbConnection
Dim InfoCommand As OleDbCommand
Dim InfoAdapter As OleDbDataAdapter
Dim InfoTable As DataTable
Dim InfoManager As CurrencyManager
Dim InfoState As String
Dim InfoBookmark As Integer
يجب علينا الان أن نقوم بعمل الإتصال بقاعدة البيانات وكذلك إنشاء عوامل الإتصال DataSet وTable وDataAdapter وتعريف المتغيرات لذلك سنكتب الكود التالى فى الفورم

ولكن ما معنى ShowRelated و SetState
الأول ShowRelated وهو استدعاء لعرض Related وهذا الإسم اختيارى وأقصد ية المتعلقات ولكن ما هى المتعلقات ؟
هى الصورة وكذلك العناصر التى فى داخل المجموعة grpGrade والذى سنقوم باستخدام واسطة بينة وبين InfoTable ومذة الواسطة هى التى ستتحكم فى الإدخال والإخراج هى lblGrade ولكن ماهى محتويات Related هذا؟
لتعريف ذلك قم بكتابة الكود التالى

كود:

Private Sub ShowRelated()
Select Case lblGrade.Text
Case "1"
RadioButton1.Checked = True
Case "2"
RadioButton2.Checked = True
Case "3"
RadioButton3.Checked = True
Case "4"
RadioButton4.Checked = True
Case "5"
RadioButton5.Checked = True
Case "6"
RadioButton6.Checked = True
End Select
Call ShowPhoto()
ولكننا نلا حظ أننا فى نهاية الكود وضعنا Call ShowPhoto() فماذا سيكون الكود


كود:
Private Sub ShowPhoto()
If lblPhotoFile.Text <> "" Then
Try
PictureBox1.Image = Image.FromFile(lblPhotoFile.Text)
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاء فى تحميل الصورة", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
PictureBox1.Image = Nothing
End If
End Sub
ثم نقوم بإنشاء حدث الإغلاق بنفس الطريقة التى اتبعناها فى المثال رقم 2 (الإتصال بقاعدة البيانات وعرض محتوياتها)

كود:

Private Sub frmInfo_FormClosing(ByVal sender As Object, _
ByVal e As System.Windows.Forms. _
FormClosingEventArgs) Handles Me.FormClosing
If InfoState = "Edit" Or InfoState = "Add" Then
MessageBox.Show("يجب إنهاء التحرير أولا", "", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
e.Cancel = True
Else
Try
Dim InfoAdapterCommands As New OleDbCommandBuilder(InfoAdapter)
InfoAdapter.Update(InfoTable)
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاء فى حفظ قاعدة البيانات", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
InfoConnection.Close()
InfoCommand.Dispose()
InfoAdapter.Dispose()
InfoTable.Dispose()
End If
End Sub
ثم نقوم بوضع الكود الخاص بحالة التغير الخاصة لكل زر داخل grpGrade يعنى تحديد الحالة التى يكون كل RadioButton فيها Checked أو non Checked

كود:

Private Sub RadioButtonGrade_CheckedChanged _
(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged _
, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged _
, RadioButton5.CheckedChanged, RadioButton6.CheckedChanged
Dim ButtonChecked As RadioButton = CType(sender, RadioButton)
Select Case ButtonChecked.Text
Case "1"
lblGrade.Text = "1"
Case "2"
lblGrade.Text = "2"
Case "3"
lblGrade.Text = "3"
Case "4"
lblGrade.Text = "4"
Case "5"
lblGrade.Text = "5"
Case "6"
lblGrade.Text = "6"
End Select
End Sub
يجب الان أن نقوم بإنشاء إطار الطباعة أى الكادر الذى ستتم فية طباعة المعلومات وسأقوم بوضع كود سريع يمكنكم تخصيصة من ناحية الحجم والخطوط ....الخ

كود:

Private Sub PrintInfo(ByVal sender As Object _
, ByVal e As Drawing.Printing.PrintPageEventArgs)
Dim MyPen As Pen = New Pen(Color.Black, 3)
e.Graphics.DrawRectangle(MyPen, e.MarginBounds.X, e.MarginBounds.Y, 200, 350)
Dim MyFont As Font = New Font("Arial", 12, FontStyle.Bold)
Dim S As String = "أكتب هنا إسم المؤسسة أو الهيئة"
Dim SSize As SizeF = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black _
, e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)) _
, e.MarginBounds.Y + 15)
e.Graphics.DrawImage(PictureBox1.Image, _
e.MarginBounds.X + 25, e.MarginBounds.Y + 50, 150, 200)
e.HasMorePages = False
MyFont = New Font("Arial", 14)
Dim Y As Integer = e.MarginBounds.Y + 260
S = txtFirstName.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
Y += CInt(MyFont.GetHeight(e.Graphics))
S = txtLastName.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
Y += CInt(MyFont.GetHeight(e.Graphics))
S = "Grade " + lblGrade.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
End Sub
ثم نقوم بانشاء حدث الإنتقال والتركيز على مربع النص الأول عند الإضافة والتحرير

كود:
Private Sub txtFirstName_KeyPress(ByVal sender As System.Object _
, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles txtFirstName.KeyPress
If e.KeyChar = ControlChars.Cr Then
txtLastName.Focus()
End If

ثم أكواد الأزرار
فى زر الأول

كود:
InfoManager.Position = 0
Call ShowRelated()
فى زر السابق

كود:
InfoManager.Position -= 1
Call ShowRelated()
فى زر التالى

كود:
InfoManager.Position += 1
Call ShowRelated()
فى زر الأخير

كود:
InfoManager.Position = InfoManager.Count - 1
Call ShowRelated()
فى زر جديد أو إضافة

كود:
InfoBookmark = InfoManager.Position
Call SetState("Add")
InfoManager.AddNew()
RadioButton1.Checked = True : lblGrade.Text = "1"
PictureBox1.Image = Nothing
lblPhotoFile.Text = ""
فى زر إلغاء أو تراجع

كود:
InfoManager.CancelCurrentEdit()
If InfoState = "Add" Then
InfoManager.Position = InfoBookmark
End If
Call ShowRelated()
Call SetState("View"
فى زر الحفظ


كود:
If txtLastName.Text.Trim = "" Then
MessageBox.Show("يجب إدخال إسم العائلة", "إدخال خاطىء", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
txtLastName.Focus()
Exit Sub
End If
Dim SavedItem As String = txtLastName.Text
Dim SavedRow As Integer
InfoManager.EndCurrentEdit()
InfoTable.DefaultView.Sort = "LastName"
SavedRow = InfoTable.DefaultView.Find(SavedItem)
InfoManager.Position = SavedRow
Call ShowRelated()
Call SetState("View")
فى زر تحرير

كود:
Call SetState("Edit")
فى زر تحميل الصورة

كود:
Try
If OpenFileDialog1.ShowDialog _
= Windows.Forms.DialogResult.OK Then
lblPhotoFile.Text = OpenFileDialog1.FileName
Call ShowPhoto()
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاءفى فتح الصورة", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
فى زر حذف

كود:
If MessageBox.Show("هل أنت متأكد من أنك تريد حذف هذا السجل" _
, "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
InfoManager.RemoveAt(InfoManager.Position)
Call ShowRelated()
End If
Call SetState("View")
ثم زر الطباعة

كود:

Dim InfoDocument As Drawing.Printing.PrintDocument
InfoDocument = New Drawing.Printing.PrintDocument()
InfoDocument.DocumentName = "Info"
AddHandler InfoDocument.PrintPage, _
AddressOf Me.PrintInfo
Dim SavedPosition As Integer = InfoManager.Position
PrintPreviewDialog1.Document = InfoDocument
PrintPreviewDialog1.ShowDialog()
InfoDocument.Dispose()
InfoManager.Position = SavedPosition
وزر إنهاء

كود:

Close()


ورابط تحميل المشروع
http://www.zshare.net/download/37177295a64f52

أنتهى درس اليوم و الأمس معاً ,,,,,,,,, و يتبع.......
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 08-02-2008, 01:51 AM
  #34
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

3-مثال اخر على استخدام Currency Manager

المثال


أولا يجب أن نقوم بإنشاء قاعدة بيانات جديدة وستحتوى قاعدة البيانات على جدول واحد بة 7 حقول يمكننا تسمية الجدول باسم مثل Information وتسمية قاعدة البيانات بأى اسم مثلا Informations
الحقول هى
1-اسم الحقل ID
Data Type=AutoNumber
Indexed= Yes (No Duplicates)
2- FirstName
3- LastName
4- HomePhone
5- Grade
6- PictureFile
وكلها نص Text
7- BirthDate
ثم قم بحفظ قاعدة البيانات بصورة Access2000
قم بفتح مشروع جديد مستخدما فيجوال بيسيك 2005 مكوناتة كالتالى
-عدد 3 TextBox
-Date Time Picker
- PictureBox
-عدد 6 Lable
-عدد 12 Buttons
أمامنا الان عملية ترتيب هذة المكونات لتكون شكل ملائم ومناسب
-فى خصائص PictureBox يمكنكم تغيير BackColor إلى أى لون كما يفضل تغيير خاصية Size إلى المقياس 3/2بمعنى أن يكون عرض مربع الصورة إلى طول مربع الصورة = 2 إلى 3 يعنى لو الطول 15 يكون العرض 10 ولو العرض 80 يكون الطول 120 وهكذا
-من المستسحن تغيير الخاصية SizeMode إلى Zoom لكى تستطيع مشاهدة جوانب الصورة كاملة شاملة الحواف
-من الممكن تغيير خاصية الإسم فى الأزرار الخاصة بالتالى فى Text وبدلا من أن نكتب السابق والتالى يمكننا كتابة
الأول كالتالى |< والأخير هكذا >| وكلا من < و > للسابق والتالى فتصبح أزرار التحكم بصورة أفضل
ولتغيير حجم Lable الذى سيكون أسفل صندوق الصورة قم بتغيير الخاصية Autosize إلى False
سنقوم بتسمية بعض المكونات وهذا الموضوع اختيارى لكننى قمت بإعادة تسمية المكونات التالية
Form1=frmInfo
Lable أسفل الصورة= lblPhotoFile
TextBox1= txtFirstName
TextBox2=txtLastName
TextBox3=txtHomePhone
TextBox4=txtGrade
btnFirstو btnPrevious و btnNext و btnLast و btnEdit و btnSave و btnCancel و btnAdd و btnDelete و btnPrint و btnExit و btnLoadPhoto
قم الان بحفظ المشروع ثم قم بنقل قاعدة البيانات إلى المجلد الذى بة المشروع
ندخل الان إلى مرحلة كتابة الكود

سنقوم باستيراد أسماء المجالات NameSpaces التى سنحتاجها وهى

كود:
Imports System.Data
Imports System.Data.OleDb

وطبعا سيتم كتابتها فى General التى تسمى بالتصريحات العامة وهى المنطقة التى تسبق أسطر إدخال الكود فى أعلى الصفحة
ثم الإعلان عن المتغيرات

كود:
Dim InfoConnection As OleDbConnection
Dim InfoCommand As OleDbCommand
Dim InfoAdapter As OleDbDataAdapter
Dim InfoTable As DataTable
Dim InfoManager As CurrencyManager
Dim InfoState As String
Dim InfoBookmark As Integer

يجب علينا الان أن نقوم بعمل الإتصال بقاعدة البيانات وكذلك إنشاء مكونات الإتصال DataSet وTable وDataAdapter وتعريف المتغيرات
لتعريف InfoConnection فإن الكود يكون التالى

كود:
InfoConnection = New OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " _
+ Application.StartupPath + "\..\..\Informations.mdb")
InfoConnection.Open()ثم InfoCommand


ثم InfoAdapter


كود:
InfoAdapter = New OleDbDataAdapter()
InfoAdapter.SelectCommand = InfoCommand
InfoTable = New DataTable()
InfoAdapter.Fill(InfoTable)
ثم نقوم بوضع DataBinding

كود:
txtFirstName.DataBindings.Add("Text", InfoTable, "FirstName")
txtLastName.DataBindings.Add("Text", InfoTable, "LastName")
txtHomePhone.DataBindings.Add("Text", InfoTable, "HomePhone")
txtGrade.DataBindings.Add("Text", InfoTable, "Grade")
DateTimePicker1.DataBindings.Add("Text", InfoTable, "BirthDate")
lblPhotoFile.DataBindings.Add("Text", InfoTable, "PictureFile")ثم InfoManager


كود:
InfoManager = DirectCast(Me.BindingContext(InfoTable), CurrencyManager)ثم Call

كود:
Call SetState("View")
Call ShowPhoto()
ويتم كتابة كل ما سبق فى الفورم
ثم نقوم بإنشاء SetState وهى تحدد أوضاع الأزرار وصناديق النصوص من ناحية نشط أو غير نشط وللقراءة فقط

كود:

Private Sub SetState(ByVal AppState As String)
InfoState = AppState
Select Case AppState
Case "View"
btnFirst.Enabled = True
btnPrevious.Enabled = True
btnNext.Enabled = True
btnLast.Enabled = True
btnEdit.Enabled = True
btnSave.Enabled = False
btnCancel.Enabled = False
btnAdd.Enabled = True
btnDelete.Enabled = True
btnPrint.Enabled = True
btnExit.Enabled = True
txtFirstName.ReadOnly = True
txtLastName.ReadOnly = True
txtHomePhone.ReadOnly = True
DateTimePicker1.Enabled = False
btnLoadPhoto.Enabled = False
txtGrade.ReadOnly = True
Case "Edit", "Add"
btnFirst.Enabled = False
btnPrevious.Enabled = False
btnNext.Enabled = False
btnLast.Enabled = False
btnEdit.Enabled = False
btnSave.Enabled = True
btnCancel.Enabled = True
btnAdd.Enabled = False
btnDelete.Enabled = False
btnPrint.Enabled = False
btnExit.Enabled = False
txtFirstName.ReadOnly = False
txtLastName.ReadOnly = False
txtHomePhone.ReadOnly = False
DateTimePicker1.Enabled = True
btnLoadPhoto.Enabled = True
txtGrade.ReadOnly = False
End Select
txtFirstName.Focus()
End Sub
ثم ShowPhoto

كود:

Private Sub ShowPhoto()
If lblPhotoFile.Text <> "" Then
Try
PictureBox1.Image = Image.FromFile(lblPhotoFile.Text)
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاء فى تحميل الصورة", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
PictureBox1.Image = Nothing
End If
End Sub
ثم نقوم بإنشاء حدث الإغلاق بنفس الطريقة التى اتبعناها فى موضوع (الإتصال بقاعدة البيانات وعرض محتوياتها)

كود:

Private Sub frmInfo_FormClosing(ByVal sender As Object, _
ByVal e As System.Windows.Forms. _
FormClosingEventArgs) Handles Me.FormClosing
If InfoState = "Edit" Or InfoState = "Add" Then
MessageBox.Show("يجب إنهاء التحرير أولا", "", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
e.Cancel = True
Else
Try
Dim InfoAdapterCommands As New OleDbCommandBuilder(InfoAdapter)
InfoAdapter.Update(InfoTable)
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاء فى حفظ قاعدة البيانات", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
InfoConnection.Close()
InfoCommand.Dispose()
InfoAdapter.Dispose()
InfoTable.Dispose()
End If
End Sub
ثم نقوم بإنشاء إطار طباعة الكارت أو البطاقة التعريفية وسوف نقوم برسم هذا الإطار كالتالى وهذا مثال فقط للإطار ويمكنكم تطويرة حسب الرغبة


كود:
Private Sub PrintInfo(ByVal sender As Object _
, ByVal e As Drawing.Printing.PrintPageEventArgs)
Dim MyPen As Pen = New Pen(Color.Black, 3)
e.Graphics.DrawRectangle _
(MyPen, e.MarginBounds.X, e.MarginBounds.Y, 200, 350)
Dim MyFont As Font = New Font("Arial", 12, FontStyle.Bold)
Dim S As String = "أكتب هنا إسم المؤسسة أو الهيئة"
Dim SSize As SizeF = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black _
, e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)) _
, e.MarginBounds.Y + 15)
e.Graphics.DrawImage(PictureBox1.Image, _
e.MarginBounds.X + 25, e.MarginBounds.Y + 50, 150, 200)
e.HasMorePages = False
MyFont = New Font("Arial", 14)
Dim Y As Integer = e.MarginBounds.Y + 260
S = txtFirstName.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
Y += CInt(MyFont.GetHeight(e.Graphics))
S = txtLastName.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
Y += CInt(MyFont.GetHeight(e.Graphics))
S = txtGrade.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
End Sub
ثم نقوم بانشاء حدث الإنتقال والتركيز على مربع النص الأول عند الإضافة والتحرير

كود:

Private Sub txtFirstName_KeyPress(ByVal sender As _
System.Object, ByVal e As System.Windows.Forms. _
KeyPressEventArgs) Handles txtFirstName.KeyPress
If e.KeyChar = ControlChars.Cr Then
txtLastName.Focus()
End If
End Sub
وأخيرا الأكواد الخاصة بأزرار المشروع
فى زر الأول

كود:

InfoManager.Position = 0
Call ShowPhoto()
فى زر السابق

كود:

InfoManager.Position -= 1
Call ShowPhoto()
فى زر التالى

كود:

InfoManager.Position += 1
Call ShowPhoto()
فى زر الأخير

كود:

InfoManager.Position = InfoManager.Count - 1
Call ShowPhoto()
ثم إضافة

كود:

InfoBookmark = InfoManager.Position
Call SetState("Add")
InfoManager.AddNew()
PictureBox1.Image = Nothing
lblPhotoFile.Text = "
ثم إلغاء

كود:

InfoManager.CancelCurrentEdit()
If InfoState = "Add" Then
InfoManager.Position = InfoBookmark
End If
Call ShowPhoto()
Call SetState("View"
ثم حفظ

كود:

If txtLastName.Text.Trim = "" Then
MessageBox.Show("يجب إدخال إسم العائلة", "إدخال خاطىء", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
txtLastName.Focus()
Exit Sub
End If
Dim SavedItem As String = txtLastName.Text
Dim SavedRow As Integer
InfoManager.EndCurrentEdit()
InfoTable.DefaultView.Sort = "LastName"
SavedRow = InfoTable.DefaultView.Find(SavedItem)
InfoManager.Position = SavedRow
Call ShowPhoto()
Call SetState("View")
ثم تحرير

كود:

Call SetState("Edit")
ثم تحميل صورة

كود:

Try
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
lblPhotoFile.Text = OpenFileDialog1.FileName
Call ShowPhoto()
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاءفى فتح الصورة", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
ثم طباعة

كود:

Dim InfoDocument As Drawing.Printing.PrintDocument
InfoDocument = New Drawing.Printing.PrintDocument()
InfoDocument.DocumentName = "Info"
AddHandler InfoDocument.PrintPage, AddressOf Me.PrintInfo
Dim SavedPosition As Integer = InfoManager.Position
PrintPreviewDialog1.Document = InfoDocument
PrintPreviewDialog1.ShowDialog()
InfoDocument.Dispose()
InfoManager.Position = SavedPosition
ثم حذف

كود:

If MessageBox.Show("هل أنت متأكد من أنك تريد حذف هذا السجل" _
, "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
InfoManager.RemoveAt(InfoManager.Position)
Call ShowPhoto()
End If
Call SetState("View")
ثم إغلاق

كود:

Close()

وهذا رابط تحميل المشروع
http://www.zshare.net/download/37241619ac3ce2/0

أنتهى درس اليوم و يتبع..........
/////////////////////
مبرمج آل معمر
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 08-02-2008, 05:54 PM
  #35
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Arrow رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

Part6-العمل مع قواعد بيانات SQL
***
أولا:الإتصال بقاعدة بيانات SQL فى SQL 2005 Express

أخذنا فكرة سريعة عن كيفية إنشاء قاعدة بيانت SQL باستخدام SQL 2005 Express فى Part 1 والان يمكننا أن نبداء فى التعامل مع قواعد بيانات SQL وفى البداية يجب أن نعرف أولا كيفية الإتصال بقاعدة بيانات SQL ولعمل ذلك قم بتحميل قاعدة بيانات Northwind من الرابط التالى
http://www.zshare.net/download/4017341c9d922d
ثم قم بفك الضغط وقم بنسخها إلى دليل مناسب وليكن C
1-قم بفتح الفيجوال ستوديو 2005 ثم اذهب إلى ToolBar وبالتحديد إلى View وقم باختيار Server Explorer سيظهر لك الان مستعرض السيرفر أقصى اليسار فى نفس مكان ToolBox

2-كليك يمين بالماوس على Data Connection ثم قم باختيار Add Connection

3-يظهر لك الان لوحة إضافة الإتصال وهى تفتح فى الوضع الإفتراضى على Microsoft Access Database File قم بالضغط على Change
4- قم باختيار Microsoft SQL Server Database File ثم OK

5-قم بالضغط على Browse ثم اذهب إلى الدليل الذى قمت بوضع قاعدة البيانات بة

6-للتأكد من أن الإتصال قد تم بصورة صحيحة قم بالضغط على Test Connection ثم OK

7-الان تم الاتصال بقاعدة البيانات ويمكنك استعراض محتوياتها من جداول وغيرها من المكونات وذلك بالضغط على +


أنتهى درس اليوم و يتبعـــــــــ..............................
///////////////////////
مبرمج آل معمر
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 10-02-2008, 12:49 AM
  #36
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

ثانيا :إنشاء مصدر البيانات وإضافة عناصر التحكم

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

-سنقوم الان بفتح مشروع جديد ثم نقوم بتنشيط الإتصال عن طريق عمل Re fresh وذلك عن طريق كليك يمين على NORTHWIND.MDF الموجودة فى Server Explorer أو انشاء اتصال جديد إذا لم نكن قمنا بعمل الاتصال من قبل
-فى أقصى اليمين وفى Solution Explorer قم بالضغط على Data Sources ثم اضغط على Add New Data Source
-قم باختيار Database ثم Next سوف تجد NORTHWIND.MDF فى مربع الاتصال متصلة بالفعل فإن لم تكن متصلا حتى هذة اللحظة يمكنك الاتصال وذلك عن طريق الضغط على New Connection ثم اتباع الخطوات السابقة ثم Next


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

-قام المعالج الان باختيار اسم افتراضى للاتصال وهو NORTHWNDConnectionString يمكنك تغيير الاسم أو الاستمرار على الاسم الحالى ثم اضغط Next
-سيقوم المعالج الان بفتح لوحة اختيار مكونات قاعدة البيانات قم بالضغط على علامة + الموجودة بجانب Tables سيتم عرض كل الجداول فى هذا المثال سنقوم باختيار عدد من الجداول وهى Customers و Orders ثم Orders Details لذلك قم بالتأشير أمام هذة الجداول وستجد أن المعالج قد قام بوضع اسم افتراضى DataSet وهو NORTHWNDDataSet يمكنك الإستمرار وذلك بالضغط على Finish

-يظهر لنا الان فى Data Source الجداول التى قمنا باختيارها
-قم بالضغط على الجدول الأول Customers فتظهر لك قائمة منسدلة بها عدد من الخيارات قم باختيار Details

-قم بالضغط على الجدول Customer بزر الماوس الأيسر مع الاسمرار بالضغط ثم قم بسحبة إلى داخل الفورم سيتم إدراج مكونات الجدول تلقائيا إلى داخل الفورم ويمكنك الان تغيير أسماء العناصر المدرجة وترتيب العناصر كما تريد
-سنقوم بعمل نفس الطريقة السابقة مع الجدول Orders ثم مع جدول Order Details ولكن مع اختيار DataGirdView بدلا من Details ويمكننا تغيير حجمهما ليصبحان ملائمان لحجم الفورم أو كما تريد
قم الان بتجربة المشروع عن طريق الضغط على F5


أنتهى درس اليوم و يتبع.........
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 10-02-2008, 07:36 PM
  #37
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

ثالثا : طريقة إضافة الإستعلام باستخدام FillBy

لكى نتعامل مع هذاالمشروع يجب علينا أن نفهم الغرض منة وكيف تسير الأمور......
-يحتوى الجدول الأول Customers على بيانات العميل و كل عميل لة ID أى CustomerID بالإضافة لباقى البيانات الخاصة بكل عميل
-الجدول الثانى Orders ويتضمن بيانات خاصة بالطلبية مثل OrderID ولا بد أن تكون الطلبية هذة موجهة إلى أحد العملاء لذلك فإن الجدول
هذا يحتوى أيضا على تعريف العميل CustomerID بالإضافة إلى باقى البيانات مثل التاريخ...الخ
-الجدول الثالث Order Details يحتوى على محتويات الطلبية وهى OrderID وPrudectID الذى هو رقم تعريف المنتج وكذلك الكمية Quntity وسعر الوحدة UnitPrice وكذلك الخصم Discount إذن من خلال ما سبق تكون طريقة ربط هذاة الجداول فى منتهى السهولة حيث أن ربط الحقل Customer ID الموجود فى الجدول Customers بالحقل CustomerID الموجود بالجدول Orders ثم ربط الحقل OrderID الموجود بالجدول Orders بالحقل OrderID الموجود بالجدول Order Details هو الطريقة المثالية للربط يمكن لمن يريد تجربة ذلك أن يقوم بإنشاء قاعدة بيانات جديدة اعتمادا على هذة المعلومات أو الاستمرار باستخدام قاعدة بيانات Nowrthwind وهذا مخطط بسيط يوضح عملية الربط بالنسبة لقاعدة البيانات التى نحن بصددها

سنقوم بإضافة استعلام فى Customers ولعمل ذلك
كليك يمين على CustomersTableAdapte ثم Add Query

يظهر لك الان ديالوج Search Criteria Builder ومعناة منشىء معايير البحث ويوجد بة استعلام افتراضى فى مربع Query Text سنقوم بإضافة هذة العبارة فى نهاية السطر


كود
WHERE CustomerID = @CustomerID





ثم OK
يظهر لك الان FillByCustomerIDToolStrip فى أعلى الفورم قم بعمل كليك يمين بالماوس علي ToolStrip’s CustomerID text box ثم Convert to اختر ComboBox

الان سنقوم بتغيير بعض خصائص هذا ComboBox
قم بعمل كليك يمين بالماوس علية واختر Properties ثم اذهب إلى لوحة الخصائص وقم بتغيير الخصائص الاتية
-الإسم Name إلى cboCustomerID بدلا من CustomerIDToolStripTextBox
-قم بتغيير الخاصية فى DropDownStyle إلى DropDownList
-ثم خاصية DropDownWidth إلى 75
-إذهب إلى الخاصية Item ثم قم بالضغط على Collection تظهر لك لوحة تحرير النص قم بكتابةعدد من CustomerID فى كل سطر مثلا
ALFKI
ANATR
ANTON



وذلك على سبيل التجربة ثم قم بتجربة البرنامج عن طريق F5 ويمكنك تجربة ComboBox لمشاهدة محتوياتة
نذهب الان إلى خصائص FillByCustomerID button ونقوم بتغيير الخصائص التالية
-النص فى الخاصية Text إلى Get Orders ثم قم بتغيير قيمة ToolTipText إلى Select a Customer ID
نذهب الان إلى خصائص FillByCustomerID button ونقوم بتغيير الخصائص التالية
-النص فى الخاصية Text إلى Get Orders ثم قم بتغيير قيمة ToolTipText إلى Select a Customer ID
الان قم بعمل كليك يمين على أيكونة الحفظ الموجودة فى Binding Navigator ثم قم بنسخها وقم بحذف Binding Navigator ثم قم بعمل لصق داخل Tool Strip

قم بتجربة العمل وذلك عن طريق استدعاء أحد CustomerID الموجودة فى ComboBoxثم GetOrder سيقوم بإحضار بيانات العميل المطلوب

سنقوم الان بإضافة استعلام اخر
-كليك يمين بالماوس على OrdersTableAdapt ثم Add Query
-سنقوم بإضافة العبارة التالية فى نهاية الاستعلام الافتراضى الموجود فى مربع Query Text



كود:
WHERE CustomerID = @CustomerID ORDER BY OrderID DESC
ثم نقوم بإضافة استعلام اخير
-كليك يمين بالماوس على Orders_DetailsTableAdapt ثم Add Query
-سنقوم بإضافة العبارة التالية فى نهاية الاستعلام الافتراضى الموجود فى مربع Query Text

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

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

-عندما تقوم باستدعاء ID العميل فى القائمة الأولى وليكن ALFKI فإنة يتم استدعاء البيانات الشخصية من الجدول Customers ويتم إظهارها فى مربعات Detailes بمجرد الضغط على GetOrder
-عندما تقوم بكتابة نفس ID الذى هو ALFKI فى مربع النص فى القائمة الثانية ثم تقوم بالضغط على
FILLByCustomerID فإنة سيقوم بعرض كل أوردر تم تنفيذة لحساب ALFKI فيظهر كل Order داخل
DataGird 1 مصحوبا بكل بياناتة فقط دون عرض محتوياتة من سلع أو منتجات
-عندما تقوم بكتابة نفس ID الذى هو ALFKI فى مربع النص فى القائمة الثالثة ثم تقوم بالضغط على
FILLByCustomerID فإنة سيقوم بعرض كل منتج تم إخراجة لحساب أوردرات ALFKI داخل DataGird 2
فيظهر كل منتج مصحوباببيانات Order الذى تم فية خروج هذة السلعة
توضيح
العميل الذى ID لة هو ALFKI
-طبقا لمحتويات DataGird 1 فإن هذا العميل تم تنفيذ 6 طلبيات لة وهى 11011و10952و10835و10702و10692و10643
-كما أنة وطبقا لما هو موضح فى DataGird 2 فإنة خلال هذة الطلبيات قام بسحب المنتجات التالية
فى الطلبية رقم 10835 أخذ عدد 2 من المنتج 77 بسعر 13 وتم عمل خصم مقدارة 0.2 ...الخ
ولكن هل بذلك انتهى هذا المشروع؟
بالطبع لا فلا زال هناك الكثير فليس من المعقول أن نقوم باستدعاء كل بيان من البيانات بصورة
منفصلة نريد أن نقوم باستدعائهم بضغطة واحدة كما نريد إضافة وحذف وتعديل.....الخ
فكيف نقوم بذلك؟
هذا ما سنعرفة فى الجزء القادم
يمكنكم تجربة ما قمنا بإنجازة حتى هذة المرحلة بتحميل المشروع من الرابط التالى
http://www.zshare.net/download/407611846e7fb2
***
رابعا: دمج مربعات النص إلى ComboBox

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



كود:
Private Sub FillByCustomerIDToolStripButton1_Click
ثم قم بنسخ الكود التالى منة



كود:
Me.OrdersTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Orders, CustomerIDToolStripTextBox.Text)
ثم قم بتغيير النص CustomerIDToolStripTextBox.Text إلى cboCustomerID.Text فيصبح الكود كاملا كالتالى




كود:
Me.OrdersTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Orders, cboCustomerID.Text)
ومعنى هذة الخطوة أنة سيستخدم النص الموجود فى ComboBox وليس الموجود فى شريط الأدوات الثانى ثم نقوم بلصق النص بعد تعديلة بداخل كود ComboBox الذى هو يبداء بالسطر التالى




كود:
Private Sub FillByCustomerIDToolStripButton_Click

سنقوم بعمل نفس الطريقة مع شريط الأدوات الثالث الخاص بالجدول Order_Detailes
فيصبح الكود كالتالى


كود:
Me.Order_DetailsTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Order_Details, cboCustomerID.Text)
الان نقوم بحذف كلا من شريط الأدوات FillByCustomerIDToolStrip1 وشريط الأدوات FillByCustomerIDToolStrip2وكذلك الكود الخاص بهما
قم الان بتجربة البرنامج وقم باستدعاء أحد العملاء ثم اضغط GetOrder لتجد الان أن كافة البيانات بالجداول الثلاثة قد تم تعبئتها
بهذة المرحلة نلاحظ الاتى
-لم نقم باستخدام أى كود من أكواد الفيجوال بيسيك
-يمكن لمستخدمى لغة #C استخدام نفس الطريقة حتى هذة المرحلة
بدمج مربعات النصوص الثلاثة إلى ComboBox تنتهى هذة المرحلة و Part6
يمكنكم تحميل المشروع من

الرابط التالى

http://www.zshare.net/download/411063349c0e10

وبهذ أنتهى درس اليوم و يتبع بأذن الله.......
__________________



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




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



التعديل الأخير تم بواسطة محمد المعمري ; 10-02-2008 الساعة 07:47 PM
محمد المعمري غير متواجد حالياً  
قديم 11-02-2008, 06:18 PM
  #38
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

خامسا: ربط قواعد بياناتSQLServer وانشاء زر البحث باستخدام ADO.NET 2.0
سنقوم فى هذا اليوم بمعرفة كيفية عمل ربط للفورم بقاعدة بيانات SQL من خلال الاتصال بسيرفر SQL2005Express وباستخدام ADO.NET 2.0
نصيحة فى البداية
يفضل عمل مجلد اسمة Database ووضع قواعد البيانات بداخلة ليسهل ايجادها
قم بفتح الفيجوال ستوديو ثم اضغط على View الموجودة فى شريط الأدوات وقم باختيار Server Explorer

تظهر لك نافذة مستعرض السيرفر فى أقصى اليسار قم بعمل كليك يمين بالماوس على Data Connection ثم اضغط على Add Connection


الان تظهر أمامك نافذة Choose Data Source قم باختيار Microsoft SQL Server ثم Continue

فى مربع Server Name نقوم بكتابة اسم السيرفر وحيث أننا سنعمل على السيرفر المحلى والذى هو لدينا SQL Express 2005 سيكون اسم السيرفر هو ./sqlexpress من الشمال لليمين طبعا
نفترض الان أننا نريد أن نقوم باختيار قاعدة بيانات Northwind
قم بالتأشير أمام Attach a Database File ثم قم بإيجادها عن طريق الضغط على Browse والتوجة للمسار الذى قمت بوضع قاعدة البيانات بة ثم قم بعمل اختبار للاتصال عن طريق الضغط على Test Connection عند النجاح اضغط OK و عند الفشل فهذا أمر اخر

الان تم الاتصال بنجاح
نذهب إلى قائمة File ثم New Project ونقوم باختيار Windows Application ثم نقم بتسميتة حسب الرغبة
قم بالضغط الان على Data Source فى أقصى اليمين ثم Add New Data Sopurce




ثم نختار Database و next

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



فى الخطوة التالية سنختار No ومعنى ذلك أننا سنظل مرتبطين بالسيرفر


نقوم الان باختيار الجدول التى نريدها وقد قمت باختيار الجدولين Customers و OrderDetails ثم يمكنكم أيضا تغيير اسم DataSet إلى CustomerOrderDetails DataSet أو تركها بدون تسمية ثم Finish


الان لدينا عدد 2 جدول قم بالضغط بالماوس على السهم الموجود بحافة أحد الجدولين تظهر لك قائمة منسدلة قم باختيار Details فى الجدول Customer ثم قم بالضغط على الجدول بالماوس وسحبة إلى داخل الفورم ووضعة بشكل مناسب

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

أصبح لدينا الان فورم جاهز تماما ومرتبط بقاعدة بيانات وقابل للعمل بكافة وظائفة

يمكنكم الان تجربة تشغيل البرنامج بالضغط على F5 وتجربة عمل حذف أو إضافة أو تعديل لأحد الحقول يبدوا لى أن كل الوظائف تعمل بكفاءة دون أن نقوم بكتابة حرف كود واحد ويمكن عمل ذلك أيضا فى #C بدون أى اختلاف


لماذا قمنا فى هذة الخطوة باختيار NO ؟

قمنا باختيار No بغرض عدم استحضار قاعدة البيانات إلى مجلد المشروع ليصبح المشروع كلة قائما على وجود قاعدة البيانات على السيرفر بغرض عمل محاكاة لقاعدة بيانات موجودة على سيرفر بعيد لن يسمح لك أصلا باستقدام قاعدة البيانات إلى داخل المشروع وليصبح المشروع كلة Server dependent أى أنة لن يسمح السيرفر لك لك أيضا بعمل تحديث أو إضافة للبيانات إلا إذا كنت متصلا بة بالفعل لذلك كل من قام بتحميل المشروعات من الروابط لن تعمل معة لهذا السبب
ماذا لو أننا قمنا باختيار Yes ؟
إذا قمنا باختيار Yes بافتراض أن السيرفر يسمح بهذا الأمر أو أن لديك الصلاحيات لذلك سيتم استيراد القاعدة إلى المشروع ويمكنك عمل أى تغيير فى البيانات الموجودة داخل قاعدة البيانات وعلى ذلك ستحتاج لعمل تزامن مع السيرفر على فترات متفاوتة ومعنى تزامن أى تحديث للبيانات خلال أزمنة محددة مثلا تحديث البيانات فى الساعة 12 مساء ليتم نقل التغييرات التى حدثت فى قاعدة البيانات إلى القاعدة الرئيسبة على السيرفر ولكن هذا الموضوع لا يتم تلقائيا ولكن يلزمة عمل مشروع اخر مع السيرفر وهو مشروع تزامن قاعدة البيانات Database Sync
كيف يمكننا عمل بحث على قاعدة البيانات هذة سواء كانت موجودة على السيرفر أو كانت Sync ؟
أنتهى الدرس

يتبع بأذن الله .....
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 15-02-2008, 02:21 AM
  #39
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

كيفية عمل بحث فى داخل قاعدة بيانات SQL فى ADO.NET 2.0

-قم بعمل مشروع جديد على قاعدة بيانات Payables بنفس الطريقة التى شرحناها بالأمس واختر الجدول Vendor ثم تابع الخطوات إلى نهايتها ثم قم بإدراج Data Gird View إلى
الفورم بنفس الطريقة التى اتبعناها سابقا
- بعد أن تنتهى من إنشاء المشروع قم بالضغط على زر التخصيص فى أقصى اليمين على حافة Data Gird View ومن القائمة اختر Dock in Parent Container ووظيفة هذة الخاصية هو عمل اتساع أقصى لل Data Gird View لتملاء الفورم

قم بالضغط على F5 لتجربة البرنامج ثم قم بتغيير أحد البيانات على سبيل التجربة ثم الضغط على زر Save ثم أغلقة وأعد فتحة لنرى إن كان التغيير الذى قمت بعملة قد تم حفظة أم لا
-بعد التأكد من صحة العمل سنقوم بعمل فورم البحث داخل قاعدة البيانات هذة
-قم بالضغط على Solution Explorer لرؤية مكونات المشروع
-كليك يمين على رمز المشروع فى أعلى Solution Explorer ثم Add ثم اختر Windows Form


قم بتسمية الفورم الجديد VendorSearch كما هو موضح أمامكم ثم اضغط Add

الان تمت إضافة الفورم اذهب الان إلى شريط الأدوات Tool Bar واضغط على Project ثم اختر Vendor Properties وهى Vendor لأننى قمت بتسمية المشروع كذلك وسيختلف الاسم طبعا طبقا لاسم المشروع ثم قم بتغيير Startup Form من Form1 ليصبح VendorSearch ووظيفة هذة الخطوة هى أن نجعل فورم البحث يظهر بدلا من الفورم الأول عند تشغيل المشروع ثم اضغط F5 للتأكد من أن الفورم الجديد هو الذى سيظهر عند تشغيل المشروع



اذهب الان إلى شريط الأدوات Tool Bar واضغط على Data ثم اضغط Add New Data Source
-قم بمتابعة خطوات المعالج كما سبق ثم اختر نفس الجدول وقم بتسمية DataSet باسم VendorSearchDataSet
-قم بالذهاب إلى نافذة DataSource ثم قم بإدراج Data GirdView من VendorSearchDataSe إلى داخل الفورم وقم بظبطها وعمل Dock in Parent Container كما سبق
- إضغط على زر التخصيص فى أقصى اليمين على حافة Data Gird View ومن القائمة اختر Add Query


-سيظهر الان نافذة Search Criteria Builder قم بتسمية FillBy إلى FillByName ثم اضغط على
Query Builder


أمامنا الان نافذة Query Builder وبما أننا اخترنا أن نقوم بعمل بحث باستخدام Name فيجب علينا أن نذهب إلى الصف Name وبالتحديد الخانة Filter ونقوم بكتابة الصيغة التالية

كود:
LIKE @Name + '%'

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


-قم بتجربة كتابة أحد الأحرف بدلا من Null فى Value ثم Ok ثم انظر إلى الجدول لتجد أنة قام بإحضار كافة الأسماء التى تبداء بالحرف A الذى قمت أنا بتجربتة

ثم OK وOk لتجد أنة قد ظهر لك FillByNameToolStrip فى أعلى الفورم قم بتجربة المشروع وذلك ب F5 ثم ضع حرف فى Text Box ثم اضغط على زر Fill By Name لتجد أنة قام باحضار ما تبحث عنة

نعود للفورم الان ونقوم بفتح صفحة الكود ثم حذف هذا السطر


كود:
Me.VendorsTableAdapter.Fill(Me.VendorSearchDataSet.Vendors)




والفائدة من حذفة هى أن تظهر لك المحتويات فارغة عند فتح المشروع

كما رأينا فإننا قمنا بعمل ربط لقاعدة البيانات المتواجدة على سيرفر وكذلك فورم البحث بدون كتابة أكواد فيجوال بيسيك أو غيرها من اللغات
-عندما نريد العمل مع سيرفر يعيد يعنى خارج الشبكة المحلية فإن الاختلافات ستكون اختلافات بسيطة جدة وهى تتمثل فى طبيعة السيرفر المطلوب الاتصال بة
-هذا المثال يمكن تطبيقة أيضا OffLine وذلك بالموافقة على استيراد قاعدة البيانات إلى داخل المشروع مع إحداث تغييرات بسيطة
-قمنا سابقا بمعرفة كيفية ربط عدد من الجداول داخل نفس المشروع ولكننا لم نقم بعمل إنهاء لة وعلى ذلك سأقوم بشرح مثال شامل أقوم فية بتجميع كل ما تم معرفتة حتى الان وكذلك إنشاء العمليات المساعدة للمشروع مثل لوحات دخول المستخدمين وكذلك إنشاء أسلوب للاتصال من داخل المشروع نفسة
-معلومة مهمة وهى ان نجاح المشروع يعتمد على الربط الصحيح للجداول و User Stored Proceduer كما أشرت فى بداية شرح قواعد البيانات

وبهذا أنتهى درس اليوم و يتبع............
__________________



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




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



التعديل الأخير تم بواسطة محمد المعمري ; 15-02-2008 الساعة 02:23 AM
محمد المعمري غير متواجد حالياً  
قديم 15-02-2008, 09:05 PM
  #40
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

سادسا : أنواع البيانات فى SQL Server2005


1-Int

وهى اختصار Integer والأرقم الصحيحة الممتدة من من 2^31- إلى 2^31-1 بمعنى أنه أحد الأرقام المحصورة بين (-2147483648 إلى 2147483647)
2-BigInt
إذا نظرنا إلىى هذة الكلمة فسنجد أنها مكونة من جزئين وهما Big وتعنى كبير و Int وهى اختصار Integer و هو العدد الصحيح سواء كان سالبا أو كان موجبا إذن BigInt عدد صحيح كبير ولكن هو كبير لأى درجة ؟
هو عدد صحيح ممتد من 2^63- إلى 2^63-1 وبعبارة أخرى الأرقام المحصورة بين (-9223372036854775808 إلى 9223372036854775807)
وهذا الرقم الذى هو BigInt هو أقصى رقم يمكن التعامل معة داخل قاعدة البيانات وينصح فقط باستخدامة إذا كانت الأرقام التى تستخدمها تزيد على 2 مليار
3-Smallint
وهى small صغير وint و هى الأرقام فى المدى من 2^15- إلى 2^15-1 وبعبارة أخرى الأرقام المحصورة بين (-32768 إلى32767)
4-tinyint

و tiny تعنى صغير جدا وint و هى الأرقام فى المدى من (0 إلى255)
5-Binary

هو النظام الثنائى والمقصود بة هنا نظام العدد الثنائى الذى هو 0و1 ولكن فى الفترة الأخيرة تضائل استخدام Binary إلى درجة كبيرة وهو يستخدم عادة لتخزين ملفات الصيغ مثل Pdf أو doc و ملفات الصور وخلاف ذلك ولكن تخزين مثل هذة الأشياء غير مستحب داخل قاعدة البيانات لعدد من الأسباب منها الحجم الكبير الذى يستهلكة والبطء الذى يحدثة داخل وأسباب ومشاكل أخرى تحدث للعناصر المخزنة وكذلك لقاعدة البيانات لذلك عندما قمت بشرح مثال Currency Manager لم أقم بتخزين الصورة داخل قاعدة البيانات ولكننى قمت فقط بتخزين مسار الصورة لتلافى حدوث هذة التعقيدات لأنة إذا كان محتما علينا أننا سنقوم بتخزين الصورة فلماذا نقوم بتخزينها داخل قاعدة البيانات بالذات ونقوم بإجهادها طالما أننا نستطيع تخزينها فى مكان اخر خارج قاعدة البيانات وما ينطبق على Binary ينطبق على الأنواع التالية
6-Image

7-Varbinary

8- (Varbinary(Max

9-Bit

ويعتبر أحد أنواع Binary ولكن هو Bit يعنى 0 أو 1 يعنى إما هذا أو ذاك قيمة واحدة فقط وهو مناسب جدا للقيم التى هى من نوع Yes/No التى هى Boolean وقد تكلمنا عنها سابقا ولكنها تحتاج لتعريف من قبل من مصمم قاعدة البيانات كأن يقوم بوضع
Yes=1 و No=0 ويمكن بنفس الطريقة استخدامة فى التنقل بين شىء مزدوج الخواص مثل On/Off أو +/- وما شابهها ولكنها تحتاج لتعريف هذا الأمر
-Char
وهى اختصار Character وتختصر إلى Char وتنطق شار و المقصود بها نص محدود الطول بمعنى أننا يجب وضع حد أقصى للحروف التى يتم كتابتها من خلال نوع Char وأنواعة هى
10-(char(x

و X هذة عدد الأحرف و إذا وضعنا X=10 فإننا يجب وضع عشرة أحرف إجباريا فماذا لو قمنا بكتابة 3 أحرف فقط فإنة يتم كتابة السبعة أحرف المتبقية فى صورة فراغات أى أن القيمة تصبح إجبارية 10 أحرف
11-(Varchar(x

وهو أكثرها شيوعا واستخداما فى قواعد البيانات و X هى عدد الأحرف وأقصى طول يسمح بة 1024 حرف ويختلف عن (Char(x فى أنة لا يشترط اتمام الرقم X إلى نهايتة بمعنى أنة لو كان هناك (char(10 فلا بد من وضع العشرة حروف فإذا لم تضعها فإنة سيقوم بإكمالها فى صورة فراغات ولكن لو كان هناك مثلا (varchar(50 فإنة لن يقوم بإكمال ذلك ولكنك فى الحقيقة لن تستطيع كتابة سوى 48 حرف فقط والسبب فى ذلك هو أن SQL server يقوم باستخدام 2 بايت bytes2 من الحجم ويستخدمها لتخزين طول النص
12-(Varchar(max

ويسمح بإضافة نص طويل جدا يصل طولة إلى( 2^31-1) حرف يعنى 2147483647 حرف تماما مما يعنى أنة سيستوعب حوالى 2.147.483.647 بايت أى ما يعادل 2 جيجا وهذا النوع من البيانات قد حل مكان Text فى SQL Server 2005 و Text موجودة أيضا فى خيارات أنواع البيانات ولكن لاخر مرة ولن تظهر فى SQL Server 2008
يوجد هناك نوع اخر من البيانات باعتقادى أننا لن نستخدمة كثيرا وهو National Character وهى لمن يستخدمون حروف لغات non-Unicode و الجدير بالذكر أنها تستخدم 2 بايت لكل حرف وهى
13-(nchar(x

14-(nvarchar(x
15-ntext

ومثلها مثل text لن تظهر فى SQL Server بعد الان
16-(nvarchar(max
17-Datetime

و تسمح بالتعامل مع الفترة الزمنية الممتدة من يوم 1 يناير عام 1753 حتى يوم 31 ديسمبر عام 9999 وهى تعطى الزمن بدقة و معدل الخطاء قد يصل إلى 3.35 ميللى ثانية لذلك فإن يفضل وضعها فى وضع تزامن لتصحيح الفارق الزمنى
18- Smalldatetime

وتصلح للزمن مقدرا بالدقائق فى الفترة من ا يناير 1900 حتى 6 يونيو عام 2079
19- Timestamp

وهو زمن غير تلقائى ولا يرتبط بالنوعين السابقين من الأزمنة و هو يصلح للأزمنة الغير دورية وأبرز مثال يمكن ضربة على هذا النوع هو التأقيت Watching
20-(Decimal(P,S

و Decimal تعنى رقم يمكن أن يكون رقم عشرى ولكن ما معنى (P,S)
P=Percision و هو عدد الأرقام التى على اليسار من العلامة العشرية مثلا إذا كنت P=5 فإنة يمكن وضع خمسة أرقام مثل 9999
S=Scale وهو الرقم الذى على يمين العلامة العشرية
لتوضيح ذلك
(Decimal(5,2 يمكن أن يكون رقما بهذة الصورة 44.20 أو 45898.29 .....الخ
وهى فى الوضع الإفتراضى فى SQL Server موجودة بالصورة التالية(Decimal(18,0
21-(Nuemric(P,S

هى نفسها (Decimal(P,S
22-Money

وهو يستخدم لتخزين القيمة فى صورة (Decimal(16,4 والغرض من تخصيصها هو العملة أو النقدية والقيمة قد تكون موجبة أو سالبة ومحصورة بين (-9.22 تريليون و 9.22 تريليون)
23-Smallmoney

وينحصر مابين -215000 و 215000 مائتان وخمسة عشر ألفا لاغير
24- sql_variantونادرا ما تستخدم وهى تشبة varchar
25- uniqueidentifier

ويصلح لتخزين قيمة ID مثل قيمة Guide التى تعلمنا طريقة إنشأها فى الدرس الثانى من قواعد البيانات وهو كما رأينا فى تكوينة Hexdecimal ويتكون من الأرقام 0 و1 و2 ......9 والحروف a وb وc و d وe وf وهو يتكون من 32 حرف عبارة عن حروف من الحروف الستة المذكورة بالاشتراك مع العشرة ارقام المعروفة كما أنه يصلح ايضا لتخزين Autonumber الذى هو الترقيم التلقائى
26- XML

لتخزين البيانات من النوع XML ويمكنة أن يسع حتى 2 جيجا من البيانات
27- Float and Real

ويستخدمان لتخزين القيم التقريبية
__________________



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




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


محمد المعمري غير متواجد حالياً  
موضوع مغلق


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
ميزانــيــة نهــايـــة العــــام ابن مشرف أبو الوليد مجلس الإسلام والحياة 1 07-01-2008 10:29 PM
الدقائق الحاسمة في معركة الموت. أبو عامرية المجلس الـــــعــــــــام 18 15-09-2007 04:53 PM
صور من حياة الصحابه ناصر السنحاني المجلس الـــــعــــــــام 15 15-09-2007 04:46 PM
مناسك الحج و العمرة اللبيب مجلس الإسلام والحياة 6 28-04-2007 02:39 PM


الساعة الآن 11:29 PM

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