ماشاء الله تبارك الله ماشاء الله لاقوة الا بالله , اللهم اني اسالك الهدى والتقى والعفاف والغنى
" قُلْ أَعُوذُ بِرَبِّ الْفَلَقِ *مِن شَرِّ مَا خَلَقَ * وَمِن شَرِّ غَاسِقٍ إِذَا وَقَبَ * وَمِن شَرِّ النَّفَّاثَاتِ فِي الْعُقَدِ * وَمِن شَرِّ حَاسِدٍ إِذَا حَسَدَ ". صدق الله العظيم
الساده الاعضاء و زوار منتديات المهندسين العرب الكرام , , مشاهده القنوات الفضائيه بدون كارت مخالف للقوانين والمنتدى للغرض التعليمى فقط
   
Press Here To Hidden Advertise.:: إعلانات منتديات المهندسين العرب لطلب الاعلان عمل موضوع بقسم الشكاوي ::.

 IPTV Reseller

  لطلب الاعلان عمل موضوع بقسم طلبات الاعلانات اسفل المنتدى لطلب الاعلان عمل موضوع بقسم طلبات الاعلانات اسفل المنتدى لطلب الاعلان عمل موضوع بقسم طلبات الاعلانات اسفل المنتدى

Powerd By : Mohandsen.com

العودة   المهندسين العرب > المنتديات الفضائية > قسم لغات البرمجه

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
  رقم المشاركة : ( 1 )  
قديم 13/11/2009, 08:20 PM
الصورة الرمزية bobofay
 
bobofay
مـهـند س جـديـد

 الأوسمة و جوائز
 بينات الاتصال بالعضو
 اخر مواضيع العضو
  bobofay غير متصل  
الملف الشخصي
رقم العضوية : 186742
تاريخ التسجيل : Nov 2009
العمـر : 44
الـجنـس :
الدولـة :
المشاركـات : 4 [+]
آخــر تواجـد : ()
عدد الـنقـاط : 10
قوة التـرشيـح : bobofay يستاهل التميز
افتراضي إستخدام 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
وطبعا سيتم كتابتها فى 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

infocommand = newoledcommand (* select * from information order by last**** info connection )

ثم InfoAdapter

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

كود:
 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

كود:
InfoManager = DirectCast(Me.***dingCon****(InfoTable), CurrencyManager)
ثم Cal

كود:
 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
ثم ShowPhoto

كود:
 
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
فإذا أردنا البحث عن الإسم مثلا First****

كود:
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 )
azizo
مـهـند س فـعال

الصورة الرمزية azizo

الملف الشخصي
رقم العضوية : 8809
تاريخ التسجيل : Mar 2006
العمـر :
الجنـس :
الدولـة :
المشاركات : 127 [+]
آخر تواجـد : ()
عدد النقاط : 10
قوة الترشيـح : azizo يستاهل التميز

 الأوسمة و جوائز
 بينات الاتصال بالعضو
 اخر مواضيع العضو

azizo غير متصل

افتراضي رد: إستخدام Currency Manager فى ربط قاعدة بيانات أكسس فى فيجوال بيسيك 2005

مشكوووورر ولكن رابط المشروع لايعمل او غير صحيح ارجو المتابعة والى الامام
  رد مع اقتباس
قديم 17/12/2009, 02:01 AM   رقم المشاركة : ( 3 )
ابو ملك2008
مـهـندس مـحـتـرف

الصورة الرمزية ابو ملك2008

الملف الشخصي
رقم العضوية : 112874
تاريخ التسجيل : Aug 2008
العمـر : 42
الجنـس :
الدولـة :
المشاركات : 1,451 [+]
آخر تواجـد : ()
عدد النقاط : 164
قوة الترشيـح : ابو ملك2008 يستاهل التميزابو ملك2008 يستاهل التميز

 الأوسمة و جوائز
 بينات الاتصال بالعضو
 اخر مواضيع العضو

ابو ملك2008 غير متصل

افتراضي رد: إستخدام Currency Manager فى ربط قاعدة بيانات أكسس فى فيجوال بيسيك 2005

مشكور بارك الله فيك
  رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


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

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

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

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


الساعة الآن 11:30 AM


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. TranZ By Almuhajir

Google Adsense Privacy Policy | سياسة الخصوصية لـ جوجل ادسنس

الساده الاعضاء و زوار منتديات المهندسين العرب الكرام , , مشاهده القنوات الفضائيه بدون كارت مخالف للقوانين والمنتدى للغرض التعليمى فقط

RSS RSS 2.0 XML MAP HTML

^-^ جميع آلمشآركآت آلمكتوبهـ تعبّر عن وجهة نظر صآحبهآ ,, ولا تعبّر بأي شكلـ من آلأشكآل عن وجهة نظر إدآرة آلمنتدى ~