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

التاريخ الغير موجود


al.sheen2000

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

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

تحية طيبة للجميع

يوجدلديه تاريخ مباشرة الموظف ومخزنة في جدول akad_amel

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

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

ارجو المساعدة وتحياتي للجميع 

الشهر الغير موجود.rar

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

تفضل اخي والله ومحتاج هذا المثال ضروري 

عندي جدول مخزن فيه تاريخ مباشرة الموظف  وهذا التاريخ ثابت وهو جدول akad_amel

ولديه جدول اخر يتم فيه اعداد الرواتب لكل شهر وهذ الجدول هو raetb_tamb

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

بناء على جدوال اعداد الرواتب 

مثال ( تاريخ المباشرة 1/11/2014

تم اعداد الراتب  اشهر 12/2014      وشهر 1/2015   وشهر 5/2015 

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

11/2014         و 3/2015         و 4/2015 

http://www.officena.net/ib/applications/core/interface/file/attachment.php?id=106106

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

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

حياك الله اخي الكريم

ومشاركة مع استاذنا الحبيب جعفر .. 

ولأن المثال انا سويته من فترة بس نسيت ارفعه

 اعذرني وعل في الأمر خيره.

شاهد المرفق وشاهد الشروط في الإستعلام ...Q1

وشاهد حدث بعد التحديث لرقم الموظف في النموذج الرئيسي

بإمكانك في ما بعد اخفاء الحقول التي لا تريدها ان تظهر في النموذج الفرعي ..

 

بالتوفيق

MissMonth.rar

MissMonth.rar

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

السلام عليكم

 

انا فكرتي تختلف عن فكرة أخي سعيد ، وهذه ميزة أكثر من مشاركة في موضوع واحد :rol:

 

فكرتي هي:

1. عمل جدول مؤقت باسم tbl_Temp ، ونُدخل فيه جميع الاشهر ، ابتداء من الشهر بعد تاريخ التوظيف ، الى الشهر الماضي ، لكل موظف ،

2. ثم نستعمل الاستعلام في مقارنة هذه الاشهر ، مع الاشهر المدفوعه ، ونطلب من الاستعلام ان يعطينا قائمة بالاشهر الغير موجودة :rol:

 

الكود التالي يعمل العمل رقم 1:

Private Sub cmd_Go_Click()
On Error GoTo err_cmd_Go_Click

    Dim rstF As DAO.Recordset
    Dim rstT As DAO.Recordset
    
    'empty tbl_Temp
    CurrentDb.Execute ("Delete * From tbl_Temp")
    
    'table To
    Set rstT = CurrentDb.OpenRecordset("Select * From tbl_Temp")
    'table From
    Set rstF = CurrentDb.OpenRecordset("Select * From akad_amel")
    rstF.MoveLast: rstF.MoveFirst
    RC = rstF.RecordCount
    
    'Loop from table From,
    'and get the w-code, and his starting date
    For i = 1 To RC
        
        Date_From = rstF!bad_akd    'Starting date
        Date_To = DateSerial(Year(Date), Month(Date), 0)    'Last month
        How_Many_Months = DateDiff("m", Date_From, Date_To) 'How many months in-between
        Last_Day_Of_Last_Month = DateSerial(Year(Date_From), Month(Date_From), 30)  'Last_Day_Of_Last_Month
        
        'we will generate All the months for each Employee, from his start date to Last month
        For j = 1 To How_Many_Months
        
            'start adding
            rstT.AddNew
             
                rstT!w_code = rstF!w_code   'w_code
                rstT!iDate = DateAdd("m", j, Last_Day_Of_Last_Month)    'the month
                                
            rstT.Update
            
        Next j
        
        rstF.MoveNext
    Next i
    
    rstF.Close: Set rstF = Nothing
    rstT.Close: Set rstT = Nothing
    
    MsgBox "Done"
    
Exit Sub
err_cmd_Go_Click:

    If Err.Number = 3021 Then
        'No Records
        Exit Sub
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Sub

ثم النتيجة تكون في الاستعلام qry_Temp Without Matching raetb_tamb ، والذي يُفضل ان تعمل تقرير على اساسه :rol:

 

** ملاحظة ، بسبب استعمال الجدول المؤقت ، والذي يتم حذف جميع بياناته واضافة بيانات جديدة ، هذا يجعل حجم قاعدة البيانات تكبر ، فيجب استخدام الضغط والاصلاح بين كل فترة لإرجاع الحجم الى حقيقته:rol:

 

جعفر

 

240.الشهر الغير موجود.mdb.zip

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

حياك الله استاذنا الحبيب جعفر

مشاركة قيمة ومليئة بالفوائد ....

والفكرة تشمل مجموعة الموظفين ..

فكرتي كانت على موظف واحد فقط .

وفقنا الله واياكم جميعا .

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

في البداية جزاكم الله خيرا في هذه الليلة المباركة 

افكار جميلة جدا 

ولو حبذا الاستغناء عن الجدول الموقت ويكون نفس فكرة اخونا  سعيد ويكون لجميع العاملين بدلا من عامل واحد 

والشكر موصول jjafferr

شكر جزيلا 

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

حياكم الله

ههههههه  الله يرزقنا واياكم الجنه.

=====

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

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

مسألة الضغط والإصلاح بإمكانك ضبطها من خيارات قاعدة الأكسس والأمر يسير بإذن الله

بالتوفيق للجميع

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

6 ساعات مضت, سعيد صواب said:

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

مسألة الضغط والإصلاح بإمكانك ضبطها من خيارات قاعدة الأكسس والأمر يسير بإذن الله

السلام عليكم

 

هناك طريقة اخرى للجدول المؤقت:

الطريقة الاولى:

1. اعمل الجدول اللي تريده في قاعدة بياناتك ، بالحقول المطلوبة ، وبدون سجلات وبيانات ،

2. برمجيا اعمل ملف اكسس mdb او accdb خارجي ، واستنسخ اليه هذا الجدول ،

3. اجعل الكود يولّد البيانات ويحفظها في هذا الجدول الخارجي ،

4. طبعا سيكون تقريرك يأخذ بياناته من هذا الجدول الخارجي ،

5. عند اغلاق البرنامج ، احذف هذا الملف الخارجي :rol:

بهذه الطريقة ، لا يوجد اي ضغط على القاعدة الحالية :rol:

 

انا استخدمت هذه الطريقة في برنامج مسقط التقارير:

http://www.officena.net/ib/topic/59415-هدية-مسقط-التقارير/

 

 

الطريقة الثانية:

1. اعمل الجدول اللي تريده في قاعدة بياناتك ، بالحقول المطلوبة ، وبدون سجلات وبيانات ،

2. اعمل ملف اكسس mdb او accdb خارجي ، واعمل فيه  هذا الجدول ،

2.1. احفظ هذا الملف في نفس مجلد برنامجك ، وعند طلب عمل الاستعلام ، اعمل نسخة منه باسم آخر ، 

او

احفظ هذا الملف داخل قاعدة بياناتك بصيغة BLOB ، وعند طلب عمل الاستعلام ، استخرج واحفظ الملف الى مجلد برنامجك (انا كنت احفظه في مجلد الوندوز المؤقت Temp) ،

3. اجعل الكود يولّد البيانات ويحفظها في هذا الجدول الخارجي ،

4. طبعا سيكون تقريرك يأخذ بياناته من هذا الجدول الخارجي ،

5. عند اغلاق البرنامج ، احذف هذا الملف الخارجي :rol:

 

 

جعفر

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

اشكر مجهودكم والله يعطيكم العافية 

طيب اخي جعفر شوف المثال هذا طبقت عليه الجدول الموقت في نفس القاعدة 

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

شكر جزيلا 

240.الشهر الغير موجود.rar

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

وعليكم السلام :rol:

 

البرنامج شغال تمام ، بس المشكلة عندك في البيانات!!

 

كان عندك الموظفين الثلاث تاريخ عقدهم 31-12-2015 ، والى الآن (31-1-2016) ما انتهى شهر على توظيفهم حتى يحصلوا على راتب شهر 1 ، يعني اذا شغلت البرنامج بكرة 1-2-2016 فبتحصل نتائج!!

بس لاحظ ، لما غيرت تاريخ عقد الموظف رقم 34 الى 30-11-2015 ، فعلى طول اخبرني التقرير ان راتبه لشهر 12 غير مدفوع :rol:

240.Clipboard01.jpg.266aadabf2ae0ef2c8e3

.

 

جعفر

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

الاخ جعفر 

السلام عليكم 

كرما منك بالغالي تعديل بسيط 

وهو اذا كان تاريخ العقد 02/01/2016

وتاريخ الجهاز 5/2/2016

لايعطيني الراتب اللذي يخص شهر يناير 

---------------------------------------------------

االيك المثال بالتواريخ 

اضبط تاريخ الجهاز على 5/2/2016 ولاحظ 

الله يسعدك اشكرك 

240.الشهر الغير موجود.rar

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

وعليكم السلام :rol:

 

الظاهر ان مشكلتنا هي في كيفية حساب الشهر :blink:

انا اجعل البرنامج يحسب الشهر ، مثلا:

تاريخ العقد: 1-1-2016

نهاية الشهر الماضي: 31-1-2016

عدد الاشهر = 0

 

فرجاء تخبرني عن الطريقة التي تريد الحساب على اساسها :rol:

 

 

جعفر

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

السلام عليكم :rol:

 

أضفت فقرة جديدة (رقم 1 في الكود) ، وهي الجزء الجديد فقط ، وتعمل كالتالي:

اذا bad_akd لم يكن آخر يوم في الشهر ، فسيعطيك سجل راتب لذلك الشهر ، 

اما بقية الاشهر ، فالوضع كما هو:


Private Sub cmd_Go_Click()
On Error GoTo err_cmd_Go_Click

    Dim rstF As DAO.Recordset
    Dim rstT As DAO.Recordset
    
    'empty tbl_Temp
    CurrentDb.Execute ("Delete * From tbl_Temp")
    
    'table To
    Set rstT = CurrentDb.OpenRecordset("Select * From tbl_Temp")
    'table From
    Set rstF = CurrentDb.OpenRecordset("Select * From akad_amel")
    rstF.MoveLast: rstF.MoveFirst
    RC = rstF.RecordCount
    
    'Loop from table From,
    'and get the w-code, and his starting date
    For i = 1 To RC
        
        Date_From = rstF!bad_akd    'Starting date
        Date_To = DateSerial(Year(Date), Month(Date), 0)    'Last month
        How_Many_Months = DateDiff("m", Date_From, Date_To)  'How many months in-between
        'Last_Day_Of_Last_Month = DateSerial(Year(Date_From), Month(Date_From), 30)  'Last_Day_Of_Last_Month
        Last_Day_Of_Last_Month = DateSerial(Year(Date_From), Month(Date_From) + 1, 0)    'Last_Day_Of_Last_Month
              
'1
        'for the first month ONLY
        First_Day_First_Month = Day(Date_From)
        Last_Day_First_Month = Day(DateSerial(Year(Date_From), Month(Date_From) + 1, 0))
        How_Many_Days = DateDiff("d", First_Day_First_Month, Last_Day_First_Month)
        If How_Many_Days <> 0 Then
            rstT.AddNew
                rstT!w_code = rstF!w_code   'w_code
                rstT!iDate = DateSerial(Year(Date_From), Month(Date_From) + 1, 0)
            rstT.Update
        End If
            
'2
        'we will generate All the months for each Employee, from his start date to Last month
        For j = 1 To How_Many_Months
        
            'start adding
            rstT.AddNew
                rstT!w_code = rstF!w_code   'w_code
                rstT!iDate = DateAdd("m", j, Last_Day_Of_Last_Month)    'the month
            rstT.Update

        Next j
        
        rstF.MoveNext
    Next i
    
    rstF.Close: Set rstF = Nothing
    rstT.Close: Set rstT = Nothing
    
    MsgBox "Done"
    
Exit Sub
err_cmd_Go_Click:

    If Err.Number = 3021 Then
        'No Records
        Exit Sub
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Sub

 

جعفر

 

240.2.الشهر الغير موجود.mdb.zip

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

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

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

Important Information