رمضان

كيفية التعامل مع مكتبة ال DAO

76 ردود في هذا الموضوع

الدرس الاول

لقد فكرت ان ان يكون شرحا شرح عملى أى على مثال تطبيقى وان يكون مثالنا هذا هو عمل دليل تليفون

ولكنى وجدت ان برنامج دليل التليفون هو اول مثال يتم شرحه فى أى كتاب من كتب البرمجة التى تتناول قواعد البيانات

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

- لظروف خاصه بهذا البرنامج - فيه الملفات العشوائية

فوجدت انه سيكون مثال مفيد لانه يتناول معظم المواضيع التى سنتتطرق إليها

أولاُ : هدف البرنامج أو لمن هذا البرنامج

لشركة نقل تعمل فى مجال نقل البضائع من مكان لاخر

أهم شيء فى أى برنامج هو تحليل البرنامج والتخطيط له

فدعنا نناقش هذا البرنامج معاً

يحتاج صاحب الشركة لتسجيل السيارات والسائقين والتباعين - التباع هو الحمال الذى يقوم بتحميل

البضائع وتنزيلها - والعملاء وتسجيل النقلات التى تقوم بها كل سياره وتسجيل مصاريف كل سيارة

وتسجيل كل مايصرفه او ما يحصل عليه كل يوم وتسجيل غياب التباعين لان التباع يعمل بأجر شهرى

بيما السائق يكون له عموله على كل نقله يقوم بها

ويحتاج فى أى وقت من الاوقات أن يقوم بحساب أجر اى تباع فى أى فتره يحددها هو

ويحتاج فى أى وقت من الاوقات أن يقوم بحساب عمولة أى سائق فى أى فتره يحددها هو

ويحتاج فى أى وقت من الاوقات أن يقوم ببمعرفة تفاصيل دخل أى سيارة فى أى فتره يحددها هو

ويحتاج فى أى وقت من الاوقات أن يقوم بحساب مصروفاتها هو فى أى فتره يحددها هو

ويحتاج فى أى وقت من الاوقات أن يقوم بإجراء حسابات أى عميل فى فتره يحددها هو

مع العلم ان تعامله مع العميل ان يحصل منه على الاموال يشترى بها بونات من الشركة وبهذه البونات يحصل على البضاعة

وفى حالة شركتنا هذه البضاعة هى أسمنت

والان نفكر فى قاعدة البيانات قبل التفكير فى البرنامج لان قاعدة البيانات الجيدة تضمن برنامج جيد ولكن العكس غير صحيح

نحتاج فى قاعدة بياناتنا هذه إلى جدول للسائقين وجدول للسيارات واخر للعملاء واخر للتباعين واخر للصيانه الدورية للسيارات

وجدول لنقلات السيارات وجدول للمصاريف التى يقوم السائق بصرفها على السياره أثناء عمله عليها

وجدول لليوميه لتسجيل مصاريف صاحب العمل اليوميه وتسجيل غياب التابعين

وجدول أخر للبونات ليتم فيه تسجيل البونات

فى الجدول السائق يرغب فى حفظ البيانات الاتية

إسم السائق , عنوانه , تليفون المنزل , التليفون المحمول , رقم الرخصه , درجة الرخصة , تاريخ إنتهاء الرخصه

فى جدول السيارة يرغب فى حفظ البيانات الاتية

رقم السيارة , نوع السيارة , الموديل (سنة الصنع ) , رقم الماتور , رقم الشاسيه , رقم رخصة السيارة , تاريخ إنتهاء الرخصة

فى جدول العملاء يرغب فى حفظ البيانات الاتيه

إسم العميل , عنوانه , تليفونه , رقم المحمول

فى جدول التباعين يرغب فى حفظ البيانات الاتيه

إسم التباع , عنوانه , رقم تليفونه , راتبه الشهرى , عدد أيام غيابه , ملاحظات

فى جدول البونات يرغب فى حفظ البيانات الاتيه

البونات التى يتعامل معها صاحب العمل نوعين فسنحتاج لتسجيلها مرتين

تاريخ البونات , أرقام البونات من النوع الاول, إسم صاحبها , فئتها , نوعها , أرقام البونات من النوع الثانى, إسم صاحبها , فئتها , نوعها

فى جدول الصيانه الدورية يرغب فى حفظ البيانات الاتيه

رقم السيارة , تاريخ الصيانه , تكاليف الصيانه , نوع الصيانه

فى جدول النقله يرغب فى حفظ البيانات الاتيه

تاريخ النقله , مكان التحميل , مكان التنزيل , إسم السائق , رقم السيارة , رقم البوليسه , أرقام الونات من النوع الاول , إسم صاحبها ,

فئتها , أرقام الونات من النوع الثانى , إسم صاحبها , فئتها ,إسم مستلم البضاعة ,قيمة النولون , السلفه , نسبة الكمسيون

البوليسه : ورقة تكون مع السائق يقوم مستلم البضاعة بالتوقيع عليها وهى تفيد ان البضاعه قد تم تسليمها

السلفه : هى المبالغ التى يحصل عليها السائق ويقوم بالصرف منها على السياره

النولون : هو قيمة المبالغ التى تحصل عليها الشركة نظير نقلها للبضاعة وتكون بالنسبة للطن مثل 10 جنيه لكل طن

نسبة الكمسيون : هى النسبة التى يحصل عليها السائق من النولون

فى جدول اليوميه يرغب فى حفظ البيانات الاتيه

التاريخ , المبالغ التى دفعها صاحب العمل , إسم الشخص الذى دفعت له , تفاصيل هذه المبالغ ,المبالغ التى حصل عليها صاحب العمل ,

إسم الشخص الذى دفع هذه المبالغ , تفاصيلها

فى جدول المصاريف يرغب فى حفظ البيانات الاتيه

التاريخ , إسم السائق ,رقم السيارة , قيمة المصاريف

[gl]

وبعد ان علمنا تفاصيل كل جدول نترك تصميم الجداول للدرس القادم

[/gl]

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

فكرتك اكثر من رائعة اخ رمضان

لدا ارجو منك ان تستمر في شرحها لنستفيد من خبرتك

ونحن في انتظار الباقي

لك تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وهذا الي كنا نتظره برنامج عملي يغطي أكبر جزء من اسرار البرمجه في هذا المجال .

لكن عندي إقتراح بسيط وياريت تكون الخطوه الاولى ذي من عندك وهو كما يلي :

ان يكون الشرح بالصور خطوه بخطوه - وعلى العموم انا جهزة مجلد في جهازي لحفظ الدروس .

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

الأخ رمضان المحترم

أولاً أشكرك شكراً جزيلاً علىماعرضته حتى الآن في المنتدى

وثانياً هل سنصبر كثيراً بانتظار الدروس ..إني أتحرق شوقاً لمعرفة المزيد

العقرب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الاستاذ رمضان

ان موضوع الدرس ممتاز واكمل ما بدات ولكن لي اقتراح بسيط وهو تثبيت هذا الدرس لكي يستطيع اغلب رواد المنتدى قرائة والاستفاده منه

تحياتي

اخوك

عبدالله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

فكرة ممتازة اخي رمضان

ارجو الاستمرار في شرح هذه الدروس التي يستفاد منها ان شاء الله

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الله ينور عليك يا اخي

وينك من زمان:cool: :cool: :cool: (f) (f)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

اخوي هده فكرة ممتازة ولكن عايز لها ترتيب في عملية عرض الدروس

الموعد للدرس الثاني من خلال مقياس زمني او اجتهادي

اقترح كتابة الدروس كلها الى ان تصل الى الكمال (بمعنى من البداية الى استخراج التقارير ) من ثم تنشأ رابط لها للتنزيل

على شرط يكون هناك صفحة لعملية اي اقتراح او سؤال تكون ثابته للعمل على تطوير المشروع برمته ومن ناحية تعم الفائده للجميع

والله من وراء القصد

(f)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جزاكم الله خيرا و جعله فى ميزان حسناتك

و فى انتظار الباقي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

عمل جيد .. تضيفه إلى خدماتك الجليلة .. في هذا المنتدى ..

هذا المنتدى .. الذي ربما زرته في اليوم .. أكثر من مرة لتعلقي به

اللهم أغفر لهم .. اللهم ارحمهم .. اللهم سدد خطاهم

محبك / أبو زيد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

عمل رائع أخ رمضان

أرجو أن تستمر في هذا الإنتاج ولماذا لا نضعه صفحات ثابتة في الموقع؟!!

(f) ----------------------------------------------------- (f)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من هنا يمكنك مشاهدة الدرس الاول

أولا:

لن نقوم بعمل النوافذ (forms) إلا عند الحاجة وأيضا لن نضع أى أدوات على النوافذ

إلا عند الحاجة وأول نافذة سنحتاج إليها هى النافذة الرئيسية وليكن إسمها frmMain

لن نضع عليها أى أدوات حاليا

ولكن من قائمة Project سنضغط على ... References فتظهر الصورة الاتية

lesn2-1.jpg

من الصورة نلاحظ ان المستطيل المقابل للرقم واحد أمامه ثلاث مراجع

وهذا

يتوقف على البرامج المنصبه على جهازك ويختلف من جهاز لاخر إختر

المرجع المناسب من جهازك

إن لم تكن الصورة ظاهرة ستجد مرجع بإسم

Microsoft DAO 3.6 Object Library

أو Microsoft DAO 3.51 Object Library

إختر الاول فإن لم يكن موجود إختر الثانى

بعد ذلك يجب ان يقوم برنامجنا فى حدث التحميل (load) بالبحث عن

قاعدة البيانات فإن لم يجدها فهذا يعنى أن البرنامج يعمل للمرة الاولى

على هذا الجهاز أو ان قاعدة البيانات قد حذفت فيقوم برنامجنا بإنشائها

ولذلك نضع الكود الاتى

Private Sub Form_Load()
Dim FullPath As String
FullPath = App.Path
' من السطر السابق نحصل على مسار البرنامج
FullPath = IIf(Right(FullPath, 1) <> "", FullPath _
& "Data", FullPath & "Data")
'من السطر السابق ‘ن كان المسار ينتهى بالحرف "" نضيف إليه الدليل
' Data والذى سنضع فيه البيات وإن لم يكن ينتهى به نضيف هذا الحرف
والدليل
msg = Dir(FullPath, vbDirectory)
'من السطر السابق نبحث عن دليل البيانات
If msg = "" Then
'إن لم يكن الدليل موجود نقوم بإنشائه
MkDir FullPath
FullPath = IIf(Right(FullPath, 1) <> "", FullPath _
& "MyData.mdb", FullPath & "MyData.mdb")
'نضيف إسم ملفات قاعدة البيانات
CreateMyDatabase FullPath
'نستدعى الدالة التى ستنشيئ لنا قاعدة البيانات
'وسننشيئها فيما بعد
Else
'نأتى إلى هنا إذا كان دليل البيانات موجود
FullPath = IIf(Right(FullPath, 1) <> "", FullPath _
& "MyData.mdb", FullPath & "MyData.mdb")
'نضيف إسم قاعدة البيانات إلى دليل البيانات
msg = Dir(FullPath)
'نبحث عن قاعدة البيانات
If msg = "" Then
'إن لم تكن موجودة
CreateMyDatabase FullPath
'نستدعى الدالة التى ستقوم بإنشائها
End If

End If

End Sub

بعد ذلك من قائمة Project إضغط على Add Module لاضافة

وداخل الـ Module

أضف الكود التالى

Sub CreateMyDatabase(DB_Name As String)

Dim wrkDefault As Workspace
Dim dbsNew As Database
Dim prpLoop As Property
Dim Resulte
Set wrkDefault = DBEngine.Workspaces(0)

If Dir(DB_Name) <> "" Then
'نبحث عن قاعدة البيانات فإن كانت موجودة نعرض الرسالة الاتية
'على المستخدم
Resulte = MsgBox("قاعدة البيانات موجودة مسبقا " & "هل _
ترغب فى إستبدالها ؟", vbMsgBoxRight _
+ vbMsgBoxRtlReading + vbQuestion + vbYesNo)
If Resulte = vbYes Then
'إذا طلب المستخدم إستبدال قاعدة البيانات نمسح القاعدة
الموجودة
Kill DB_Name
Else
'إذا رفض المستخدم إسبدال قاعدة البيانات نخرج من الإجراء
Exit Sub
End If
End If

Set dbsNew = wrkDefault.CreateDatabase(DB_Name, _
dbLangGeneral, dbEncrypt)
'ننشيئ قاعدة البيانات
dbsNew.Close
'ثم نغلقها
CreateMyTableS DB_Name
'نستدعى الدالة التى تنشيئ لنا الجداول فى قاعدة البيانات
Set dbsNew = Nothing
Set wrkDefault = Nothing
'لتفريغ الذاكرة
End Sub

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

داخل الـ Module أضف هذا الكود

Sub CreateMyTableS(DBName)
Dim dbsMyData As Database
Dim tdfNew1 As TableDef
Dim tdfNew2 As TableDef
Dim tdfNew3 As TableDef
Dim relNew As Relation
Dim idxNew1 As Index
Dim idxNew2 As Index

Set dbsMyData = OpenDatabase(DBName)
'لفتح قاعدة البيانات
'****************************************
With dbsMyData
Set tdfNew1 = dbsMyData.CreateTableDef("Care")
'لإنشاء جدول السيارات دون إضافة أى حقول إليه
With tdfNew1
.Fields.Append .CreateField("CNo", dbText, 10)
'رقم السيارة
.Fields.Append .CreateField("CKind", dbText, 20)
'نوع السيارة
.Fields.Append .CreateField("CModel", dbText, 10)
'موديل السيارة
.Fields.Append .CreateField("CCashehNo", dbText, 15)
'رقم الشاسيه
.Fields.Append .CreateField("CMotorNo", dbText, 15)
'رقم الماتور
.Fields.Append .CreateField("CRokhsaNo", dbText, 12)
'رقم الرخصة
.Fields.Append .CreateField("CRokhsaDate", dbDate)
'تاريخ إنتهاء الرخصة
Set idxNew1 = .CreateIndex("CNoIndex")
'لإنشاء دليل فى الجدول
idxNew1.Fields.Append idxNew1.CreateField("CNo")
idxNew1.Unique = True
'لجعل هذا الحقل حقل وحيد القيمة
idxNew1.Primary = True
'لجعله مفتاح إساسى
.Indexes.Append idxNew1
End With
dbsMyData.TableDefs.Append tdfNew1
'لإضافة الحقول إلى الجدول أو بمعنى أخر تحديث الجدول
'********************************************
Set tdfNew2 = dbsMyData.CreateTableDef("Masaref")
'لإضافة جدول مصاريف السائقين
With tdfNew2
.Fields.Append .CreateField("MCareNo", dbText, 10)
'رقم السيارة مع ملاحظة أنه يجب أن يكون من نفس النوع
'ونفس الطول فى جميع الجداول
.Fields.Append .CreateField("MSaekName", dbText, 50)
'إسم السائق
.Fields.Append .CreateField("MCost", dbByte)
'تكاليف الصيانه
.Fields.Append .CreateField("MFinsh", dbByte)
'هذا الحقل قد نستخدمه أو لا نستخدمه ولكنى أضفته
'لهدف قد يأتى وقته ونشرحه
.Fields.Append .CreateField("MDate", dbDate)
'تاريخ الصيانة
Set idxNew2 = .CreateIndex("MCareNoIndex")
'لإنشاء دليل فى جدول المصاريف برقم السيارة
idxNew2.Fields.Append idxNew2.CreateField("MCareNo")
idxNew2.Primary = True
'لجعله مفتاح أساسى
.Indexes.Append idxNew2
End With
dbsMyData.TableDefs.Append tdfNew2
'لتحديث الحقول داخل الجدول
'******************************************
'للعلاقات
'لإنشاء علاقة بين جدول السيارت وجدول مصاريف السيارات
'عن طريق الدليل الذى أنشئناه فى كلا الجدولين
'==================================
Set relNew = .CreateRelation("MasarefCare", _
tdfNew1.Name, tdfNew2.Name, _
dbRelationUpdateCascade)
'لإنشاء العلاقة بين الجدولين
relNew.Fields.Append relNew.CreateField("CNo")
'لتحديد الطرف الاول فى العلاقة لان هذه العلاقة ستكون علاقة
'رأس بأطراف
relNew.Fields!CNo.ForeignName = "MCareNo"
'لتحديد الطرف الثانى فى العلاقة
.Relations.Append relNew

'********************************************
'وبنفس الطريقة مع بقية الجداول والحقول والعلاقات
Set tdfNew1 = dbsMyData.CreateTableDef("Saek")
With tdfNew1
.Fields.Append .CreateField("SName", dbText, 50)
.Fields.Append .CreateField("SAddress", dbText, 50)
.Fields.Append .CreateField("SRokhsaDegree", dbText, 15)
.Fields.Append .CreateField("SRokhsaNo", dbText, 12)
.Fields.Append .CreateField("SRokhsaDate", dbDate)
.Fields.Append .CreateField("STel", dbText, 12)
.Fields.Append .CreateField("SMobail", dbText, 12)
Set idxNew1 = .CreateIndex("SNameIndex")
idxNew1.Fields.Append idxNew1.CreateField("SName")
idxNew1.Unique = True
idxNew1.Primary = True
.Indexes.Append idxNew1

End With
dbsMyData.TableDefs.Append tdfNew1
'*******************************************
'للعلاقات
'=================================
Set relNew = .CreateRelation("MasarefSaek", _
tdfNew1.Name, tdfNew2.Name, _
dbRelationUpdateCascade)
relNew.Fields.Append relNew.CreateField("SName")
relNew.Fields!SName.ForeignName = "MSaekName"
.Relations.Append relNew

'*********************************************
Set tdfNew2 = dbsMyData.CreateTableDef("SeyanaDorea")
With tdfNew2
.Fields.Append .CreateField("SDCareNo", dbText, 12)
.Fields.Append .CreateField("SDCost", dbCurrency)
.Fields.Append .CreateField("SDKind", dbText, 25)
.Fields.Append .CreateField("SFnish", dbByte)
.Fields.Append .CreateField("SDDate", dbDate)
Set idxNew2 = .CreateIndex("SDCareIndex")
idxNew2.Fields.Append idxNew2.CreateField("SDCareNo")
idxNew2.Primary = True
.Indexes.Append idxNew2
End With
dbsMyData.TableDefs.Append tdfNew2
'*******************************************
'للعلاقات
'==================================
Set tdfNew1 = dbsMyData.CreateTableDef("Care")

Set relNew = .CreateRelation("seyanDoreaCare", _
tdfNew1.Name, tdfNew2.Name, _
dbRelationUpdateCascade)
relNew.Fields.Append relNew.CreateField("CNo")
relNew.Fields!CNo.ForeignName = "SDCareNo"
.Relations.Append relNew

'********************************************
Set tdfNew2 = dbsMyData.CreateTableDef("Nakla")
With tdfNew2
.Fields.Append .CreateField("NDate", dbDate)
.Fields.Append .CreateField("NFrom", dbText, 20)
.Fields.Append .CreateField("NTo", dbText, 20)
.Fields.Append .CreateField("NSaekName", dbText, 50)
.Fields.Append .CreateField("NCareNo", dbText, 10)
.Fields.Append .CreateField("NBolesaNo", dbText, 10)
.Fields.Append .CreateField("NBonat1Nos", dbText, 25)
.Fields.Append .CreateField("NBonat1Name", dbText, 60)
.Fields.Append .CreateField("NBonat1Feat", dbByte)
.Fields.Append .CreateField("NBonat2Nos", dbText, 25)
.Fields.Append .CreateField("NBonat2Name", dbText, 60)
.Fields.Append .CreateField("NBonat2Feat", dbByte)
.Fields.Append .CreateField("NRecevName", dbText, 50)
.Fields.Append .CreateField("NQuntity", dbInteger)
.Fields.Append .CreateField("NNolon", dbCurrency)
.Fields.Append .CreateField("NNesbtElKomsuon", dbDouble)
.Fields.Append .CreateField("NSolfa", dbCurrency)
.Fields.Append .CreateField("NFinsh", dbByte)
End With
dbsMyData.TableDefs.Append tdfNew2
'*****************************************
'للعلاقات
'================================
Set tdfNew3 = dbsMyData.CreateTableDef("Saek")
Set tdfNew1 = dbsMyData.CreateTableDef("Care")

Set relNew = .CreateRelation("NaklaSaek", _
tdfNew1.Name, tdfNew2.Name, _
dbRelationUpdateCascade)
relNew.Fields.Append relNew.CreateField("CNo")
relNew.Fields!CNo.ForeignName = "NCareNo"
.Relations.Append relNew
Set relNew = .CreateRelation("NaklaCare", _
tdfNew3.Name, tdfNew2.Name, _
dbRelationUpdateCascade)
relNew.Fields.Append relNew.CreateField("SName")
relNew.Fields!SName.ForeignName = "NSaekName"
.Relations.Append relNew

'********************************************
Set tdfNew2 = dbsMyData.CreateTableDef("Uomea")
With tdfNew2
.Fields.Append .CreateField("UDate", dbDate)
.Fields.Append .CreateField("UCostTo", dbCurrency)
.Fields.Append .CreateField("UCostToName", dbText, 50)
.Fields.Append .CreateField("UCostToTafasel", dbMemo)
.Fields.Append .CreateField("UCostFrom", dbCurrency)
.Fields.Append .CreateField("UCostFromTafasel", dbText, 200)
.Fields.Append .CreateField("UCostFromName", dbText, 50)
.Fields.Append .CreateField("UTabahGhebName", dbText, 50)
.Fields.Append .CreateField("UFinsh", dbByte)
Set idxNew1 = .CreateIndex("UTabahGhebNameIndex")
idxNew1.Fields.Append idxNew1.CreateField("UTabahGhebName")
idxNew1.Primary = True
.Indexes.Append idxNew1

End With
dbsMyData.TableDefs.Append tdfNew2
'********************************************

Set tdfNew1 = dbsMyData.CreateTableDef("Tabah")
With tdfNew1
.Fields.Append .CreateField("TName", dbText, 50)
.Fields.Append .CreateField("TAddress", dbText, 50)
.Fields.Append .CreateField("TTel", dbText, 12)
.Fields.Append .CreateField("TSaler", dbCurrency)
.Fields.Append .CreateField("THodor", dbByte)
.Fields.Append .CreateField("TMemo", dbMemo)
Set idxNew1 = .CreateIndex("TNameIndex")
idxNew1.Fields.Append idxNew1.CreateField("TName")
idxNew1.Unique = True
idxNew1.Primary = True
.Indexes.Append idxNew1

End With
dbsMyData.TableDefs.Append tdfNew1
'********************************************
Set tdfNew1 = dbsMyData.CreateTableDef("Amel")
With tdfNew1
.Fields.Append .CreateField("AName", dbText, 50)
.Fields.Append .CreateField("AAddress", dbText, 50)
.Fields.Append .CreateField("ATel", dbText, 12)
.Fields.Append .CreateField("AMobail", dbText, 12)
Set idxNew1 = .CreateIndex("ANameIndex")
idxNew1.Fields.Append idxNew1.CreateField("AName")
idxNew1.Unique = True
idxNew1.Primary = True
.Indexes.Append idxNew1

End With
dbsMyData.TableDefs.Append tdfNew1
'*******************************************
Set tdfNew2 = dbsMyData.CreateTableDef("Bonat")
With tdfNew2
.Fields.Append .CreateField("BAmelName", dbText, 50)
.Fields.Append .CreateField("BNos1", dbText, 120)
.Fields.Append .CreateField("B1Kinde", dbText, 12)
.Fields.Append .CreateField("BNos2Feah", dbByte)
.Fields.Append .CreateField("BNos2", dbText, 120)
.Fields.Append .CreateField("B2Kinde", dbText, 12)
.Fields.Append .CreateField("BNos1Feah", dbByte)
.Fields.Append .CreateField("BDate", dbDate)
.Fields.Append .CreateField("BFnish", dbByte)
Set idxNew2 = .CreateIndex("BAmelNameIndex")
idxNew2.Fields.Append idxNew2.CreateField("BAmelName")
idxNew2.Primary = True
.Indexes.Append idxNew2

End With
dbsMyData.TableDefs.Append tdfNew2
'******************************************
'للعلاقات
'==============================
Set relNew = .CreateRelation("BonatAmel", _
tdfNew1.Name, tdfNew2.Name, _
dbRelationUpdateCascade)
relNew.Fields.Append relNew.CreateField("AName")
relNew.Fields!AName.ForeignName = "BAmelName"
.Relations.Append relNew
'//////////////////////////////////////////
.Close
End With
'////////////////////////////////////////////////
End Sub

يمكنك تحميل

المثال من هنــــــــــــــــــــــــا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اتمنى ان لا تتوقف مثل هذه الدروس لاننا بحاجه الى اعادة استذكار

ولكم تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الله يبارك يااخ رمضان ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الدرس جميل جدا ، وميزته هو التحكم القوي من خلال الكود ،

وشكر خاص لك أخ رمضان على هذه الدروس.(f) (f)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكور يا أخ رمضان

نعم هذه المشاريع تغطي أكبر أستفسارات من قبل الأعضاء ونتمنا أن تستمر في جميع النواحي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الاخ الكريم / رمضان

اهنئك على فكرتك الرائعة واسلوبك البسيط فى الشرح واكثر ما اعجبنى هو شرح كل سطر من الكود والغرض منه باللغة العربية لعل الكثير ممن لايعرف لغات البرمجة - وانا منهم - يتعلمها على يديك فدائما الى الامام والله يوفقك .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

تحيه طيبة وبعد

شكرا للاستاذ رمضان على الجهد المبذول وعلى الدروس الرائعة جدا

ولكن عندي اقتراح

لو كان الدرس عن ADO الا تظن انه سيكون أفضل ؟؟

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الاخ الكريم / رمضان

كان لى تعليق على هذا الدرس الشيق ولكنى بالخطأ سجلته على درسك الاول من هذا الموضوع فمعذرة لذلك وسوف اكرره هنا مرة اخرى ، احب ان اهنئك على فكرتك الرائعة واسلوبك البسيط فى الشرح واكثر ما اعجبنى هو شرح كل سطر فى الكود والغرض منه باللغة العربية لعل الكثير ممن لايعرفوا لغات البرمجة - وانا منهم - يتعلمها على يديك فدائما الى الامام والله يوفقك .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سلام مربع للجدعان .. سلام مربع يارمضان(f) (f) (f) (f) (f) (f) (f)

ونرجو الكلام فى فرصة أخرى عن الـ ADO

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

على ما يبدوا انكم لم تجربوا المثال جيدا ولم تدققوا فى كود المشروع جيدا فقد إكتشفت انه يجب ان تكون هناك علاقة بين جدول اليومية وجدول التباعين لانه فى جدول اليومية يتم إدخال إسم التباع الغائب

وقد يخطئ المستخدم ويدخل إسم تباع خطأ او اسم غير موجود

ولذلك لابد من وجود علاقة من نوع رأس - اطراف بين جدول التباعين

وجدول اليومية

وكتدريب أترك مايلزم من تعديل الكود لمن فهم الدرس جيدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تحية للأخ رمضان

أين باقى الدروس .. أتمنى أن تكمل.. رعاك الله ووفقك إلى كل خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الدرس الاول

الدرس الثانى

درسنا اليوم سيكون طويل وبه بعض المفاهيم المهمه

فحاول ان تعد لنفسك كوب من الشاى أو قدح من القهوه

وتفصل الاتصال بالشبكه لان الموضوع قد يطول

أولا انا إستخدمت بعض الادوات الخارجيه لتسهيل العمل

مثل Active Skin4 يوجد لها رابط بالموقع إن لم تكن لديك

إبحث عنها بالموقع

Infragistics OutlookBar من مجموعه أدوات UltraSuite30

موجود أيضا الرابط لها بالموقع

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

  1. إضغط Ctrl + t ستظهر لك نافذة بكل الادوات الممكن
    إضافتها إلى مشروعك
  2. من هذه التافذه ضع علامة أمام Active Skin4.0 Type Library
    إن لم تجد هذه الاداه فمعنى ذلك انك لم تحمل Active Skin
    وهى غير مؤثره على عمل البرنامج وإنما فقط لتحسن المظهر
    إضغط على الاداه Skin1 بعد وضعها على النافذه بالزر الايمن
    للماوس وأختر LoadSkin ستظهر لك نافذه أختر منها الشكل المناسب لك
    وفى حدث التحميل للنافذه أضف السطر الاتى
    Skin1.ApplySkin Me.hWnd
  3. ضع علامه أمام الاداه Infragistics OutLookBar
    وهذه الاداه مهمة لعمل البرنامج فيجب إضافتها وإن لم تكن موجوده لديك
    فعليك بتحميل مجموعه أدوات UltraSuite30
    [/list=1]
    نعود لمشروعنا بعد إضافة الادوات السابقه ضع على النافذه
    الاتى

  4. اداة نص سمها TxtInput وضع خاصية Index=0 لماذا ؟؟
    من الطرق المتقدمه فى البرمجه هو إنشاء الادوات وقت التنفيذ
    ولذلك بخاصية Index يمكننا عمل ذلك فنحن الان أصبح لدينا مصفوفه
    من أدوات النص المحمل منها على النافذه هو العنصر الاول فقط وسنحمل
    أى عدد نرغب فيه وقت التنفيذ
    ثم ضع خاصيه Visible=False حتى لاتظهر خانة النص هذه فى بداية التشغيل
  5. ضع أداة SkinLable وسمها Slbl وضع خاصية Index=0 لماذا ؟؟ .. تمام
    وخاصية Visible=False
  6. زر وسمه CmdOk وغير خاصية Caption="موافق" وخاصية Visible=False
  7. زر وسمه Cmdcancle وغير خاصية Caption="إلغاء" وخاصية Visible=False
  8. ضع أداة PVOutLookBar وسمها PVOutlookBar1
    [/list=1]
    فبظهر شكل النافذه كما بالصوره الاتيه
    lesn3-1.gif
    كل ماسق كان الاعداد للعمل اما الان فهيا إلى العمل
    هل انتهيت من شرب القهوه ؟؟
    إذن إستعد وخذ نفس عميق لا ليس من السيجاره وإنما من الهواء النقى
    وأفتح الشباك إن كان مغلاقا انا كثير الكلام صح ؟؟؟ المهم
    سنقوم الان بالتعديل فى حدث التحميل حتى نقوم بملئ الاداه PvOutLookBar1
    بالعناصر اللازمه
    فأضف الكود الاتى لحدث التحميل بعد الكود الموجود من الدرس السابق


    '*********************************
    ' هذا الجزء من الكود سيقوم بإضافه
    ' العناصر اللازمه إلى الاداه
    'PVOutLookBar1

    Dim Groups As PVOutlookGroups
    Dim Group As PVOutlookGroup

    Set Groups = PVOutlookBar1.Groups
    'عنوان المجموعه الاولى
    Set Group = Groups.Add("إضافة بيانات")

    Set Groups = PVOutlookBar1.Groups
    Set Group = Groups.CurrentGroup
    Dim Items As PVOutlookItems
    Set Items = Group.Items
    'عنوان العنصر أو الزر الاول فى المجموعه الاولى وترتيبه
    Set Item = Items.Add("إضافة سائق", 0)
    ' عنوان االزر الثانى وترتيبه وهكذا
    Set Item = Items.Add("إضافة سيارة", 1)
    Set Item = Items.Add("إضافة تباع", 2)
    Set Item = Items.Add("إضافة عميل", 3)
    Set Item = Items.Add("إضافة نقلة", 4)
    Set Item = Items.Add("إضافة يومية", 5)
    Set Item = Items.Add("إضافة صيانة", 6)
    Set Item = Items.Add("إضافة بونات", 7)
    Set Item = Items.Add("مصاريف سائق", 8)
    ' إضافه مجموعه ثانيه ووضع عنوانها
    Set Group = Groups.Add("تقارير")
    ' إضافه هذه المجموعه إلى تجمع المجموعات
    Set Groups = PVOutlookBar1.Groups
    ' لإضافه العناصر كما سبق مع المجموعه الاولى
    Set Items = Group.Items
    Set Item = Items.Add("بيانات سائق", 0)
    Set Item = Items.Add("بيانات سيارة", 1)
    Set Item = Items.Add("بيانات تباع", 2)
    Set Item = Items.Add("بيانات عميل", 3)
    Set Item = Items.Add("حساب سائق", 4)
    Set Item = Items.Add("حساب سيارة", 5)
    Set Item = Items.Add("حساب عميل", 6)
    Set Item = Items.Add("حساب تباع", 7)
    Set Item = Items.Add("بيانات يومية", 8)
    Set Item = Items.Add("بيانات نقلة", 8)
    'المجموعه الثالثه وعناصرها
    Set Group = Groups.Add("أوامر أخرى")
    Set Groups = PVOutlookBar1.Groups
    Set Items = Group.Items
    Set Item = Items.Add("حول البرنامج", 0)
    Set Item = Items.Add("حفظ على قرص", 1)
    Set Item = Items.Add("فتح من قرص", 2)
    Set Item = Items.Add("إعدادات الإتصال", 3)
    Set Item = Items.Add("إنهاء", 8)
    'المجموعه الرابعه وعناصرها
    Set Group = Groups.Add("حذف وتعديل")
    Set Groups = PVOutlookBar1.Groups
    Set Items = Group.Items
    Set Item = Items.Add("حذف سائق", 0)
    Set Item = Items.Add("حذف سيارة", 1)
    Set Item = Items.Add("حذف تباع", 2)
    Set Item = Items.Add("حذف عميل", 3)
    Set Item = Items.Add("تعديل بيانات سائق", 4)
    Set Item = Items.Add("تعديل بيانات سيارة", 5)
    Set Item = Items.Add("تعديل بيانات عميل", 6)
    Set Item = Items.Add("تعديل بيانات تباع", 7)
    Set Item = Items.Add("تعديل بيانات نقلة", 8)
    Set Item = Items.Add("تعديل بيانات يومية", 9)
    '*****************************
    'نهايه الجزء الخاص بالاداه
    'PVOutLookBar1

    يتبع -------------------------->

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .