مساعدة .... ربط الجداول مع بعضها

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

ok مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الأحد مايو 12, 2013 12:21 am

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

ممكن مساعدتي في ربط اكثر من جدول مع بعضهم البعض باستخدام   ado

عندي 3 جداول  على النحو الاتي:-

الجدول الاول أسمه  info
ويحتوي على معلومات شخصيه  من : الاسم  : الرقم الوضيفي  :مؤهله الدراسي : رقم البطاقة لشخصية  : وتاريخها  
تاريخ الميلاد   وغيرها ......

الجدول الثاني

الإجازات الرسمية    أسمه   V1
وتحتوي على  :  نوع الاجازة  : مدتها  : تاريخ المغادرة  : وتاريخ الرجعة

الجدول الثالث

إجازات  اضطرارية  غير رسمية  واسمه   V2
ويحتوي على  :  نوع الاجازة  :  مدتها  : تاريخ المغادرة :  وتاريخ الرجعة


المطلوب :  كيف اربط معلومات الجدولين مع اسم الشخص بحيث عندما ابحث عن أي شخص ياتيني بالاجازات اللي اخذها طول السنه علما ان الشخص الواحد يمكن يأخذ اكثر من اجازة واريدها تندرج في سجلة

إن شاء الله قدرت اوصل لكم الفكرة   آمل أجد الجواب عندكم

وشاكر لكم ،،،،،
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف أبوسجود في الأحد مايو 12, 2013 10:12 am

الاخ الكريم ....أرفقت لك مثال يوضح كيفية البحث بين جدولين و عرض نتائج البحث فى الداتا جريد بناء على اسم موظف معين ......قم بتصميم المثال بناء على معلوماتك الواردة فى السؤال
المرفقات
ex.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(32 Ko) عدد مرات التنزيل 56

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الأحد مايو 12, 2013 12:24 pm

اشكر لك حبيبي ابو سجود الرد على المشاركة

بارك الله فيك وزادك علم ونفع بك

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

ممكن سؤال عن كيفية ادخال معلومات الاجازات فقط للشخص المسجل سابقا في فورم مستقل مع زر تعديل وحذف معلومات الاجازات

معليش كثرت عليك

جعلها الله في ميزان حسناتك
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف أبوسجود في الأحد مايو 12, 2013 3:16 pm

tryold كتب:اشكر لك حبيبي ابو سجود الرد على المشاركة

بارك الله فيك وزادك علم ونفع بك

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

ممكن سؤال عن كيفية ادخال معلومات الاجازات فقط للشخص المسجل سابقا في فورم مستقل مع زر تعديل وحذف معلومات الاجازات

معليش كثرت عليك

جعلها الله في ميزان حسناتك

بل شكرا لك انت اخى الكريم ..........اما بالنسبة لسؤالك غدا ان شاء الله تعالى سوف ارسل لك مثال لانى حاليا خارج برة ...فارجوا المعذرة

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الأحد مايو 12, 2013 8:16 pm

ان شاء الله
وأنت بصحه وسلامه

شاكر لك

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ


ليس من اخترق جهاز اصبح هكر

وليس من كتب كود اصبح مبرمج

وليس من كسر برنامج صار خيبير كسر

ولكن من تواضع لله رفعة

avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف أبوسجود في الإثنين مايو 13, 2013 10:24 am

تفضل أخى الكريم ....هذا مثال لما تريدة و لكنى فضلت أن تكون الاجازات الرسمية و غير الرسمية فى جدول واحد و يمكنك عرض الاجازات الرسمية و غير الرسمية لكل موظف على حدة ....

و اليك بعض صور المثال :

النافذة الرئسية للمثال .....والتى تحتوى على عدد 3 زر أمر ...الاول لادخال بيانات الموظفين و الثانى لادخال اجازات الموظفين و الثالث لانهاء البرنامج



شاشة ادخال بيانات الموظفين ....وتحتوى بالجانب الايسر قائمة باسماء الموظفين الموجودين فى قاعدة البيانات


شاشة أدخال أجازات الموظفين .....عند فتح تلك الشاشة يتم جلب كافة اسماء الموظفين و بيانات الاجازة بداخل القائمة اليسرى ....ايضا ستجد أسماء جميع الموظفين التى فى قاعدة البيانات موجود فى كمبو بوكس لاختار أى منهم لاضافة أجازة جديدة ...ويمكنك ايضا تحديد الاجازة سواء كانت رسمية أو غير رسمية و تاريخ البداية و النهاية .....كما ستجد خيارين لفرز اجازة موظف ما لتحديد عدد الاجازات الرسمية وغير الرسمية



المثال فى المرفقات ....
المرفقات
exp.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(53 Ko) عدد مرات التنزيل 45

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الإثنين مايو 13, 2013 12:34 pm

حبيبي ابو سجود اشكر لك وفاءك والرد على اسئلتي وعلى راسي

انا معك في جعل حقول الاجازات مع بعضها بعض

لكن كيف يكون حذف أجازة واحده فقط من عدة اجازات للشخص نفسة هل يكون عن طريق الـ ID

او فيه طريقه اخرى حتى لا افقد الاجازات الاخرى الذي اخذها

كيف تكون طريقه الحذف في هذا الامر

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

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ


ليس من اخترق جهاز اصبح هكر

وليس من كتب كود اصبح مبرمج

وليس من كسر برنامج صار خيبير كسر

ولكن من تواضع لله رفعة

avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف أبوسجود في الإثنين مايو 13, 2013 1:03 pm

ولا يهمك يا اخى ....الان فهمتك .....يمكنك فعل ذلك عن طريق الاتى :

_ الخطوة الاولى : أجعل الخاصية KeyPreview للفورم تساوى True

_ الخطوة الثانية ...أجعل الخاصية AllowDelete للداتا جريد تساوى True

_ الخطوة الثالثة ....قم باضافة زر للحذف و اكتب الكود التالى فى حدث النقر الخاص به

الكود:


Private Sub Command1_Click()
If MsgBox("هل تريد حذف المحدد?", vbYesNo, "تأكيد الحذف") = vbYes Then
        DataGrid1.SetFocus
        SendKeys "{DEL}"
    End If
End Sub

الخطوة الرابعة ....فى حدث Form_KeyDown أكتب الكود التالى :

الكود:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then KeyCode = 0
End Sub


الان
قم بشتغيل المثال ثم حدد الصف المراد حذفة من الداتا جريد كاملا ثم أنقر
فوق زر الحذف ستجد أنه تم حذف الاجازة التى تم تحديد بيانتها لهذا الموظف
....وهكذا يتم حذف الاجازة من قاعدة البيانات و من الداتا جريد ايضا

جرب الان وانا معاك على الخط واخبرنى بالنتيجة

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الإثنين مايو 13, 2013 3:09 pm

هلا ابو سجود

جربت وطلع لي خطأ

error 70

permission denied


والخطأ في
sendKeys "{DEL}"

وتم حلها

وجربت البرنامج وبالفعل تم الحذف

لكن التعديل على سجل الاجازة

معليش كثرت عليك
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف NEXT في الإثنين مايو 13, 2013 7:32 pm

tryold كتب:هلا ابو سجود

لكن التعديل على سجل الاجازة

معليش كثرت عليك


الاخ الكريم ....اهلا وسهلا بك .....اذا اردت تعديل سجل معين من السجلات التى المعروضة فى الداتا جريد ........ما عليك ألا تحديد هذا السجل ومسح قيمته ثم كتابة القيمة الجديدة و الاداة ستقوم بحفظها تلقائيا فى قاعدة البيانات ......أما اذا اردت شىء اخر من جملة ( لكن التعديل على سجل الاجازة) فنريد توضيح اكثر
avatar
NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 265
النقاط : 380
التقيم : 9
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الثلاثاء مايو 14, 2013 9:07 am

أهلا أخي الكريم أشكر مداخلتك


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

ولكن اريد كود لاضافه وتعديل وحذف اكثر من اجازة في جدولين منفصلين لموظف واحد في سجله بالكود



والاخ ابو سجود أكرمه الله واعزة عمل الشي هذا ولكن في جدول واحد


انظر هذا الكود وقل لي وش الخطأ فيه :-


الكود:
    If Rs1.State = adStateOpen Then Rs1.Close
  '
 Rs1.Open "select V1.Vkind, V1.Vlong, V1.Vstart, V1.Vend FROM info inner join V1 on info.ID= V1.ID WHERE info.Name ='" & Trim(txtname.Text) & "' ", D2, adOpenStatic, adLockPessimistic
If RS1.State = adStateOpen Then RS1.Close
RS1.Open "V1", D2, adOpenStatic, adLockPessimistic
 With RS1
        .AddNew
        ![Vkind] = kind.Text
        ![Vlong] = long.Text
        ![Vstart] = Sdate.Text
        ![Vend] = Edate.Text
        .Update
        .Requery
        ViewRecord
       
 End With
    MsgBox "تم تسجيل إجازة أعتيادية لهذا الشخص ", vbInformation

ماهو الخطأ في هذا الكود

ولا يهون الاخ العزيز ابو سجود
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف م/موسي في الثلاثاء مايو 14, 2013 2:38 pm

الاخ الكريم اهلا وسهلا بكم فى هذا المنتدى المتواضع .....من خلال هذا الحوار الرائع الذى قام بينك وبين الاخ أبو سجود فهمتك أنك تريد تسجيل بيانات الاجازات للموظيفين ...بحيث أنك تمتلك جدولين الاول v1 , الثانى v2 ....و تريد اضافة وحذف وتعديل كلا الجدولين فى وقت واحد بحيث يكونان مرتبطيم مع جدول ثالث info وليكن من خلال حقل id

اذان المطلوب منك أن الجدولين v1,v2 بهما حقل id ليتم الربط بينهما وبين الجدول الثالث info .....بحيث عندما يتم اضافة بيانات فى كلا الجدولين يتم اضافة حقل id الخاص بهذا الموظف ...


الحل سيكون على النحو التالى :

_ الحصول على اسماء الموظفين فى جدول info للاختيار من بينهم

_ الحصول على رقم id الخاص بهذا الموظف فى جدول info وتخزينه فى متغير

_ فتح الجدولين v1 ,v2 فى ان واحد سواء للاضافة أو للحذف او للتعديل ....الخ

الترجمة بالكود ستكون على النحو التالى :

_ الحصول على اسماء الموظفين وليكن تعبئة كمبو بها فى حدث التحميل للنافذة


الكود:
Private Sub Form_Load()
connet
Dim rs As New ADODB.Recordset
rs.Open "INFO", B, adOpenStatic, adLockPessimistic
    Do Until rs.EOF = True
    Combo.AddItem rs!Name
    rs.MoveNext
    Loop
End Sub


_ بعد ذلك أقوم باحضار رقم id الخاص بالموظف المختار من هذا الكمبو ...باستخدام الكود التالى :

الكود:
Dim sqlid As String
Dim iID As Integer

 Dim findRs As New ADODB.Recordset
sqlid = "Select ID FROM info Where Name = '" & Trim(Combo.Text) & "'"
   
    'احضار رقم الموظف
    If findRs.State = adStateOpen Then findRs.Close
    findRs.Open sqlid, B, adOpenStatic, adLockPessimistic
     
    iID = Val(findRs![ID])
   
  findRs.Close


_ فتح الجدولين v1 ,v2 معا للاضافة ...باستخدام الكود التالى :

الكود:
Dim sql As String

 

Dim rs As New ADODB.Recordset
sql = "select V1.id,V1.Vkind, V1.Vlong,V2.id, V2.Vkind, V2.Vlong from v1 , v2 "
rs.Open sql, B, adOpenKeyset, adLockOptimistic
    With rs
            .AddNew
            ![V1.id] = iID
            ![V1.Vkind] = Text2.Text
            ![V1.Vlong] = Text3.Text
           
            ![V2.id] = iID
            ![V2.Vkind] = Text4.Text
            ![V2.Vlong] = Text5.Text
       
            .Update
            .Requery
           
         
    End With
        MsgBox "تم تسجيل إجازة أعتيادية لهذا الشخص ", vbInformation

وكما تلاحظ أستخدم ثلاث حقول فقط من كل جدول V1.id,V1.Vkind, V1.Vlong ويمكنك زيادة الحقول كما تريد ...وطبعا جعلت حقل id لكل منهما يساوى رقم الموظف الذى تم جلبة من الجدول info

هذا فى عملية الاضافة والحذف .....الخ

اما اذا ارت الاستعلام عنهما استخدم الكود الذى اعطاه لك الزميل أبوسجود ...واليك مثال فى المرفقات
المرفقات
ex.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(42 Ko) عدد مرات التنزيل 19
avatar
م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 130
النقاط : 253
التقيم : 9
الدولة : تونس
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الثلاثاء مايو 14, 2013 4:00 pm

اخي العزيز الفاضل

لقد جربت الكود وبالفعل تم الاضافة ولكن ... لم يسند المعلومه او الاجازة للشخص المختار وانما اسندها في حقل جديد و ID مختلف عن ID الشخص الذي اريده تندرج تحت اسمه الاجازة

ان شاء الله انك فهمت المقصود

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

وشكرا لك وجزاك الله خيرا
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف م/موسي في الثلاثاء مايو 14, 2013 8:47 pm

المثال الذى ارسلته اليك يقوم بجلب رقم id للموظف المختار من الكمبوبوكس .....تأكد فى مشروعك أن حقل id فى كلا الجدولين v1 ,v2 لا يكون من نوع autonamber ترقيم تلقائى ولا يكون ايضا مفتاح اساسى
avatar
م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 130
النقاط : 253
التقيم : 9
الدولة : تونس
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الثلاثاء مايو 14, 2013 9:07 pm

عزيزي

الكود يسجل المعلومات في الجدولين V1 و V2

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

والكود هذا

الكود:
sql = "select V1.id,V1.Vkind, V1.Vlong,V2.id, V2.Vkind, V2.Vlong from v1 , v2 "


المعلومات ليست مسنده الى الموظف المختار أي بالاصح اذا اردت البحث عن موظف لا اجد المعلومات اللتي وضعتها له من اجازات

ان شاء الله يكون واضح

انتظر ردك
يعطيك العافية والصحة ياغالي
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف م/موسي في الثلاثاء مايو 14, 2013 9:16 pm

اذن سأحاول أشوف اين الخطأ و أخبرك غدا بالنتيجة لان ها الجهاز الذى أحدثك منه ليس عليه الفجوال بيسك ....تحياتى
avatar
م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 130
النقاط : 253
التقيم : 9
الدولة : تونس
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الثلاثاء مايو 14, 2013 10:05 pm

الله يوفقك وينفع بعلمك

ان شاء الله وانت بصحه وعافية

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ


ليس من اخترق جهاز اصبح هكر

وليس من كتب كود اصبح مبرمج

وليس من كسر برنامج صار خيبير كسر

ولكن من تواضع لله رفعة

avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف م/موسي في الأربعاء مايو 15, 2013 7:36 am

ايوة صحيح وجدت مشكلة فى المثال الذى قد سبق و ارسلته ....وهو أن الكود الخاص بجلب رقم id الخاص بكل موظف من جدول info غير موجود فى المثال وذلك ربما عندما حاولت أن أنسخ لك هذا الكود و اكتبه فى المشاركة قمت بقصه بدلا من نسخة وبالتالى لم يعد موجود فى المثال ...لذلك كنت دايما تجد رقم الموظف هو صفر .....وهو الكود التالى الناقص فى المثال :

الكود:

    Dim findRs As New ADODB.Recordset
    sqlid = "Select ID FROM info Where Name = '" & Trim(Combo.Text) & "'"
     
     
        If findRs.State = adStateOpen Then findRs.Close
        findRs.Open sqlid, B, adOpenStatic, adLockPessimistic
       
        iID = Val(findRs![ID])
     
      findRs.Close

أرجوا المعذرة ....واليك المثال بعد التعديل
المرفقات
ex.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(43 Ko) عدد مرات التنزيل 20
avatar
م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 130
النقاط : 253
التقيم : 9
الدولة : تونس
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

ok رد: مساعدة .... ربط الجداول مع بعضها

مُساهمة من طرف tryold في الأربعاء مايو 15, 2013 1:51 pm

السلام عليكم



لم يتم اسناد معلومات الاجازه الى الشخص برقم الــ ID في قاعدة البيانات

لم ينجح الكود


ياليت كود بحث يظهرها في الداتا قريد



واشكرك اخي على جهدك ومساعدتك جعلها الله في ميزان حسناتك
avatar
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى