اذهب الي المحتوي
أوفيسنا

عبد الفتاح كيرة

الخبراء
  • Posts

    3,015
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    4

مشاركات المكتوبه بواسطه عبد الفتاح كيرة

  1. للخروج من هذا المأزق

    أقوم بإنشاء استعلام إنشاء جدول من استعلام التجميع

    و من الجدول المنشأ نعمل ما نريد 

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

    عملية ديناميكية رائعة

  2. الحمد لله 

    قمت بحل المشكلة

    فوجدت لزاما أن أنشر الطريقة 

    للنفع العام 

    دالة dlookup المستخدمة فيها 3 شروط

    رقم الموظف

    تاريخ بداية

    تاريخ نهاية

    قمت بعمل استعلام لشرط التاريخ

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

    وجاءت النتائج سليمة

  3. السلام عليكم

    تعمل هذه الصيغة فى الاستعلام

    لكنها أحيانا تعطى نتيجة غير صحيحة

    خاصة داخل السنة

    أرجو تدقيقها

    علما أنه لا يمكننى إرسال نموذج للقاعدة حاليا

    وهذه صورة 

    وشكرا لكم

    ٢٠٢٠٠٣٠٨_١٠٤٤٤٦.jpg

    • Like 1
  4. 2 ساعات مضت, romeo4 said:

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

    Private Sub GroupHeader0_Format(Cancel As Integer, FormatCount As Integer)
    On Error Resume Next
    Dim old As Integer
    Me.textold = 0
    olld = DSum("[debit]", "t", "[id-client]=" & [id] & " and [date] < from ") - DSum("[Credit]", "t", "[id-client]=" & [id] & " and [date] < from ")
    If IsNull(olld) Then
    Me.textold = 0
    Else
    Me.textold = Me.textold + olld
    Me.Text49 = DSum("[debit]", "t")
    End If
    End Sub

    لاحظ السطر الأخير


    Capturetyt.PNG.39102bd996adb6b08a29d7ec94192f0a.PNG

     

    Database2 (1).rar

  5. في ٦‏/١‏/٢٠٢٠ at 07:11, النسر المصرى said:

    عدم اختيار تاريخ قبل تاريخ اليوم

    Private Sub mdate_BeforeUpdate(Cancel As Integer)
    Dim myletter As String
    myletter = "غير مسموح بتاريخ غير تاريخ اليوم"
    If Me.mdate < Date Then
    MsgBox myletter
    Cancel = True
    End If
    End Sub

     

    في ٦‏/١‏/٢٠٢٠ at 07:11, النسر المصرى said:

    عدم  اضافة أكثر من اربع سجلات بالشهر الواحد

    هل هناك حقل للشهر؟

    • Like 1
  6. شكرا جزيلا أخانا الأستاذ  @jjafferr  و النتائج صحيحة لكن الطرق مختلفة

    سأشرح - لمن يريد - خطوات أخرى أوصلتنى للناتج و سأرفق ملفا إن شاء الله

    أولا : نصمم استعلاما للحصول على أعلى تاريخ ( الأحدث) من الجدول t1 باسم مستعار  ss  و هو استعلام 2 و ذلك باستخدام  top1

       و نرتب حسب حقل التاريخ  taqfrom تنازليا ليكون أحدث تاريخ بالأعلى .

    و نحصل على جملة  sql التالية

    SELECT TOP 1 ss.taqFrom
    FROM t1 AS ss
    ORDER BY ss.taqFrom DESC;
    ثانيا نأخذ جملة ال sql  السابقة و نضعها كمعيار فى حقل taqfrom  للاستعلام الجديد  و هو استعلام 1

    و هنا نرتب جملة sql كالتالى

    SELECT t1.taqemp, t1.taqFrom, t1.taqTo, t1.taq_deg
    FROM t1
    WHERE (((t1.taqFrom) In (SELECT TOP 1 ss.taqFrom
    FROM t1 AS ss 
    where ss.taqemp = t1.taqemp and ss.taqfrom <> 
    (SELECT TOP 1 ss.taqFrom
    FROM t1 AS ss
     where ss.taqemp = t1.taqemp
    ORDER BY ss.taqFrom DESC)
    ORDER BY ss.taqFrom DESC;
    )));

    الشرح قدر الإمكان

    SELECT t1.taqemp, t1.taqFrom, t1.taqTo, t1.taq_deg
    FROM t1

    أدرج الحقول السابقة فى الاستعلام بصورة عادية من جدول  ف1 و من بينها طبعا حقل taqfrom  الخاص بتاريخ بداية تقرير الموظف ( التقرير هو تقرير الكفاءة السنوى للموظف يؤخذ كل عام من 1 سبتمبر  حتى 31 أغسطس )

    WHERE (((t1.taqFrom) In

    بشرط أن تكون قيمة حقل التاريخ ضمن مايلى :

    (SELECT TOP 1 ss.taqFrom FROM t1 AS ss 

    و هو جملة sql الخاصة باستعلام 2 و التى استخرجنا بها أعلى قيمة للتاريخ كما سبق

    where ss.taqemp = t1.taqemp and ss.taqfrom <>

    بشرطين هامين

    الأول تساوى حقل رقم الموظف

    الثانى أن يكون حقل التاريخ لا يساوى ما يلى

    (SELECT TOP 1 ss.taqFrom FROM t1 AS ss  where ss.taqemp = t1.taqemp

    استعلام فرعى آخر 

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

    يعنى ( حقل التاريخ يكون مثل أعلى قيمة التى بدورها لا تساوى ؟أعلى قيمة ..)

    و ORDER BY ss.taqFrom DESC) ORDER BY ss.taqFrom DESC;

    الترتيب تنازليا مرتين

    مرة لكل استعلام فرعى

    لاحظ النتيجة 

    التاريخ الثانى لكل موظف

    Capturebefore.PNG.45d6e058b8cae5398e5c8c63ee202fbd.PNG

    ثم سجل واحد لكل موظف هو الثانى

    Captureafter.PNG.6c9f225f744da1a1e2ca932c54d9a3a0.PNG

    هذا هو الملف أرجو أن أكون وفقت فى الشرح و أن يكون فيه النفع لمن يريد و شكرا مرة أخرى لمساعدة الأخ  @jjafferr

    sample2.accdb

     

     

    3 دقائق مضت, عبد الفتاح كيرة said:

    ss.taqemp = t1.taqemp

    نسيت هذه الجزئية و هى هامة لربط الاستعلام الفرعى بالرئيسى

    • Like 2
  7. 1 دقيقه مضت, jjafferr said:

    الحمدلله 🙂
    وشكرا على المعلومة 🙂

     

    جعفر

    شكرا لك أنت

    يا ليت نكمل المعلومة

    بمثال لاستعلام فرعى لاستخراج القيمة رقم 2 فى حقل التاريخ

    أو القيمة رقم 3 .....أو أيا كانت

    مع جزيل شكرى

     

  8. 17 ساعات مضت, jjafferr said:

    استعمل TOP 3  بدلا عن TOP 1

     

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

    هذه هى النتيجة

    آخر 3 تقارير لكل موظف

    mysub.PNG.b42de1d4389e0b378ac9eee8709a84b0.PNG

     

    و هذا هو ال  sql

    SELECT qq1.TaqEmp, qq1.taqFrom, qq1.taqTo, qq1.taq_number
    FROM qq1
    WHERE (((qq1.taqFrom) In (SELECT TOP 3 ss.taqFrom
    FROM qq1 AS ss where ss.taqemp = qq1.taqemp
    ORDER BY ss.taqFrom DESC;
    )))
    ORDER BY qq1.TaqEmp, qq1.taqFrom DESC;

     

    • Like 1
×
×
  • اضف...

Important Information