![]() |
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
part3-إنشاء الإستعلام Query باستخدام عبارات SQL
1-إنشاء جملة أو عبارة الإدخال Insert -قم بفتح قاعدة البيانات التى أنشأنها فى الجزء الاول من الموضوع -اضغط على Query أو استعلام أو انشاء استعلام طبقا لإصدار أوفيس الذى تستخدمة -قم باختيار وضع التصميم يعنى عرض التصميم وليس معالج إنشاء استعلام -قم بإغلاق نافذة عرض الجداول أو Show Table http://www.qahtaan.com/works/up/get....zqjg1202078853 سنقوم الان بانشاء الاستعلام بدلالة 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 ؟:confused: سنقوم بإدخال القيم التالية VALUES (@ProjectID, @ProjectName, @ProjectDescription, @SequenceNumber, Date()+Time()); القيم المذكورة على الترتيب ولكن أين سنقوم بوضع هذة القيم؟:confused: سنقوم بوضعها فى الحقول التالية على الترتيب (ProjectID, ProjectName, ProjectDescription, SequenceNumber, LastUpdateDate) بعد أن قمنا بكتابة صيغة الاستعلام يمكننا مشاهدتة عن طريق View ثم Design View قم الان بعمل حفظ ستظهر لك رسالة تفيد باختيار اسم للاستعلام قم بحفظها باسم usp_InsertProject و usp هذة هى اختصار للجملة user stored procedure وهذة التسمية ضرورية طالما أننا سنتعامل من خلال الفيجوال 2005 http://www.qahtaan.com/works/up/get....ehip1202078931 لكى نتأكد الان من صحة العمل قم بالذهاب إلى View ثم اختر Datasheet View ستظهر لك نافذة تطلب منك إدخال ProjectID ثم بالضغط على ok سيطلب منك القيمة التالية ProjectName وفى النهاية سيقوم بإدراج التاريخ والوقت الحالى تلقائيا دون أن يطلب منك ذلك لكنة يبقى هناك سؤال مهم ماذا سنكتب فى خانة ProjectID ؟:confused: إذا نظرنا نظرة سريعة على الدرس الأول فى موضوع التعامل مع قواعد البيانات فإننا سنجد أننا قمنا بجعل محتوى الحقول GroupID و ProjectID و GroupProjectID رقم وأن من خصائص هذا الحقل أن طولة = Replication ID ومعنى هذة الجملة Replication ID بصورة دقيقة تم توليدة أو إنشاؤة و ليس معناة مستنسخ فقد كنت مخطئا عندما عبرت عنة بأنة مستنسخ لأن هناك شرط فى عملية الاستنساخ وهو وجود الشىء الذى سيتم النسخ منة ووجود النسخة الناشئة عن عملية النسخ وهذا الشرط لن يكون متوفرا فيكون المعنى هو مولد أو منشاء بضم الميم ماهو هذا الرقم الذى سيتم وضعة ومن أين نأتى بة؟:confused: سنقوم نحن بتوليد هذا الرقم وهو رقم تعريف أو رقم هوية ولة مواصفات خاصة يتم الحصول عليها من خلال الويندوز وهو رقم تجدونة كثيرا من ضمن الأرقام الخاصة ببعض قيم الرجيسترى المعرفة بل هو نفسة وهو بالتحديد رقم Identities لذلك يتم اختصارة إلى ID إذن Identities هى تعريف أو دليل -إن أرقام ID التى هى Identities تتكون من 32 رقم مقسمة إلى أربع مجموعات بين كل مجموعة ومجموعة يوجد فاصل وتحتوى على أرقام وحروف كبيرة Capital 3 مجموعات منها تتكون من أربعة رموز ومجموعة واحدة تتكون من 8 رموز ومجموعة أخيرة تتكون من 12 رمز مثل هذا 5D486569-90CA-434E-9FFD-EE5DABA81223 ويتم انشاؤها عشوائيا بدون ترابط بين الرقم السابق والرقم الحالى والرقم القادم ولكن هناك خطاء نقوم دائما بارتكابة وبإصرار غريب وهو أننا نطلق علية لفظ رقم فكما رأينا هو ليس رقم فهو يحتوى على حروف وأرقام وهناك أيضا فواصل إذن هو ليس رقم إنة ID كيف نقوم بعمل هذا ID ؟:confused: -قم بفتح مشروع جديد ثم قم بإدراج TextBox وButton -قم بوضعهما بشكل مناسب مثل هذا http://www.qahtaan.com/works/up/get....orsu1202078931 قم بوضع الكود التالى فى 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 عند وجود أكثر من مشروع و يتبع...... |
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
Part4-تعريف Currency Manager
Currency Manager ما هو Currency Manager أو مدير التعاملات؟ هو مجموعة من أدوات التحكم تقوم بإدارة الاتصال بقاعدة البيانات وربطها بالتطبيق وعرض البيانات داخل الفورم ولكن لكى نفهم معنى Currency Manager يجب أن نعرف مسار عملية الإتصال بقاعدة البيانات -عندما تريد الإتصال بقاعدة البيانات بغرض التحكم فى محتوياتها فمعنى ذلك أنة قد صدر أمر منك من خلال هذا الإتصال الصادر منك إلى قاعدة البيانات وهذا يسمى Data Connection http://www.qahtaan.com/works/up/get....quvw1202155525 وعلى ذلك ينبغى أن يتم الرد فى الوارد http://www.qahtaan.com/works/up/get....dgfv1202155554 ويسمى الوارد من قاعدة البيانات إليك Data Adaptor ويتضمن معلومات حول الجداول والحقول التى قمت باختيارها إذن لدينا الان Data Connection و Data Adaptor ولكن كيف يمكن معرفة محتويات القاعدة من خلال الإتصال وبمعنى أكثر وضوحا كيف وبأى طريقة سيتم عرض المحتويات يتم تفصيل وتقسيم محتويات قاعدة البيانات فى جزء يعرف باسم DataSet حيث أنة يتم تحليل قاعدة البيانات إلى مكوناتها الرئيسية Tables وViews وStored Procedures و Functions ....الخ كما يتم عرض مكونات الجداول أيضا من حقول http://www.qahtaan.com/works/up/get....utm01202155607 بعد ذلك تذهب كافة المعلومات إلى أداة الربط Binding Source ومن خلال اسمها فمن الواضح أنها تقوم بتثبيت الاتصال الذى تم إنشاؤة وربط المعلومات بالفورم الذى ستقوم من خلالة بعرض البيانات http://www.qahtaan.com/works/up/get....jpqy1202155640 إذن هذا هو مسار الاتصال بقاعدة بيانات يمكننا أن نقوم بالحصول على البيانات عن طريق سلوك نفس المسار باستخدام كود دون أن نقوم بربط كل مربع نص بالحقل المطلوب هل يمكن ذلك مثال نفترض أن لدينا قاعدة بيانات 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") ويجب أ ن نعتبرها قاعدة ويمكنكم دائما استخدام هذة القاعدة لإنشاء الكود http://www.qahtaan.com/works/up/get....hpry1202155680 خصائص 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 ولكن ليس هذا هو كل شىء فيبدوا أن هناك عدد من الوظائف نحتاج إليها مثل الإضافة والإزالة والبحث أنتهى درس اليوم ... ويتبع........ |
رد : المدخل إلى فيجوال بيسيك 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 تصميم لهذا المشروع يمكنكم اختيار أحدهما أو ابتكار تصميم ثالث http://www.qahtaan.com/works/up/get....bwmx1202303691 أو هذا التصميم http://www.qahtaan.com/works/up/get....vlgt1202303691 أو ابتكار شكل جديد اخر اعتمادا على المكونات التى لديكم ومن المستحسن وضع كل محموعة من الأزرار داخل 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 أنتهى درس اليوم و الأمس معاً ,,,,,,,,, و يتبع....... |
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
3-مثال اخر على استخدام Currency Manager
المثال:1107953627: http://www.qahtaan.com/works/up/get....kntx1202424449 أولا يجب أن نقوم بإنشاء قاعدة بيانات جديدة وستحتوى قاعدة البيانات على جدول واحد بة 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 أنتهى درس اليوم و يتبع.......... ///////////////////// مبرمج آل معمر |
رد : المدخل إلى فيجوال بيسيك 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 http://www.qahtaan.com/works/up/get....nsuw1202482047 2-كليك يمين بالماوس على Data Connection ثم قم باختيار Add Connection http://www.qahtaan.com/works/up/get....hkoy1202482047 3-يظهر لك الان لوحة إضافة الإتصال وهى تفتح فى الوضع الإفتراضى على Microsoft Access Database File قم بالضغط على Change 4- قم باختيار Microsoft SQL Server Database File ثم OK http://www.qahtaan.com/works/up/get....jlr31202482047 5-قم بالضغط على Browse ثم اذهب إلى الدليل الذى قمت بوضع قاعدة البيانات بة http://www.qahtaan.com/works/up/get....ztd31202482047 6-للتأكد من أن الإتصال قد تم بصورة صحيحة قم بالضغط على Test Connection ثم OK http://www.qahtaan.com/works/up/get....r6qk1202482047 7-الان تم الاتصال بقاعدة البيانات ويمكنك استعراض محتوياتها من جداول وغيرها من المكونات وذلك بالضغط على + http://www.qahtaan.com/works/up/get....h4jz1202482302 أنتهى درس اليوم و يتبعـــــــــ.............................. /////////////////////// مبرمج آل معمر |
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
ثانيا :إنشاء مصدر البيانات وإضافة عناصر التحكم
فى هذا المثال سنقوم بربط أكثر من جدول داخل مشروع واحد -سنقوم الان بفتح مشروع جديد ثم نقوم بتنشيط الإتصال عن طريق عمل Re fresh وذلك عن طريق كليك يمين على NORTHWIND.MDF الموجودة فى Server Explorer أو انشاء اتصال جديد إذا لم نكن قمنا بعمل الاتصال من قبل -فى أقصى اليمين وفى Solution Explorer قم بالضغط على Data Sources ثم اضغط على Add New Data Source -قم باختيار Database ثم Next سوف تجد NORTHWIND.MDF فى مربع الاتصال متصلة بالفعل فإن لم تكن متصلا حتى هذة اللحظة يمكنك الاتصال وذلك عن طريق الضغط على New Connection ثم اتباع الخطوات السابقة ثم Next http://www.qahtaan.com/works/up/get....nsty1202593287 http://www.qahtaan.com/works/up/get....opqs1202593287 -تظهر الان رسالة تفيد بأنة هل تريد نسخ ملف قاعدة البيانات هذا إلى مجلدالمشروع والمستحسن فى هذة الحالة الموافقة حتى لا تضطر لأن تقوم بالاتصال فى كل مرة تقوم بفتح المشروع وحتى تصبح قاعدة البيانات جزء من المشروع قم بالضغط على Yes http://www.qahtaan.com/works/up/get....jkx81202593287 -قام المعالج الان باختيار اسم افتراضى للاتصال وهو NORTHWNDConnectionString يمكنك تغيير الاسم أو الاستمرار على الاسم الحالى ثم اضغط Next -سيقوم المعالج الان بفتح لوحة اختيار مكونات قاعدة البيانات قم بالضغط على علامة + الموجودة بجانب Tables سيتم عرض كل الجداول فى هذا المثال سنقوم باختيار عدد من الجداول وهى Customers و Orders ثم Orders Details لذلك قم بالتأشير أمام هذة الجداول وستجد أن المعالج قد قام بوضع اسم افتراضى DataSet وهو NORTHWNDDataSet يمكنك الإستمرار وذلك بالضغط على Finish http://www.qahtaan.com/works/up/get....kmtv1202593287 -يظهر لنا الان فى Data Source الجداول التى قمنا باختيارها -قم بالضغط على الجدول الأول Customers فتظهر لك قائمة منسدلة بها عدد من الخيارات قم باختيار Details http://www.qahtaan.com/works/up/get....78gz1202593287 -قم بالضغط على الجدول Customer بزر الماوس الأيسر مع الاسمرار بالضغط ثم قم بسحبة إلى داخل الفورم سيتم إدراج مكونات الجدول تلقائيا إلى داخل الفورم ويمكنك الان تغيير أسماء العناصر المدرجة وترتيب العناصر كما تريد -سنقوم بعمل نفس الطريقة السابقة مع الجدول Orders ثم مع جدول Order Details ولكن مع اختيار DataGirdView بدلا من Details ويمكننا تغيير حجمهما ليصبحان ملائمان لحجم الفورم أو كما تريد قم الان بتجربة المشروع عن طريق الضغط على F5 http://www.qahtaan.com/works/up/get....klsu1202593631 أنتهى درس اليوم و يتبع......... |
رد : المدخل إلى فيجوال بيسيك 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 وهذا مخطط بسيط يوضح عملية الربط بالنسبة لقاعدة البيانات التى نحن بصددها http://www.qahtaan.com/works/up/get....puvy1202660770 سنقوم بإضافة استعلام فى Customers ولعمل ذلك كليك يمين على CustomersTableAdapte ثم Add Query http://www.qahtaan.com/works/up/get....hjqr1202660770 يظهر لك الان ديالوج Search Criteria Builder ومعناة منشىء معايير البحث ويوجد بة استعلام افتراضى فى مربع Query Text سنقوم بإضافة هذة العبارة فى نهاية السطر كود WHERE CustomerID = @CustomerID http://www.qahtaan.com/works/up/get....izuh1202660770 ثم OK يظهر لك الان FillByCustomerIDToolStrip فى أعلى الفورم قم بعمل كليك يمين بالماوس علي ToolStrip’s CustomerID text box ثم Convert to اختر ComboBox http://www.qahtaan.com/works/up/get....hinu1202660770 الان سنقوم بتغيير بعض خصائص هذا ComboBox قم بعمل كليك يمين بالماوس علية واختر Properties ثم اذهب إلى لوحة الخصائص وقم بتغيير الخصائص الاتية -الإسم Name إلى cboCustomerID بدلا من CustomerIDToolStripTextBox -قم بتغيير الخاصية فى DropDownStyle إلى DropDownList -ثم خاصية DropDownWidth إلى 75 -إذهب إلى الخاصية Item ثم قم بالضغط على Collection تظهر لك لوحة تحرير النص قم بكتابةعدد من CustomerID فى كل سطر مثلا ALFKI ANATR ANTON http://www.qahtaan.com/works/up/get....bs371202660770 وذلك على سبيل التجربة ثم قم بتجربة البرنامج عن طريق 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 http://www.qahtaan.com/works/up/get....5qn11202660927 قم بتجربة العمل وذلك عن طريق استدعاء أحد CustomerID الموجودة فى ComboBoxثم GetOrder سيقوم بإحضار بيانات العميل المطلوب http://www.qahtaan.com/works/up/get....lrsu1202660927 سنقوم الان بإضافة استعلام اخر -كليك يمين بالماوس على OrdersTableAdapt ثم Add Query -سنقوم بإضافة العبارة التالية فى نهاية الاستعلام الافتراضى الموجود فى مربع Query Text كود:
WHERE CustomerID = @CustomerID ORDER BY OrderID DESC -كليك يمين بالماوس على Orders_DetailsTableAdapt ثم Add Query -سنقوم بإضافة العبارة التالية فى نهاية الاستعلام الافتراضى الموجود فى مربع Query Text http://www.qahtaan.com/works/up/get....qrsv1202660927 سنقوم الان بإحداث بعض التغييرات البسيطة فى الكود قم بالضغط على الفورم ضغطة مزدوجة لفتح صفحة الكود ثم قم بحذف الجزء الموضح بالصورة ثم قم بتجربة البرنامج http://www.qahtaan.com/works/up/get....rstw1202660927 كيفية عمل هذا البرنامج؟:confused: http://www.qahtaan.com/works/up/get....ilmy1202660927 -عندما تقوم باستدعاء 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 ...الخ ولكن هل بذلك انتهى هذا المشروع؟:confused: بالطبع لا فلا زال هناك الكثير فليس من المعقول أن نقوم باستدعاء كل بيان من البيانات بصورة منفصلة نريد أن نقوم باستدعائهم بضغطة واحدة كما نريد إضافة وحذف وتعديل.....الخ فكيف نقوم بذلك؟:confused: هذا ما سنعرفة فى الجزء القادم يمكنكم تجربة ما قمنا بإنجازة حتى هذة المرحلة بتحميل المشروع من الرابط التالى http://www.zshare.net/download/407611846e7fb2 *** رابعا: دمج مربعات النص إلى ComboBox المطلوب الان هو احضار البيانات كاملة من الجداول الثلاثة دفعة واحدة وليست بطريقة متفرقة قم بفتح صفحة الكود ثم اذهب إلى الكود الخاص بمربع النص الموجود بشريط الأدوات الثانى الخاص بالجدول Order الذى هو يبداء بهذا السطر كود:
Private Sub FillByCustomerIDToolStripButton1_Click كود:
Me.OrdersTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Orders, CustomerIDToolStripTextBox.Text) كود:
Me.OrdersTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Orders, cboCustomerID.Text) كود:
Private Sub FillByCustomerIDToolStripButton_Click سنقوم بعمل نفس الطريقة مع شريط الأدوات الثالث الخاص بالجدول Order_Detailes فيصبح الكود كالتالى كود:
Me.Order_DetailsTableAdapter.FillByCustomerID(Me.NORTHWNDDataSet.Order_Details, cboCustomerID.Text) قم الان بتجربة البرنامج وقم باستدعاء أحد العملاء ثم اضغط GetOrder لتجد الان أن كافة البيانات بالجداول الثلاثة قد تم تعبئتها بهذة المرحلة نلاحظ الاتى -لم نقم باستخدام أى كود من أكواد الفيجوال بيسيك -يمكن لمستخدمى لغة #C استخدام نفس الطريقة حتى هذة المرحلة بدمج مربعات النصوص الثلاثة إلى ComboBox تنتهى هذة المرحلة و Part6 يمكنكم تحميل المشروع من الرابط التالى http://www.zshare.net/download/411063349c0e10 وبهذ أنتهى درس اليوم و يتبع بأذن الله....... |
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
خامسا: ربط قواعد بياناتSQLServer وانشاء زر البحث باستخدام ADO.NET 2.0
سنقوم فى هذا اليوم بمعرفة كيفية عمل ربط للفورم بقاعدة بيانات SQL من خلال الاتصال بسيرفر SQL2005Express وباستخدام ADO.NET 2.0 نصيحة فى البداية يفضل عمل مجلد اسمة Database ووضع قواعد البيانات بداخلة ليسهل ايجادها قم بفتح الفيجوال ستوديو ثم اضغط على View الموجودة فى شريط الأدوات وقم باختيار Server Explorer http://www.qahtaan.com/works/up/get....suwy1202742101 تظهر لك نافذة مستعرض السيرفر فى أقصى اليسار قم بعمل كليك يمين بالماوس على Data Connection ثم اضغط على Add Connection http://www.qahtaan.com/works/up/get....mnpx1202742101 الان تظهر أمامك نافذة Choose Data Source قم باختيار Microsoft SQL Server ثم Continue http://www.qahtaan.com/works/up/get....h1mr1202742101 فى مربع Server Name نقوم بكتابة اسم السيرفر وحيث أننا سنعمل على السيرفر المحلى والذى هو لدينا SQL Express 2005 سيكون اسم السيرفر هو ./sqlexpress من الشمال لليمين طبعا نفترض الان أننا نريد أن نقوم باختيار قاعدة بيانات Northwind قم بالتأشير أمام Attach a Database File ثم قم بإيجادها عن طريق الضغط على Browse والتوجة للمسار الذى قمت بوضع قاعدة البيانات بة ثم قم بعمل اختبار للاتصال عن طريق الضغط على Test Connection عند النجاح اضغط OK و عند الفشل فهذا أمر اخر http://www.qahtaan.com/works/up/get....kquv1202742101 الان تم الاتصال بنجاح نذهب إلى قائمة File ثم New Project ونقوم باختيار Windows Application ثم نقم بتسميتة حسب الرغبة قم بالضغط الان على Data Source فى أقصى اليمين ثم Add New Data Sopurce http://www.qahtaan.com/works/up/get....lotu1202742101 ثم نختار Database و next http://www.qahtaan.com/works/up/get....noqu1202742268 تأكد من أن قاعدة البيانات الموجودة هى المطلوبة وليست قاعدة أخرى فإن لم تكن فيمكنك احتيارها يدويا http://www.qahtaan.com/works/up/get....xyz21202742268 فى الخطوة التالية سنختار No ومعنى ذلك أننا سنظل مرتبطين بالسيرفر http://www.qahtaan.com/works/up/get....sgkz1202742269 نقوم الان باختيار الجدول التى نريدها وقد قمت باختيار الجدولين Customers و OrderDetails ثم يمكنكم أيضا تغيير اسم DataSet إلى CustomerOrderDetails DataSet أو تركها بدون تسمية ثم Finish http://www.qahtaan.com/works/up/get....opsx1202742269 الان لدينا عدد 2 جدول قم بالضغط بالماوس على السهم الموجود بحافة أحد الجدولين تظهر لك قائمة منسدلة قم باختيار Details فى الجدول Customer ثم قم بالضغط على الجدول بالماوس وسحبة إلى داخل الفورم ووضعة بشكل مناسب http://www.qahtaan.com/works/up/get....hmst1202742269 بالنسبة للجدول الثانى قم بعمل نفس الشىء ولكن قم باختيار DataGirdView ثم قم بسحبة بنفس الطريقة إلى داخل الفورم وقم بوضعة هو أيضا بشكل مناسب http://www.qahtaan.com/works/up/get....lnrt1202742410 أصبح لدينا الان فورم جاهز تماما ومرتبط بقاعدة بيانات وقابل للعمل بكافة وظائفة http://www.qahtaan.com/works/up/get....pqsy1202742410 يمكنكم الان تجربة تشغيل البرنامج بالضغط على F5 وتجربة عمل حذف أو إضافة أو تعديل لأحد الحقول يبدوا لى أن كل الوظائف تعمل بكفاءة دون أن نقوم بكتابة حرف كود واحد ويمكن عمل ذلك أيضا فى #C بدون أى اختلاف لماذا قمنا فى هذة الخطوة باختيار NO ؟ قمنا باختيار No بغرض عدم استحضار قاعدة البيانات إلى مجلد المشروع ليصبح المشروع كلة قائما على وجود قاعدة البيانات على السيرفر بغرض عمل محاكاة لقاعدة بيانات موجودة على سيرفر بعيد لن يسمح لك أصلا باستقدام قاعدة البيانات إلى داخل المشروع وليصبح المشروع كلة Server dependent أى أنة لن يسمح السيرفر لك لك أيضا بعمل تحديث أو إضافة للبيانات إلا إذا كنت متصلا بة بالفعل لذلك كل من قام بتحميل المشروعات من الروابط لن تعمل معة لهذا السبب ماذا لو أننا قمنا باختيار Yes ؟ إذا قمنا باختيار Yes بافتراض أن السيرفر يسمح بهذا الأمر أو أن لديك الصلاحيات لذلك سيتم استيراد القاعدة إلى المشروع ويمكنك عمل أى تغيير فى البيانات الموجودة داخل قاعدة البيانات وعلى ذلك ستحتاج لعمل تزامن مع السيرفر على فترات متفاوتة ومعنى تزامن أى تحديث للبيانات خلال أزمنة محددة مثلا تحديث البيانات فى الساعة 12 مساء ليتم نقل التغييرات التى حدثت فى قاعدة البيانات إلى القاعدة الرئيسبة على السيرفر ولكن هذا الموضوع لا يتم تلقائيا ولكن يلزمة عمل مشروع اخر مع السيرفر وهو مشروع تزامن قاعدة البيانات Database Sync كيف يمكننا عمل بحث على قاعدة البيانات هذة سواء كانت موجودة على السيرفر أو كانت Sync ؟ أنتهى الدرس يتبع بأذن الله ..... |
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
كيفية عمل بحث فى داخل قاعدة بيانات SQL فى ADO.NET 2.0
-قم بعمل مشروع جديد على قاعدة بيانات Payables بنفس الطريقة التى شرحناها بالأمس واختر الجدول Vendor ثم تابع الخطوات إلى نهايتها ثم قم بإدراج Data Gird View إلى الفورم بنفس الطريقة التى اتبعناها سابقا - بعد أن تنتهى من إنشاء المشروع قم بالضغط على زر التخصيص فى أقصى اليمين على حافة Data Gird View ومن القائمة اختر Dock in Parent Container ووظيفة هذة الخاصية هو عمل اتساع أقصى لل Data Gird View لتملاء الفورم http://www.qahtaan.com/works/up/get....nouw1203030820 قم بالضغط على F5 لتجربة البرنامج ثم قم بتغيير أحد البيانات على سبيل التجربة ثم الضغط على زر Save ثم أغلقة وأعد فتحة لنرى إن كان التغيير الذى قمت بعملة قد تم حفظة أم لا -بعد التأكد من صحة العمل سنقوم بعمل فورم البحث داخل قاعدة البيانات هذة -قم بالضغط على Solution Explorer لرؤية مكونات المشروع -كليك يمين على رمز المشروع فى أعلى Solution Explorer ثم Add ثم اختر Windows Form http://www.qahtaan.com/works/up/get....ilmp1203030820 قم بتسمية الفورم الجديد VendorSearch كما هو موضح أمامكم ثم اضغط Add http://www.qahtaan.com/works/up/get....djsm1203030820 الان تمت إضافة الفورم اذهب الان إلى شريط الأدوات Tool Bar واضغط على Project ثم اختر Vendor Properties وهى Vendor لأننى قمت بتسمية المشروع كذلك وسيختلف الاسم طبعا طبقا لاسم المشروع ثم قم بتغيير Startup Form من Form1 ليصبح VendorSearch ووظيفة هذة الخطوة هى أن نجعل فورم البحث يظهر بدلا من الفورم الأول عند تشغيل المشروع ثم اضغط F5 للتأكد من أن الفورم الجديد هو الذى سيظهر عند تشغيل المشروع http://www.qahtaan.com/works/up/get....woz71203030820 http://www.qahtaan.com/works/up/get....qruv1203030820 اذهب الان إلى شريط الأدوات Tool Bar واضغط على Data ثم اضغط Add New Data Source -قم بمتابعة خطوات المعالج كما سبق ثم اختر نفس الجدول وقم بتسمية DataSet باسم VendorSearchDataSet -قم بالذهاب إلى نافذة DataSource ثم قم بإدراج Data GirdView من VendorSearchDataSe إلى داخل الفورم وقم بظبطها وعمل Dock in Parent Container كما سبق - إضغط على زر التخصيص فى أقصى اليمين على حافة Data Gird View ومن القائمة اختر Add Query http://www.qahtaan.com/works/up/get....gorx1203030973 -سيظهر الان نافذة Search Criteria Builder قم بتسمية FillBy إلى FillByName ثم اضغط على Query Builder http://www.qahtaan.com/works/up/get....mqvw1203030973 أمامنا الان نافذة Query Builder وبما أننا اخترنا أن نقوم بعمل بحث باستخدام Name فيجب علينا أن نذهب إلى الصف Name وبالتحديد الخانة Filter ونقوم بكتابة الصيغة التالية كود:
LIKE @Name + '%' ثم نقوم بالضغط على Execute Query ستظهر لك نافذة Query Parameter إحداثيات الإستعلام فإذا لم تظهر لك هذة النافذة فهناك خطاء لديك فى الجملة المبنية لذلك أرجوا التركيز جيدا فى هذة النقطة http://www.qahtaan.com/works/up/get....nqsu1203030974 -قم بتجربة كتابة أحد الأحرف بدلا من Null فى Value ثم Ok ثم انظر إلى الجدول لتجد أنة قام بإحضار كافة الأسماء التى تبداء بالحرف A الذى قمت أنا بتجربتة http://www.qahtaan.com/works/up/get....glrs1203030974 ثم OK وOk لتجد أنة قد ظهر لك FillByNameToolStrip فى أعلى الفورم قم بتجربة المشروع وذلك ب F5 ثم ضع حرف فى Text Box ثم اضغط على زر Fill By Name لتجد أنة قام باحضار ما تبحث عنة http://www.qahtaan.com/works/up/get....y4ri1203031134 نعود للفورم الان ونقوم بفتح صفحة الكود ثم حذف هذا السطر كود:
Me.VendorsTableAdapter.Fill(Me.VendorSearchDataSet.Vendors) والفائدة من حذفة هى أن تظهر لك المحتويات فارغة عند فتح المشروع http://www.qahtaan.com/works/up/get....qsxy1203031134 كما رأينا فإننا قمنا بعمل ربط لقاعدة البيانات المتواجدة على سيرفر وكذلك فورم البحث بدون كتابة أكواد فيجوال بيسيك أو غيرها من اللغات -عندما نريد العمل مع سيرفر يعيد يعنى خارج الشبكة المحلية فإن الاختلافات ستكون اختلافات بسيطة جدة وهى تتمثل فى طبيعة السيرفر المطلوب الاتصال بة -هذا المثال يمكن تطبيقة أيضا OffLine وذلك بالموافقة على استيراد قاعدة البيانات إلى داخل المشروع مع إحداث تغييرات بسيطة -قمنا سابقا بمعرفة كيفية ربط عدد من الجداول داخل نفس المشروع ولكننا لم نقم بعمل إنهاء لة وعلى ذلك سأقوم بشرح مثال شامل أقوم فية بتجميع كل ما تم معرفتة حتى الان وكذلك إنشاء العمليات المساعدة للمشروع مثل لوحات دخول المستخدمين وكذلك إنشاء أسلوب للاتصال من داخل المشروع نفسة -معلومة مهمة وهى ان نجاح المشروع يعتمد على الربط الصحيح للجداول و User Stored Proceduer كما أشرت فى بداية شرح قواعد البيانات وبهذا أنتهى درس اليوم و يتبع............ |
رد : المدخل إلى فيجوال بيسيك 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 ويستخدمان لتخزين القيم التقريبية |
الساعة الآن 06:50 AM |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. TranZ By
Almuhajir
جميع الحقوق الأدبيه والفكرية محفوظة لشبكة قحطان وعلى من يقتبس من الموقع الأشارة الى المصدر
وجميع المواضيع والمشاركات المطروحه في المجالس لاتمثل على وجه الأساس رأي ووجهة نظر الموقع أو أفراد قبيلة قحطان إنما تمثل وجهة نظر كاتبها .
Copyright ©2003 - 2011, www.qahtaan.com