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


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

موضوع مغلق
قديم 01-02-2008, 06:01 PM
  #1
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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 (الموضوع متجدد ويتبع )

اقتباس:
المشاركة الأصلية كتبت بواسطة أبوالليل مشاهدة المشاركة
السلام عليكم

لاهنت على المجهود الطيب

ذكرتني بأيام الثانويه
هذي ثلاث برامج عن حل المعادلات
أرررررررررررحب يا بوالليل.

حياك الله أنت و علمك

لاهنت على البرنامج

تحياتي,,,,,,,,,
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 01-02-2008, 05:57 PM
  #2
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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 (الموضوع متجدد ويتبع )

التعامل مع قواعد البيانات

*****
Part1-كيفية إنشاء قاعدة بيانات
كيفية إنشاء قاعدة بيانات
أولا:قاعدة بيانات أكسس Microsoft Access
-قم بفتح برنامج الأكسس
-إذا كنت تستخدم أكسيس 2007 قم بالضغط على Blank Database أو قاعدة بيانات فارغة ثم اكتب اسم قاعدة البيانات ثم Create أو إنشاء

إذا كنت تستخدم إصدار اخر فمن قائمة File أو ملف اختر جديد .....الخ
سوف تفتح قاعدة البيانات الجديدة وبها جدول واحد ولإضافة جدول فى أكسس 2007 إضغط Create أو إنشاء ثم اختر Table أو جدول وباستخدام أى اصدار اخر من أكسس إضغط على Add New Table إضافة جدول أو جدول جديد

-نقوم بإضافة 2 جدول إلى قاعدة البيانات فيصبح لدينا عدد 3 جدول فى قاعدة البيانات ويفضل أن نقوم بإعادة تسمية الجداول كالتالى
جدول 1= Groups
جدول 2=Projects
جدول 3= GroupProjects


نقوم الان بتحرير الجداول ولعمل ذلك نقوم بعمل كليك يمين بالماوس على الجدول الذى نريد تحريرة ثم Design View أو عرض التصميم


أولا: جدول 1 Groups
سيحتوى الجدول على 4 حقول وهى
1- الحقل الأول GroupID
خصائص الحقل GroupID
-Data Type وهذة الخاصية تحدد نوعية البيانات الذى سيحتويها هذا الحقل يعنى هل هو نص أو صورة أو رقم أو تاريخ ........الخ
وهذا الحقل ستكون البيانات بة رقم أى أن Data type=Number
خصائص البيانات
Field Size= Replication ID
Required=yes
Indexed = Yes (No Duplicates)
ايضاح الخصائص على الترتيب
-رقم سيتم انشاؤة أو نسخة
-لابد من أن تحتوى على بيانات وإلا فإنة من غير الممكن الاستمرار أى أنة لا يسمح بأن تكون هذة الخانة فارغة
-غير مسموح بالتكرار
2-الحقل الثانى GroupName
خصائص الحقل الثانى GroupName
Data type=Text
سيحتوى على نص
خصائص البيانات
Required = Yes
Allow Zero Length = No
3- الحقل الثالث GroupDescription
خصائص الحقل الثالث GroupDescription
Data type=Memo
مذكرة والمعنى أنة يمكن وضع أى شىء بدون قيود حتى وإن كانت صورة مثلا
خصائص البيانات
Required = No
Allow Zero Length = Yes
4-الحقل الرابع LastUpdateDate
من الواضح أنة سيتضمن التاريخ
Data type= Date/Time
وخصائصة
Required = Yes
نقوم الان بتعيين مفتاح لهذا الجدول وسيتم اتخاذ الحقل الأول GroupID كمفتاح لهذا الجدول وذلك عن طريق كليك يمين بالماوس على الحقل المراد اتخاذة كمفتاح ثم Primary Key عموما يقوم أوفيس بتعيين الصف الأول كمفتاح تلقائيا



ثانيا :جدول 2 Projects
سيحتوى هذا الجدول على 5 حقول وهى كالتالى
1- الحقل الأول ProjectID
Data type=Number
Field Size= Replication ID
Required=yes
Indexed = Yes (No Duplicates)
2-الحقل الثانى ProjectName
Data type=Text
Required = Yes
Allow Zero Length = No
3-الحقل الثالث ProjectDescription
Data type=Memo
Required = No
Allow Zero Length = Yes
4- الحقل الرابع SequenceNumber
Data type=Number
Field Size = Byte
Required = Yes
5- الحقل الخامس LastUpdateDate
Data type= Date/Time
Required = Yes
المفتاح هو ProjectID
ثالثا :جدول 3 GroupProjects
يحتوى هذا الجدول على 3 حقول
الحقل الأول GroupProjectID
Data type=Number
Field Size= Replication ID
Required=yes
Indexed = Yes (No Duplicates)
الحقل الثانى GroupID
Data type=Number
Field Size= Replication ID
Required=yes
Indexed = Yes (Duplicates OK)
الحقل الثالث Project ID
Data type=Number
Field Size= Replication ID
Required=yes
Indexed = Yes (Duplicates OK)
المفتاح هو GroupProjectID
قم بإغلاق الجداول بالضغط على X الموجودة داخل إطار كل جدول
الان تم الإنتهاء من الجداول وسنقوم بربط هذة الجداول
لربط الجداول الموجودة داخل قاعدة البيانات اتبع ما يلى
-إضغط على Tools أو أدوات ثم اختر Relationships علاقات
-قم بسحب الجدول Groups إلى داخل إطار العمل وذلك عن طريق الضغط علية بالماوس وعدم رفع الإصبع من على زر الماوس ثم قم بتحريك الماوس وأنت ضاغط إلى داخل الإطار
-قم بسحب الجدول Projects وقم بوضعة بجانب الجدول Groups وأخيرا قم بسحب الجدول GroupProject وقم بوضعة بجانب الجدول Projects ليصبح الشكل كما هو موضح

لربط الجداول باستخدام الماوس سنقوم بسحب الحقل GroupID الموجود فى الجدول Groups ووضعة فوق الحقل ProjectID الموجود بالجدول Projects فتظهر لنا هذة النافذة

قم بالتأشير أمام Enforce Referential Integrity ثم اضغط Create
وبنفس الطريقة قم بربط ProjectID الموجود بالجدول Projects بالحقل GroupProjectID الموجود بالجدول GroupProject
ثم Save as واختر Access 2000 Database
ثانيا :قاعدة بيانات SQL
الان سنقوم بانشاء نفس قاعدة البيانات باستخدام SQL Server 2005
-قم بفتح الفيجوال استوديو ثم فى قائمة View اختر Server Explorer
-كليك يمين بالماوس على Data Connection ثم اختر New SQL Server Database Creat
-فى خانة Server Name قم بكتابة اسم السيرفر وهو
.\SQLEXPRESS


ثم قم بوضع اسم لقاعدة البيانات فى خانة New Database Name الموجودة فى أسفل النافذة
قم بعرض مكونات قاعدة البيانات الجديدة كما هو موضح
-كليك يمين بالماوس على Table ثم Add Table
الحقول
GroupID-
Data type= uniqueidentifier
Null=No أى لا تقوم بالتأشير أمامها وهى تساوى Requiered
- GroupName
Data type= VarChar(50)
Null=No
- GroupDescription
Data type=text
Null=Yes أى قم بالتأشير أمامها
- LastUpdateDate
Data type= datetime
Null=No
ثم كليك يمين بالماوس على حافة الجدول من أعلى ثم Save Table 1 يظهر لك مربع الحوار قم بوضع اسم الجدول وهو كما سبق Groups

ثم قم بإغلاقة وأعد نفس الكرة لإنشاء الجدول الثانى Projects والجدول الثالث GroupProject يمكنكم الاستعانة بالصورة التالية لمعرفة مكونات الجداول
ويتم اختيار المفتاح لكل جدول بنفس الطريقة السابقة Set Primary Key ثم قم بإغلاق الجداول
نقوم الان بعمل العلاقات بين الجداول
-لعرض تكوين الجدول كليك يمين على الجدول المراد عرض تكوينة ثم Open table Difination
-كليك يمين على Database Diagrams ثم Add New Diagram

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


وللتأكد من أنك قمت بعمل الربط الصحيح للحقول المطلوبة تأكد من ذلك عند ظهور نافذة Tables and Columens
يجب أن يتم الإرتباط بين Group ID مع Project ID و Project ID مع GroupProjects ID
__________________



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




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


محمد المعمري غير متواجد حالياً  
قديم 02-02-2008, 05:18 PM
  #3
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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 (الموضوع متجدد ويتبع )

Part2-ربط قاعدة البيانات بالتطبيقات

ربط قاعدة البيانات بالتطبيقات
أ
ولا:باستخدام DataGirdView
-
قم بوضع قاعدة بيانات Northwind فى اى مكان تختارة وليكن :C
-قم بفتح مشروع جديد ثم قم بتسميتة باسم مناسب
-قم بإدراج DataGirdView من مربع الأدوات ToolBox وتجدها موجودة فى Data
-بالضغط على زر المهام الصغير جدا الموجود عند الحافة اليمنى العلوية يظهر لك نافذة Tasks ثم قم بالضغط على زر مربع الاختيار الموجود بة الخيار non ثم اضغط على Add project Data Source



-يظهر لك الان معالج إعداد مصادر البيانات قم باختيار Database ثم Next
-قم باختيار New Connection ثم يظهر لك معالج الإتصال بقاعدة البيانات قم باضغط على Browse ثم قم باختيار قاعدة البيانات التى تريد الاتصال بها
-قم بالموافقة على إضافة قاعدة البيانات إلى المشروع ثم قم بالموافقة على حفظ المشروع باسم NorthwindConnectionString ثم Next تظهر لك الان محتويات قاعدة البيانات
-نقوم الان باختيار الجداول أو الحقول التى نريد إظهارها داخل المشروع بالنسبة لى سأختار من الجدول employees أربعة حقول وهى Firest Name وSecond Name وCity وHome Phone أرجوا منكم اختيار حقول أخرى للتعامل معها ثم Finish
-كليك يمين على DataGirdView ثم إذهب إلى Properties ثم إلى الخاصية Dock ثم قم بتغييرها من non إلى Fill
ثانيا:باستخدام Windows Form
-قم بفتح مشروع جديد ثم قم بإدراج 4 TextBox وكذلك 4 Lable
-فى خصائص Lable قم بتسميتها فى Text إلى الإسم , اسم الأب , المدينة , تليفون المنزل أو كما تريد أن تختار من حقول قاعدة البيانات وقم بترتيب TextBox فى شكل مناسب
-كليك يمين على الفورم ثم اذهب إلى خصائص Properties ثم قم بالذهاب إلى DataBindings ومنها قم بالضغط على Text ثم قم بالضغط على زر مربع الإختيار الموجود بة الخيار non ثم اضغط على Add project Data Source

يظهر لك الان معالج إعداد مصادر البيانات قم باختيار Database ثم Next
-قم باختيار New Connection ثم يظهر لك معالج الإتصال بقاعدة البيانات قم باضغط على Browse ثم قم باختيار قاعدة البيانات التى تريد الاتصال بها
-قم بالموافقة على إضافة قاعدة البيانات إلى المشروع ثم قم بالموافقة على حفظ المشروع باسم NorthwindConnectionString ثم Next تظهر لك الان محتويات قاعدة البيانات
قم باختيار الأربعة حقول الذى اخترناها سابقا أو كما تريد ثم Finish
-كليك يمين على مربع النص الأول الخاص بالإسم واذهب إلى خصائصة ثم إلى Data Binding ثم Text وقم بفتح Other Data Sources ثم NorthwindData Set ثم Employeesثم قم بالضغط على First Name

-كليك يمين على مربع النص الثانى الخاص باسم الأب واذهب إلى خصائصة ثم إلى Data Binding ثم Text وقم بفتح Other Data Sources ثم NorthwindData Set ثم Employeesثم قم بالضغط على Second Name
--كليك يمين على مربع النص الثالث الخاص بالمدينة واذهب إلى خصائصة ثم إلى Data Binding ثم Text وقم بفتح Other Data Sources ثم NorthwindData Set ثم Employeesثم قم بالضغط على City
-كليك يمين على مربع النص الرابع الخاص برقم التليفون واذهب إلى خصائصة ثم إلى Data Binding ثم Text وقم بفتح Other Data Sources ثم NorthwindData Set ثم Employeesثم قم بالضغط على Home Phone
-نعود الان إلى Tool Box ثم نقوم بإدراج Binding Navigator

الان قم بتشغيل البرنامج ويمكنك الان إضافة أو إزالة أى بيانات من خلال أزرار Binding Navigator الذى يحتوى أيضا على أزرار أخرى إضافية مثل السابق والنالى وكذلك الذهاب إلى السجل الأول والسجل الأخير
لتحميل قاعدة بيانات northwind
http://www.zshare.net/download/342559556fd19c
لتحميل مثال GirdView
http://www.zshare.net/download/34256175b799d0
لتحميل مثال windows Form
http://www.zshare.net/download/3425644d183fba
ويــــــــــــــــــــــــــتبع.........
__________________



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




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



التعديل الأخير تم بواسطة محمد المعمري ; 02-02-2008 الساعة 06:53 PM سبب آخر: مطبعي
محمد المعمري غير متواجد حالياً  
قديم 06-02-2008, 04:19 PM
  #4
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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
  #5
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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
  #6
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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, 07:36 PM
  #7
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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
  #8
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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
  #9
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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
  #10
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: 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


الساعة الآن 09:06 PM

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