اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

التعديل على ملف


Ahmed_J
إذهب إلى أفضل إجابة Solved by ابوخليل,

الردود الموصى بها

السلام عليكم

لدي ملف لوصف الوظائف يحتوي على جدولين (الاول) tp1 وفيه معلومات الموظف (الاسم والدرجة) والجدول (الثاني)  tp2 فيه الدرجة الوظيفية والعتوان الوظيفي 

المطلوب: عند تغيير الدرجة الوظيفية في النموذج  واختيار عنوان وظيفي جديد من القائمة المنسدلة يجب ان يكون مطابق للعنوان الوظيفي والدرجة الموجودة

في الجدول tp2 واظهار رسالة بذلك اما في حالة عدم التطابق اظهار رسالة بوجود خطا (العنوان الوظيفي لايتطابق مع الدرجة)

وشكرا

Test-1.accdb

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

  • Ahmed_J changed the title to التعديل على ملف
29 دقائق مضت, Ahmed_J said:

لمطلوب: عند تغيير الدرجة الوظيفية في النموذج  واختيار عنوان وظيفي جديد من القائمة المنسدلة يجب ان يكون مطابق للعنوان الوظيفي والدرجة الموجودة

في الجدول tp2 واظهار رسالة بذلك

جرب هذا .....

Private Sub B_BeforeUpdate(Cancel As Integer)
If DLookup("[العنوان الوظيفي]", "[TP1]", "[ID] =" & [Forms]![form1]![ID] & "") = [Forms]![form1]![B] Then
MsgBox "نعم"
Else
MsgBox "لا"
End If
End Sub

 

  • Like 1
رابط هذا التعليق
شارك

السلام عليم

استاذي العزيز فيه اخطاء

لم يجد الا عنوان وظيفي واحد صحيح فقط

والكود لايوجد فيه  بحث في الجدول tp2

اريد المقارنة بين حقل العنوان الوظيفي في النموج والعناوين الوظيفية في الجدول tp2

تحياتي

 

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

مشاركة مع الأستاذ @ناقل ، جرب هذه الفكرة أستاذ @Ahmed_J :wub:

 

Private Sub B_AfterUpdate()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim selectedDegree As Long
    Dim selectedTitle As String
    selectedDegree = CLng(Me.A.Value)
    selectedTitle = Me.B.Value
    strSQL = "SELECT * FROM tp2 WHERE GradeNo = " & selectedDegree & " AND [الوظائف الهندسية] = '" & selectedTitle & "';"
    Set db = CurrentDb
    Set rs = db.OpenRecordset(strSQL)
    If rs.EOF Then
        MsgBox "العنوان الوظيفي لا يتطابق مع الدرجة المحددة.", vbExclamation, "خطأ"
    End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub

 

  • Like 1
رابط هذا التعليق
شارك

39 دقائق مضت, Ahmed_J said:

لم يجد الا عنوان وظيفي واحد صحيح فقط

والكود لايوجد فيه  بحث في الجدول tp2

اريد المقارنة بين حقل العنوان الوظيفي في النموج والعناوين الوظيفية في الجدول tp2

هل الدرجة المقصودة هي المشار اليها في الصورة ....

 

1.jpg

2.jpg

ولماذا الاختيار اذا كانت هي الدرجة ؟؟؟؟ لماذا لاتجعلها تظهر العنوان الوظيفي تلقائيا عند تحديد الدرجة ؟؟

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

استاذ @ناقل شكرا لك للمتابعة

نعم بالضبط (cradeno) هي تساوي الدرجة الوظيفية بالنموذج

يعني مثلا يوجد بالدرجة (2)   عنوان رئيس مهندسين اقدم  و مدير اقدم  وهكذا

استاذ @Foksh شكرا للمتابعة

الملف يعمل فقط على الوظائف الهندسية 

انا لدي بالاصل عناوين كثيرة والجدول كبير جدا 

ولا مانع من تغيير طريقة تصميم الجدول  لو وجد الحل

تحياتي

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

10 دقائق مضت, Ahmed_J said:

انا لدي بالاصل عناوين كثيرة والجدول كبير جدا 

ولا مانع من تغيير طريقة تصميم الجدول  لو وجد الحل

والعناوين كما في الجدول بجوار بعض ... صح 

ولكن كيف تميز بين المعين على وظيفة هندسية أو ادرارية وغيرها ....

  • Like 1
رابط هذا التعليق
شارك

5 دقائق مضت, Ahmed_J said:

السلام عليكم

استاذ @ناقل شكرا لك للمتابعة

نعم بالضبط (cradeno) هي تساوي الدرجة الوظيفية بالنموذج

يعني مثلا يوجد بالدرجة (2)   عنوان رئيس مهندسين اقدم  و مدير اقدم

استاذ @Foksh شكرا للمتابعة

الملف يعمل فقط على الوظائف الهندسية 

انا لدي بالاصل عناوين كثيرة والجدول كبير جدا 

تحياتي

ما تم تنفيذه بناءً على طلبك ، :rol:
وضح أكثر حتى نستفيد من التجارب التي تتم :wub:

  • Like 1
رابط هذا التعليق
شارك

اساتذتي الاعزاء

شكرا لكم

استاذ @Foksh  يوجد الكثير من العناوين الوظيفية  انا اخترت القليل منها لسهولة الامر

الكود تبعك يعمل بصورة جيدة على الوظائف الهندسية ولايعمل على الوظائف الادارية

استاذ @ناقل يتم تميز ذلك من خلال كتاب التعيين  والشهادة الحاصل عليها

علما بان لاتهمني العناوين سواء ارقام كانت ام حروف او اي عنوان اخر للحقل

تحياتي

 

1.jpg

2.jpg

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

2 ساعات مضت, Ahmed_J said:

استاذ @Foksh  يوجد الكثير من العناوين الوظيفية  انا اخترت القليل منها لسهولة الامر

الكود تبعك يعمل بصورة جيدة على الوظائف الهندسية ولايعمل على الوظائف الادارية

استاذ @ناقل يتم تميز ذلك من خلال كتاب التعيين  والشهادة الحاصل عليها

علما بان لاتهمني العناوين سواء ارقام كانت ام حروف او اي عنوان اخر للحقل

لاحظ معي هل تنفعك هذه الطريقة ......

 

2024-02-26_19-09-31.gif

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

استاذ @ناقل المحترم انا اعرف هذه الطريقة ولدي ملف خاص بها 

انا اردت فقط  التاكد  كيف يمكن تدقيق العنوان والدرجة في النموذج من خلال  الجدول 

تحياتي لك استاذ

بارك الله فيك

 

 

  • Like 1
رابط هذا التعليق
شارك

منذ ساعه, Ahmed_J said:

انا اردت فقط  التاكد  كيف يمكن تدقيق العنوان والدرجة في النموذج من خلال  الجدول 

تحياتي لك استاذ

طيب استاذي الفاضل انظر المرفق ربما يوحي لك الفكرة التى اردت ايصالها لك ....

 

Test-1.accdb

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

شكرا  لك كثيرا  استاذ @ناقل

لقد تعبتك معي كثيرا

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

هذا ملفي بنفس طريقتك

والله فكرة  جديدة لسه ماعندي

تحياتي

 

Test-1.accdb

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

مرحبابك استاذ @Ahmed_J

هناك اشكالية ادارية في ملفك ...وهو انه ليس بالضرورة ان تكون درجة خبير او معاون مدير عام بالدرجة الاولى 

انا مثلا ..منذ 3 سنوات في الدرجة الاولى (رئيس مهندسين اقدم)...اما معاون مدير عام فيكون بالتعيين من قبل المسؤول وليس له علاقة بالخدمة 

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

تحياتي لك 

  • Like 1
رابط هذا التعليق
شارك

السلام علكم استاذ قاسم @Eng.Qassim

ان شاء الله تكون بخير

27 دقائق مضت, Eng.Qassim said:

هناك اشكالية ادارية في ملفك ...وهو انه ليس بالضرورة ان تكون درجة خبير او معاون مدير عام بالدرجة الاولى 

انا مثلا ..منذ 3 سنوات في الدرجة الاولى (رئيس مهندسين اقدم)...اما معاون مدير عام فيكون بالتعيين من قبل المسؤول وليس له علاقة بالخدمة 

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

تحياتي لك 

انا اعرف كل هذا وخصوصا انا موظف قديم

انا بالاصل في ملف عملي عامل حقل نصي وادخل العنوان الوظيفي بصورة يدوية  وادققه مع جدول ورقي للعناوين

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

وعندما ادخل اي عنوان وظيفي لاي موظف بصورة يدوية بالنموذج  بقوم بالتدقيق مع الجدول الاصلي للعناوين وتظهر رسالة

هل العنوان يقع في نفس الدرجة ام لا (يعني مطابق او غير مطابق)

هل فهمت قصدي وفكرتي

تحياتي

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

تفضل حسب فهمي

Dim i, ii As String
i = Nz(DLookup("txt_h", "TP2", "GradeNO=" & Me.A), "")
ii = Nz(DLookup("txt_e", "TP2", "GradeNO=" & Me.A), "")
If Me.B <> i And Me.B <> ii Then
MsgBox "البيانات غير متطابقة"
Undo
Exit Sub
End If

 

Test-11.rar

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

استاذ @ابوخليل

شكرا لك

الكود شغال تمام 

ولكن المشكلة هي ان رؤوس الاعمدة كثيرة بحدود 20  وليس  فقط txt_h و txt_e

هل نكرر الدالة DLookup عشرون مرة ؟  ام هنالك حل آخر ؟

تحياتي

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

اسمح لي بمداخلة لولبية أستاذ @Ahmed_J ، طبعاً بعد إذن معلمي @ابوخليل :wub:

يمكننا استخدام حلقة تكرارية تقوم بالتحقق من قيمة Me.B في كل سجل دون حاجتنا الى تحديد اسماء الحقول أو رؤوس الأعمدة ، كمثال يمكن أستخدام حلقة For Each كما في الكود التالي ,,

 

Dim i As Integer
Dim fieldName As Variant
Dim fieldValue As Variant
For Each field In CurrentDb.TableDefs("TP2").Fields
    fieldName = field.Name
    fieldValue = Nz(DLookup(fieldName, "TP2", "GradeNO=" & Me.A), "")
    If Me.B <> fieldValue Then
        MsgBox "البيانات غير متطابقة" , , ""
        Undo
        Exit Sub
    End If
Next field

قم بالتجربة حسب تصميمك وأبلغني بالنتيجة :smile:

  • Like 1
رابط هذا التعليق
شارك

طيب ، خلينا نجرب تضييق النطاق في الحصول على اسماء الحقول
 

Dim rs As DAO.Recordset
Dim field As DAO.Field
Set rs = CurrentDb.OpenRecordset("SELECT * FROM TP2 WHERE 1=0")
For Each field In rs.Fields
    fieldName = field.Name
    fieldValue = Nz(DLookup(fieldName, "TP2", "GradeNO=" & Me.A), "")
    If Me.B <> fieldValue Then
        MsgBox "البيانات غير متطابقة"
        Undo
        Exit Sub
    End If
Next field
rs.Close
Set rs = Nothing

 

رابط هذا التعليق
شارك

 

أستاذ @Ahmed_J ، خليني افهم حبة حبة لأن احياناً استيعابي يكون بطيء :jump: حبتين بعد الأكل .. هالحين انت محتاج من تختار من القائمة B يروح يعمل بحث في كل الحقول - حتى لو عددهم 50 - اللي سجلها رقمه يطابق GradeNo في القائمة A .

انا عملت الـ GradeNo رقم 8 يساوي كاتب في الحقلين باعتبار وجود أكثر من حقل في الجدول . وعند اختيار رقم 8 من النموذج من A وتختار اي اختيار في B غير كاتب رح تكون النتيجة انه عدم تطابق في البيانات .. ومن تختار كاتب ما رح يظهر رسالة . الحين هذا اللي انا دخت وأنا أشرحه صحيح ولا لا سمح الله غلط :wavetowel: .

هذا الكود اللي خرجت فيه بالنهاية ، والمرفق أسفله :-

Private Sub B_AfterUpdate()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Dim found As Boolean
Dim field As DAO.field

found = False
Set db = CurrentDb

sql = "SELECT * FROM TP2 WHERE GradeNo = " & Me.A
Set rs = db.OpenRecordset(sql)

If Not rs.EOF Then
    found = True
    rs.MoveFirst
    For Each field In rs.Fields
        If field.Name <> "GradeNo" And field.Value <> Me.B Then
            found = False
            Exit For
        End If
    Next field
End If

rs.Close
If found Then
    MsgBox "بيانات متطابقة", , ""
Else
'If Not found Then
    MsgBox "بيانات غير متطابقة", , ""
End If
End Sub

Test-1.accdb

 

  • Like 3
رابط هذا التعليق
شارك

استاذ @Foksh

والله انا تعبتك معي كثير

الله يباراك فيك

21 دقائق مضت, Foksh said:

خليني افهم حبة حبة لأن احياناً استيعابي يكون بطيء :jump: حبتين بعد الأكل .. هالحين انت محتاج من تختار من القائمة B يروح يعمل بحث في كل الحقول - حتى لو عددهم 50 - اللي سجلها رقمه يطابق GradeNo في القائمة A .

انا عملت الـ GradeNo رقم 8 يساوي كاتب في الحقلين باعتبار وجود أكثر من حقل في الجدول . وعند اختيار رقم 8 من النموذج من A وتختار اي اختيار في B غير كاتب رح تكون النتيجة انه عدم تطابق في البيانات .. ومن تختار كاتب ما رح يظهر رسالة

كلامك كله صحيح وشرحك للموضوع تمام

المشكلة هي دون حاجتنا الى تحديد اسماء الحقول أو رؤوس الأعمدة

فقط اريد ان اوضح ان العنوان لايتكرر في حقل آخر مثل (كاتب)

تحياتي

 

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

5 دقائق مضت, Ahmed_J said:

المشكلة هي دون حاجتنا الى تحديد اسماء الحقول أو رؤوس الأعمدة

 

هذه انتهينا منها المفروض ,,
 

5 دقائق مضت, Ahmed_J said:

فقط اريد ان اوضح ان العنوان لايتكرر في حقل آخر مثل (كاتب)

 

هذه النقطة التي لم استوعبها ، فما الحاجة للبحث داخل كل الحقول في السجل المحدد ؟؟؟؟؟؟؟؟؟؟؟ ام تريد ان تكون القيمة في B اذا كانت موجودة في أحد الحقول في السجل المحدد فيكون التطابق موجود وإذا لم تكن القيمة في أي من الحقول ضمن نفس السجل فتكون الحالة عدم تطابق ؟؟؟؟ :blink:

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information