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

استفسار عن تسلسل بشروط .. Count IIF؟؟


Amr Ashraf
إذهب إلى أفضل إجابة Solved by Amr Ashraf,

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

السلام عليكم ورحمة الله وبركاته .. اساتذتى الافاضل

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

بالنسبة للأكسيس مطبقها عن طريق الاستعلام الموجود فى القاعدة وتعمل جيدا فى حالة تسجيل كل سجل على حدى بعد تحديث رقم الماكينة ولكن عند لصق عدد كبير من السجلات فى النموذج تبدأ النتائج بالتفاوت والخطأ .. حاولت اطبق طريقة Count(IIF()) ولكن لم استطع لكثرة الشروط ..

المطلوب تطبيق طريقة تصلح فى حالة لصق عدد كبير من السجلات سواء عن طريق النموذج او الاستعلام .. مرفق قاعدة البيانات ومثال اكسيل بالنتيجة المطلوبة 

Count if.accdb count if.xls

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

31 دقائق مضت, ابوخليل said:

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

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

 

جزاك الله خيرا استاذى.. اعرف هذه الطريقة ولكن المطلوب تسجيل هذا التسلسل فى الجدول حتى استفيد بها فى مجموعة من الاستعلامات الاخرى.. واعرف انه من الممكن تطبيقها عن طريق function .. بارك الله فيك

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

منذ ساعه, ابوخليل said:

اذا تعرف تحقق هذا عن طريق الفنكشن تمام .. استخدمه في الاستعلام  ، فلاستعلام والجدول صنوان

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

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

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

ربما ان افضل طريقة هي انشاء جدولين 

الجدول الأول يحتوي على الحقول (أمر الشغل - رقم الماكينة - الوردية - التاريخ)

والجدول الثاني يحتوي على حقول "أمر التشغيل او رقم الماكينة او التاريخ " من حقول الجدول السابق لغرض الربط بين الجدولين ويضاف اليه الحقول التاليه  (  عدد الأعطال - وقت الأعطال - ملاحظات ) 

ربما هذى الطريقة تفيدك مستقبلاً في تتبع اعطال الماكينة.......

 

والله اعلم

بالتوفيق إن شاء الله

 

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

9 ساعات مضت, ابو محمد 316 said:

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

ربما ان افضل طريقة هي انشاء جدولين 

الجدول الأول يحتوي على الحقول (أمر الشغل - رقم الماكينة - الوردية - التاريخ)

والجدول الثاني يحتوي على حقول "أمر التشغيل او رقم الماكينة او التاريخ " من حقول الجدول السابق لغرض الربط بين الجدولين ويضاف اليه الحقول التاليه  (  عدد الأعطال - وقت الأعطال - ملاحظات ) 

ربما هذى الطريقة تفيدك مستقبلاً في تتبع اعطال الماكينة.......

 

والله اعلم

بالتوفيق إن شاء الله

 

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

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

44 دقائق مضت, ابو محمد 316 said:

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

ربما هذى الملف قريب جداً  من المطلوب

 

بالتوفيق إن شاء الله

 

Count if (1).accdb 568 kB · 1 download

غير قريب بالمرة ولكن شكرا على مجهودك

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

سيدي الفاضل 🙂

 

هذا تسلسل بالصباحي والمسائي ، والتسلسل لجميع الايام :

استعملنا هذا الحقل لنحصل على التسلسل على اساسه :

image.png.f64522481f4c8f515a42de3eae966eb3.png

.

image.png.fdca1a56a81224c0b280e7c43e5ef108.png

.

 

وهذا تسلسل للصباحي والمسائي مع اليوم ، كل يوم بتسلسل مستقل :

وهنا ضيقنا الخناق ، فاستعملنا هذين الحقلين (واذا تريد ، فممكن تضيف حقول اخرى مع هذين الحقلين) لنحصل على التسلسل اليومي :

image.png.3ec258c584e827a6b6038abcb4c4e1e8.png

.

image.png.63a8895339520a53239dc34f666c5d37.png

.

 

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

 

جعفر

1342.Count if.accdb.zip

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

 

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

SELECT TblDownTime.PONumber, TblDownTime.Zdate, TblDownTime.Shift, TblDownTime.MachineNumber, IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[ReasonCode],"") AS Code1, IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[Reason],"") AS Reason1, IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[DepartmentResponsible],"") AS Dept1, IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[StoppedFrom],"") AS From1, IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[StoppedTo],"") AS To1, IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[TotalDownTime/Min],"") AS TotalDownTime1
FROM TblDownTime
WHERE (((IIf([SerialFormat]="Num1" And [MachineNumber]=[MachineNumber],[ReasonCode],""))<>""));

 ومثل هذا الاستعلام هناك 5 آخرين لاحضار رقم عطل اخر لمجموع 5 اعطال متقيدين بال4 شروط (تاريخ-وردية-امرشغل-رقم ماكينة) وفى النهاية استعلام كبير ييضم ال5 اعطال بتفاصيلهم مثل الاستعلام المذكور فى الكود ليصبح كل اعطال الماكينة فى نفس اليوم فى نفس الوردية على نفس امر الشغل كلهم فى سطر واحد فقط (وذلك طبقا لتفضيل المدير فى قراءة التقرير :) ) .. وأعلم استاذى ان هناك طرق افضل ولكن كل شخص يستعمل الادوات التى يتمكن منها كل على حسب مستواه :) نشعر بقلة المعرفة عند مناقشتك فى مواضيع مثل هذه زادك الله من علمه .. اذا كان لديك رحابة صدر لتكملة الموضوع ممكن افتح موضوع جديد لمناقشة طريقة افضل للحصول على نفس النتيجة وطبعا بشكل اسرع .. آسف جدا على الاطالة و سأتصفح الردود غدا باكرا 

منذ ساعه, jjafferr said:

سيدي الفاضل 🙂

 

هذا تسلسل بالصباحي والمسائي ، والتسلسل لجميع الايام :

وهذا تسلسل للصباحي والمسائي مع اليوم ، كل يوم بتسلسل مستقل :

وهنا ضيقنا الخناق ، فاستعملنا هذين الحقلين (واذا تريد ، فممكن تضيف حقول اخرى مع هذين الحقلين) لنحصل على التسلسل اليومي :

 

.

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

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

Sub MakeNum()
Dim rs As DAO.Recordset, intS As Integer, strG As String
Set rs = CurrentDb.OpenRecordset("SELECT PONumber & MachineNumber & ZDate & Shift AS Grp, ReasonSerial " & _
                 "FROM tblDowntime WHERE ReasonSerial Is Null ORDER BY PONumber, MachineNumber, ZDate, Shift, ID")
strG = rs!grp
While Not rs.EOF
    If strG = rs!grp Then
        intS = intS + 1
        rs.Edit
        rs!ReasonSerial = intS
        rs.Update
        rs.MoveNext
    Else
        intS = 0
        strG = rs!grp
    End If
Wend
End Sub

جزاكم الله خير 

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

9 ساعات مضت, Amr Ashraf said:

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

تفضل ، وان شاء الله نستطيع ان نمد يد المساعدة 🙂

 

ولكن ، بالنظر الى استعلامك الذي وضعته :

image.png.4a55c341bfc9bf49727a53d482cbe9e8.png

.

يمكننا استبداله بالاستعلامين التاليين فتحصل على النتيجة اسرع ، وذلك ان الامر iif بطيء بعض الشيء لأنه يفحص جميع الاحتمالات (طبعا هذا ليس معناه ان استعلامك غلط !! ) :

الاستعلام الاول نضع فيه شروطك :

image.png.e9b13f3161d60b62342d287d1d6b7840.png

.

والاستعلام الثاني تكون النتائج جاهزة

image.png.96ff0e0b875b4fdf5d62556afbfaa598.png

.

 

جعفر

 

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

 

1 ساعه مضت, jjafferr said:

تفضل ، وان شاء الله نستطيع ان نمد يد المساعدة 🙂

ولكن ، بالنظر الى استعلامك الذي وضعته :

يمكننا استبداله بالاستعلامين التاليين فتحصل على النتيجة اسرع ، وذلك ان الامر iif بطيء بعض الشيء لأنه يفحص جميع الاحتمالات (طبعا هذا ليس معناه ان استعلامك غلط !! ) :

الاستعلام الاول نضع فيه شروطك :


.

 

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

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

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