|
|
أدوات الموضوع | انواع عرض الموضوع |
رقم المشاركة : ( 1 )
|
|||||||||||
|
|||||||||||
إستخدام Currency Manager فى ربط قاعدة بيانات أكسس فى فيجوال بيسيك 2005
Currency Manager ما هو Currency Manager أو مدير التعاملات هو مجموعة من أدوات التحكم تقوم بإدارة الاتصال بقاعدة البيانات وربطها بالتطبيق وعرض البيانات داخل الفورم ولكن لكى نفهم معنى Currency Manager يجب أن نعرف مسار عملية الإتصال بقاعدة البيانات -عندما تريد الإتصال بقاعدة البيانات بغرض التحكم فى محتوياتها فمعنى ذلك أنة قد صدر أمر منك من خلال هذا الإتصال الصادر منك إلى قاعدة البيانات وهذا يسمى Data Connection ويسمى الوارد من قاعدة البيانات إليك Data Adaptor ويتضمن معلومات حول الجداول والحقول التى قمت باختيارها إذن لدينا الان Data Connection و Data Adaptor ولكن كيف يمكن معرفة محتويات القاعدة من خلال الإتصال وبمعنى أكثر وضوحا كيف وبأى طريقة سيتم عرض المحتويات يتم تفصيل وتقسيم محتويات قاعدة البيانات فى جزء يعرف باسم DataSet حيث أنة يتم تحليل قاعدة البيانات إلى مكوناتها الرئيسية Tables وViews وStored Procedures و Functions ....الخ كما يتم عرض مكونات الجداول أيضا من حقول بعد ذلك تذهب كافة المعلومات إلى أداة الربط ***ding Source ومن خلال اسمها فمن الواضح أنها تقوم بتثبيت الاتصال الذى تم إنشاؤة وربط المعلومات بالفورم الذى ستقوم من خلالة بعرض البيانات إذن هذا هو مسار الاتصال بقاعدة بيانات يمكننا أن نقوم بالحصول على البيانات عن طريق سلوك نفس المسار باستخدام كود دون أن نقوم بربط كل مربع نص بالحقل المطلوب هل يمكن ذلك مثال نفترض أن لدينا قاعدة بيانات A وأن بها الجدول B وعدد من الحقول ba,bb,bc,bd وأنة أثناء عمل اتصال بقاعدة البيانات قام معالج الإتصال بعمل Dataset وقام بتسميتها مثلا CDataSet نستطيع أن نقوم بتجميع هذة المعلومات لإنشاء كود لإحضار البيانات التى فى الحقل ba وإظهارها فى ****Box داخل الفورم أى أننا نريد احضار النص **** الموجود فى قاعدة البيانات A فى الجدول B فى الحقل ba وربط البيانات Data***dings بمربع النص ****Box وبما أن DataSet قام بإحضار ما يلزمنا فى العمل فإننا سنذهب إلية ولن نذهب إلى قاعدة البيانات يمكننا ترتيب السطر السابق لنحصل على جملة مفيدة كالتالى ****Box.Data***dings.Add وAdd لأننا نريد إضافتة ثم نريد عرض **** الموجود فى DataSet المسماة CDataSet وبالتحديد فى الجدول B الحقل ba ("****", CDataSet, "B.ba") فتكون الصيغة الكاملة ****Box.Data***dings.Add("****", CDataSet, "B.ba") ويجب أ ن نعتبرها قاعدة ويمكنكم دائما استخدام هذة القاعدة لإنشاء الكود خصائص Currency Manager والمقصود بهذة الخصائص هو العمليات التى يمكننا تنفيذها 1-***dings لربط مجموعة من العناصر ليتم التحكم بها من خلال Currency Manager 2-Count لمعرفة عدد الصفوف المرتبطة مع Currency Manager 3-Current لاستدعاء الصف المرتبط حاليا مع Currency Manager 4-List لعرض قائمة تكون مرتبطة بقاعدة البيانات مثل DataViews 5-Position للتعامل مع الصف الحالى اعتمادا على رقم هذا الصف داخل قاعدة البيانات الوظائف التى يمكن تنفيذها من خلال Currency Manager 1- AddNew إضافة جديد 2- CancelCurrentEdit إلغاء التغييرات 3- EndCurrentEdit إنهاء وحفظ 4- Re fresh تحديث وإعادة تعبئة البيانات 5- RemoveAt إزالة ولكى نفهم ما هو الفرق بين الخاصية والوظيفة فإننا سنقوم بعمل مثال بسيط جدا مثال : الربط البسيط الغرض من هذا المثال هو كيف تتعلم أن تقوم بابتكار الكود دون أن تظل تبحث عن كود لإنشاء برنامجك الان نقوم بعمل ربط مباشر وبسيط للفورم بقاعدة البيانات دون أن نستخدم ***ding Navigator المثال سنقوم بعمل تطبيق Currency Manager والمثال الذى سنتعامل معة اليوم يصلح لأن يستخدم للتعامل مع بيانات الأفراد والمعلومات الخاصة بهم مثل موظف أو تلميذ أو ملف لأحد المرضى فى مستشفى أو ما شابة ذلك أولا يجب أن نقوم بإنشاء قاعدة بيانات جديدة وستحتوى قاعدة البيانات على جدول واحد بة 7 حقول يمكننا تسمية الجدول باسم مثل Information وتسمية قاعدة البيانات بأى اسم مثلا Informations الحقول هى 1-اسم الحقل ID Data Type=AutoNumber Indexed= Yes (No Duplicates) 2- First**** 3- Last**** 4- HomePhone 5- Grade 6- PictureFile وكلها نص **** 7- BirthDate ثم قم بحفظ قاعدة البيانات بصورة Access2000 قم بفتح مشروع جديد مستخدما فيجوال بيسيك 2005 مكوناتة كالتالى -عدد 3 ****Box -Date Time Picker - PictureBox -عدد 6 Lable -عدد 12 Buttons أمامنا الان عملية ترتيب هذة المكونات لتكون شكل ملائم ومناسب -فى خصائص PictureBox يمكنكم تغيير BackColor إلى أى لون كما يفضل تغيير خاصية Size إلى المقياس 3/2بمعنى أن يكون عرض مربع الصورة إلى طول مربع الصورة = 2 إلى 3 يعنى لو الطول 15 يكون العرض 10 ولو العرض 80 يكون الطول 120 وهكذا -من المستسحن تغيير الخاصية SizeMode إلى Zoom لكى تستطيع مشاهدة جوانب الصورة كاملة شاملة الحواف -من الممكن تغيير خاصية الإسم فى الأزرار الخاصة بالتالى فى **** وبدلا من أن نكتب السابق والتالى يمكننا كتابة الأول كالتالى |< والأخير هكذا >| وكلا من < و > للسابق والتالى فتصبح أزرار التحكم بصورة أفضل ولتغيير حجم Lable الذى سيكون أسفل صندوق الصورة قم بتغيير الخاصية Autosize إلى False سنقوم بتسمية بعض المكونات وهذا الموضوع اختيارى لكننى قمت بإعادة تسمية المكونات التالية Form1=frmInfo Lable أسفل الصورة= lblPhotoFile ****Box1= txtFirst**** ****Box2=txtLast**** ****Box3=txtHomePhone ****Box4=txtGrade btnFirstو btnPrevious و btnNext و btnLast و btnEdit و btnSave و btnCancel و btnAdd و btnDelete و btnPrint و btnExit و btnLoadPhoto قم الان بحفظ المشروع ثم قم بنقل قاعدة البيانات إلى المجلد الذى بة المشروع ندخل الان إلى مرحلة كتابة الكود ندخل الان إلى مرحلة كتابة الكود سنقوم باستيراد أسماء المجالات ****Spaces التى سنحتاجها وهى كود:
Imports System.Data Imports System.Data.OleDb ثم الإعلان عن المتغيرات كود:
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 لتعريف InfoConnection فإن الكود يكون التالى كود:
InfoConnection = New OleDbConnection _ ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " _ + Application.StartupPath + "\..\..\Informations.mdb") InfoConnection.Open() infocommand = newoledcommand (* select * from information order by last**** info connection ) ثم InfoAdapter كود:
InfoAdapter = New OleDbDataAdapter() InfoAdapter.SelectCommand = InfoCommand InfoTable = New DataTable() InfoAdapter.Fill(InfoTable) كود:
txtFirst****.Data***dings.Add("****", InfoTable, "First****") txtLast****.Data***dings.Add("****", InfoTable, "Last****") txtHomePhone.Data***dings.Add("****", InfoTable, "HomePhone") txtGrade.Data***dings.Add("****", InfoTable, "Grade") DateTimePicker1.Data***dings.Add("****", InfoTable, "BirthDate") lblPhotoFile.Data***dings.Add("****", InfoTable, "PictureFile") كود:
InfoManager = DirectCast(Me.***dingCon****(InfoTable), CurrencyManager) كود:
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 txtFirst****.ReadOnly = True txtLast****.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 txtFirst****.ReadOnly = False txtLast****.ReadOnly = False txtHomePhone.ReadOnly = False DateTimePicker1.Enabled = True btnLoadPhoto.Enabled = True txtGrade.ReadOnly = False End Select txtFirst****.Focus() End Sub كود:
Private Sub ShowPhoto() If lblPhotoFile.**** <> "" Then Try PictureBox1.Image = Image.FromFile(lblPhotoFile.****) 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.******s.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.*****)) _ , 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 = txtFirst****.**** SSize = e.Graphics.MeasureString(S, MyFont) e.Graphics.DrawString(S, MyFont, Brushes.Black, _ e.MarginBounds.X + CInt(0.5 * (200 - SSize.*****)), Y) Y += CInt(MyFont.Get******(e.Graphics)) S = txtLast****.**** SSize = e.Graphics.MeasureString(S, MyFont) e.Graphics.DrawString(S, MyFont, Brushes.Black, _ e.MarginBounds.X + CInt(0.5 * (200 - SSize.*****)), Y) Y += CInt(MyFont.Get******(e.Graphics)) S = txtGrade.**** SSize = e.Graphics.MeasureString(S, MyFont) e.Graphics.DrawString(S, MyFont, Brushes.Black, _ e.MarginBounds.X + CInt(0.5 * (200 - SSize.*****)), Y) End Sub كود:
Private Sub txtFirst****_KeyPress(ByVal sender As _ System.Object, ByVal e As System.******s.Forms. _ KeyPressEventArgs) Handles txtFirst****.KeyPress If e.KeyChar = ControlChars.Cr Then txtLast****.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.**** = " كود:
InfoManager.CancelCurrentEdit() If InfoState = "Add" Then InfoManager.Position = InfoBookmark End If Call ShowPhoto() Call SetState("View" كود:
If txtLast****.****.Trim = "" Then MessageBox.Show("يجب إدخال إسم العائلة", "إدخال خاطىء", _ MessageBoxButtons.OK, MessageBoxIcon.Information) txtLast****.Focus() Exit Sub End If Dim SavedItem As String = txtLast****.**** Dim SavedRow As Integer InfoManager.EndCurrentEdit() InfoTable.DefaultView.Sort = "Last****" SavedRow = InfoTable.DefaultView.Find(SavedItem) InfoManager.Position = SavedRow Call ShowPhoto() Call SetState("View") كود:
Call SetState("Edit") كود:
Try If OpenFileDialog1.ShowDialog = ******s.Forms.DialogResult.OK Then lblPhotoFile.**** = OpenFileDialog1.File**** Call ShowPhoto() End If Catch ex As Exception MessageBox.Show(ex.Message, "خطاءفى فتح الصورة", _ MessageBoxButtons.OK, MessageBoxIcon.Error) كود:
Dim Info******** As Drawing.Printing.Print******** Info******** = New Drawing.Printing.Print********() Info********.************ = "Info" AddHandler Info********.PrintPage, AddressOf Me.PrintInfo Dim SavedPosition As Integer = InfoManager.Position PrintPreviewDialog1.******** = Info******** PrintPreviewDialog1.ShowDialog() Info********.Dispose() InfoManager.Position = SavedPosition كود:
If MessageBox.Show("هل أنت متأكد من أنك تريد حذف هذا السجل" _ , "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question, _ MessageBoxDefaultButton.Button2) = ******s.Forms.DialogResult.Yes Then InfoManager.RemoveAt(InfoManager.Position) Call ShowPhoto() End If Call SetState("View") كود:
Close() http://www.zshare.net/download/37241619ac3ce2 ولعمل بحث على نفس المشروع -قم بإدراج ز و مربع نص قم باستخدام الصيغة التالية فى كود الزر كود:
InfoTable.DefaultView.Sort = "اسم عمود البحث" Dim FoundRow As Integer = InfoTable.DefaultView.Find(مربع النص) If FoundRow <> -1 Then InfoManager.Position = FoundRow End If كود:
InfoTable.DefaultView.Sort = "First****" Dim FoundRow As Integer = InfoTable.DefaultView.Find(****Box.****) If FoundRow <> -1 Then InfoManager.Position = FoundRow End If bobofay |
17/11/2009, 07:06 PM | رقم المشاركة : ( 2 ) | ||||
مـهـند س فـعال
|
رد: إستخدام Currency Manager فى ربط قاعدة بيانات أكسس فى فيجوال بيسيك 2005
مشكوووورر ولكن رابط المشروع لايعمل او غير صحيح ارجو المتابعة والى الامام
|
||||
17/12/2009, 02:01 AM | رقم المشاركة : ( 3 ) | ||||
مـهـندس مـحـتـرف
|
رد: إستخدام Currency Manager فى ربط قاعدة بيانات أكسس فى فيجوال بيسيك 2005
مشكور بارك الله فيك
|
||||
مواقع النشر (المفضلة) |
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
|
Google Adsense Privacy Policy | سياسة الخصوصية لـ جوجل ادسنس
^-^ جميع آلمشآركآت آلمكتوبهـ تعبّر عن وجهة نظر صآحبهآ ,, ولا تعبّر بأي شكلـ من آلأشكآل عن وجهة نظر إدآرة آلمنتدى ~