29-09-12, 04:19 AM
السلام عليكم ورحمة الله وبركاته
ساقوم بشرح طريقه بسيطه للتنقل بين قواعد البيانات داخل البرنامج وقت التنفيذ الطريقه صغيره لكن مع تفعيلها وتطويرها يمكن الاستفاده منها من خلال التنقل بين السنوات الماليه للمشاريع المحاسبيه او الصغيره اوالمتوسطه.
الشرح نقلته من المنتدى السابق وهو لم يكن موضوع بل كان رد (جواب) لي على عضو يسمى الاهدل يستفسر عن تغيير مسار قاعدة البيانات من داخل البرنامج وكان الجواب كما يلي
بسم الله نبدا الشرح .
اولا قم بعمل مجلدات داخل مجلد المشروع واعط المجلدات اسماء باسماء الاعوام مثل مجلد باسم 2011 ومجلد باسم 2012
ثانيا قم بخزن قاعدة البيانات داخل المجلدات وبامكانك خزن قواعد بيانات مختلفة الاسماء والجداول مختلفه وليست ضروره ان تكون الاسماء متشابهه لكن في الشرح ساقوم باستخدام نفس الاسماء للقواعد وكذلك الجداول وسيكون اسم القواعد db1 والجداول table1 والحقول name1 و y .
واسماء المجلدات التي ستخزن عليها القواعد تكون 2011 و 2012 .
الان انتقل الى المشروع في الفيجوال واضف Combo1 و Text1 و Text2
واجعل style الخاص ب Combo1 = 2 opdwnlist لكي لايتم الكتابه داخل Combo1 .
الان اذهب الى صفحة الاكواد
في قسم التصريحات
لتعريف الاتصال
ساقوم بشرح طريقه بسيطه للتنقل بين قواعد البيانات داخل البرنامج وقت التنفيذ الطريقه صغيره لكن مع تفعيلها وتطويرها يمكن الاستفاده منها من خلال التنقل بين السنوات الماليه للمشاريع المحاسبيه او الصغيره اوالمتوسطه.
الشرح نقلته من المنتدى السابق وهو لم يكن موضوع بل كان رد (جواب) لي على عضو يسمى الاهدل يستفسر عن تغيير مسار قاعدة البيانات من داخل البرنامج وكان الجواب كما يلي
بسم الله نبدا الشرح .
اولا قم بعمل مجلدات داخل مجلد المشروع واعط المجلدات اسماء باسماء الاعوام مثل مجلد باسم 2011 ومجلد باسم 2012
ثانيا قم بخزن قاعدة البيانات داخل المجلدات وبامكانك خزن قواعد بيانات مختلفة الاسماء والجداول مختلفه وليست ضروره ان تكون الاسماء متشابهه لكن في الشرح ساقوم باستخدام نفس الاسماء للقواعد وكذلك الجداول وسيكون اسم القواعد db1 والجداول table1 والحقول name1 و y .
واسماء المجلدات التي ستخزن عليها القواعد تكون 2011 و 2012 .
الان انتقل الى المشروع في الفيجوال واضف Combo1 و Text1 و Text2
واجعل style الخاص ب Combo1 = 2 opdwnlist لكي لايتم الكتابه داخل Combo1 .
الان اذهب الى صفحة الاكواد
في قسم التصريحات
لتعريف الاتصال
Dim RS As New ADODB.Recordset
Dim DB As New ADODB.Connection في Form_Load لتعبئة Combo1 بالاعوام
Private Sub Form_Load()
Combo1.AddItem "2010"
Combo1.AddItem "2011"
Combo1.AddItem "2012"
Combo1.AddItem "2013"
End Sub
Combo1.AddItem "2010"
Combo1.AddItem "2011"
Combo1.AddItem "2012"
Combo1.AddItem "2013"
End Sub
الان نعمل اجراءت لاستدعائها عند اختيار العام من Combo1
الاجراء الاول سنسميه y2011 وسنقوم باضافة كود الاتصال بقاعدة البيانات التي توجد داخل المجلد2011 وسنضيف للاجراء كود فتح الجدول كود جلب البيانات من الحقول الى Text1 و Text2
الكود
الاجراء الاول سنسميه y2011 وسنقوم باضافة كود الاتصال بقاعدة البيانات التي توجد داخل المجلد2011 وسنضيف للاجراء كود فتح الجدول كود جلب البيانات من الحقول الى Text1 و Text2
الكود
Public Sub y2011()
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2011\db1.mdb"
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2011\db1.mdb"
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
والان الاجراء y2012 وهو نفس الاكواد التي في الاجراء y2011 بما ان القواعد والحقول والجداول تحمل نفس الاسماء لكن سيتغير كود مسار قاعدة البيانات " & App.Path & "\2012\db1.mdb"
الكود
الكود
Public Sub y2012()
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2012\db1.mdb"
If RS.State = adStateOpen Then RS.Close
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2012\db1.mdb"
If RS.State = adStateOpen Then RS.Close
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
الان ننتقل الى الكود الاخير وهو في Combo1 داخل حدث Click وذلك عند اختيار العام 2011 سيقوم باستدعاء الاجراء Sub y2011 ولو اخترت العام 2012 سيستدعي الاجراء Sub y2012
وذلك من خلال امر الاستدعا Call ولو كان العام الذي ستختاره لايوجد له اجراء لكي يقوم باستدعاة ستظهر رساله تفيدك بانه لايمكن الاستدعاء
الكود
:
Private Sub Combo1_Click()
If Combo1.Text = "2011" Then
Call y2011
ElseIf Combo1.Text = "2012" Then
Call y2012
Else
MsgBox " ادخل العام الصحيح ", vbInformation, "النتيجة"
Exit Sub
End If
If Combo1.Text = "2011" Then
Call y2011
ElseIf Combo1.Text = "2012" Then
Call y2012
Else
MsgBox " ادخل العام الصحيح ", vbInformation, "النتيجة"
Exit Sub
End If
الكود بشكل كامل
Dim Db As New ADODB.Connection
Dim RS As New ADODB.Recordset
Private Sub Form_Load()
Combo1.AddItem "2010"
Combo1.AddItem "2011"
Combo1.AddItem "2012"
Combo1.AddItem "2013"
End Sub
Private Sub Combo1_Click()
If Combo1.Text = "2011" Then
Call y2011
ElseIf Combo1.Text = "2012" Then
Call y2012
Else
MsgBox " ادخل العام الصحيح ", vbInformation, "النتيجة"
Exit Sub
End If
End Sub
Public Sub y2011()
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2011\db1.mdb"
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
Public Sub y2012()
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2012\db1.mdb"
If RS.State = adStateOpen Then RS.Close
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
Dim Db As New ADODB.Connection
Dim RS As New ADODB.Recordset
Private Sub Form_Load()
Combo1.AddItem "2010"
Combo1.AddItem "2011"
Combo1.AddItem "2012"
Combo1.AddItem "2013"
End Sub
Private Sub Combo1_Click()
If Combo1.Text = "2011" Then
Call y2011
ElseIf Combo1.Text = "2012" Then
Call y2012
Else
MsgBox " ادخل العام الصحيح ", vbInformation, "النتيجة"
Exit Sub
End If
End Sub
Public Sub y2011()
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2011\db1.mdb"
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
Public Sub y2012()
Set DB = New ADODB.Connection
Set RS = New ADODB.Recordset
DB.Open "provider = microsoft.jet.oledb.4.0;data source = " & App.Path & "\2012\db1.mdb"
If RS.State = adStateOpen Then RS.Close
RS.Open "[Table1]", DB, adOpenStatic, adLockPessimistic
Text1.Text = RS!Name1
Text2.Text = RS!y
End Sub
المثال في المرفقات الذي يحمل اسم 2011 هوالذي طبقناة في الاعلى والذي يحمل اسم 2012 لم نقم بشرحه لكن يقوم باختيار قاعدة البيانات يدوياَ اثناء تنفيذالبرنامج دون عمل اي اجراءت وذلك عبر CommonDialog
بالتوفيق
بالتوفيق