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

جلب بيانات محددة من جدول عن طريق الدوران داخل السجلات (for - next)


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

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

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

وحشني التواصل مع اساتذتي واخوتي بالمنتدي كثيرا - ولكن مشاغل الحياة قد حالة بين هذا التواصل الذي ما يجلب لنا الا الخير 

بادىء ذي بدأ - كل عام وحضراتكم جميعا بخير - وأسأل الله الكريم المنان أن يبارك لنا في رجب وشعبان وويفقنا فيهما للطاعات وأن يبلغنا رمضان وهو عنا راض - آمين

وبعد تلك المقدمة الطويلة - وكما تعلمون كثرة ثرثرتي 😀 فلا تؤاخذوني بذلك -

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

1- حصر عدد التغيرات التي حصلت خلالهما 

2- تحديد المدة بين كل تغير والأخر 

3- اضافة الناتج الي array  ليتم استخدامها فيما بعد

والتفاصيل:

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

123.png.b43cb70ff439b829ae48301e552a5db0.png

 

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

124.png.05c7e66a6a92674eed08858b83c26322.png

وكانت النتيجة هي 28|2

ولكن النتيجة الصحيحة المطلوبة ان تكون هكذا 28|1      و  8|2

تفاصيل العمليات الحسابية لو لاحظنا في التغير 1 ان تاريخ البدأ والنهاية كانا كما يلي 

من 1/6/2018 وحتي 1/3/2022 

وان تاريخ البداية المرر الي الدالة هو 1/12/2019 وهو واقع بين تاريخ البداية والنهاية السابقين لذي ستكون الفترة هي الفرق بين تاريخ البداية المرر الي الدالة وهو 1/12/2019 وتاريخ النهاية بالسجل وهو 1/3/2022  والناتج 28 شهر 

اما عن كود التغير فيكون 1 وليس 2 والمستخرج من العمود TarifaID

أما باقي الفترة وهي 36 وهي فرق المدة الممررة الي الدالة في الصورة الثانية والباقي هو 8 اشهر فهي واقعة خلال التغير الثاني بين الفترة من 1/4/2022 وحتي 1/1/2023

وتأتي من طرح تاريخ النهاية المرر وتاريخ البداية من الدالة يعني بين 1/12/2022 وبين 1/4/2022 = 8 شهر 

أرجو ان يكون سؤالي واضح بما يكفي - وأنا جاهز لأي استفسار ان شاء الله 

وهذا مرفق للتعديل - أو ابداء اي فكرة او ملاحظة 

QuestionOfficena.rar

 

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

 

 

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

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

اشهر خير علينا ان شاء الله 🙂

 

لم ادخل في الموضوع ، ولكن من قراءتي السريعة ، اعتقد المشكلة في قراءة الاكسس للتاريخ !!

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

 

.

او من طريقة اخونا الغائب الحاضر @Hawiii بتحويل التاريخ الى رقم :

 

 

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

12 ساعات مضت, jjafferr said:

لم ادخل في الموضوع

بل من فضلك تدخل - فهذه العيطة بحاجة لتدخل رجال لفض النزاع القائم - :biggrin:

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

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

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

البيانات مخزنة بالجدول كما بالصور بالسؤال 

واصل هذه الفترات كما بالصورة التالية:

1234.png.71865b12e56b1ba42953f77e1c311926.png

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

المثال الاول:

معطيات المستخدم : (1/12/2019) وحتي (1/12/2022)  فالنتيجة ان هنالك تغيرين خلال الفترة الموضحة

التغير الأول من (12/2019) وحتي 3/2022 - والفرق بين التاريخين بالشهور حوالي 28 شهر وكود الفترة هو 1  وكما بالدالة فالناتج (1|28)

اما الفترة الثانية فهي بين 4/2022 وحتي (12/2022)  والفرق بينهما بالشهور هو 8 اشهر وكود الفترة هو 2  وكذلك ناتج الدالة المطلوب  (2|8)

المثال الثاني:

المعطيات من المستخدم:  من (1/8/2020) الي (1/8/2023) 

النتيجة المتوقعة من الدالة:  ثلاث فترات وهم:

1- من (8/2020) الي 3/2022 ----> فرق 20 شهر الفترة 1 (1|20)

2- من 4/2022 الي 1/2023 ------> فرق 9 شهر الفترة 2 (2|9)

3- من 2/2023 الي (8/2023) --------> فرق 7 شهر الفترة 3 (3|7)

 

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

أطلت وارجو ان لا اكون اثقلت 

وجزاكم الله عنا خيرا

 

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

الأمور غير واضحة ، ويبدو لي أن بيانات الجدول فيها تكرار ، على كل حتى البيانات في الجدول غير مفهومة.
كما أن الدالة تستقبل متغيرين غير مستعملين Q و actv ولا دور لهما في الدالة.
وقد قمت بفلترة الجدول بعدة أشكال ولكن مع كل النتائج أرى أن هناك سجلات متشابهة!! الصورة غير واضحة.

- إما أن توضح أكثر وبتفاصيل واضحة جدا أو ترفع نسخة أخرى تحتوي على نموذج لمناداة الدالة وتوضيح أين تود إضافة نتائجها.

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

شكرا لك @AbuuAhmed 

12 ساعات مضت, AbuuAhmed said:

ويبدو لي أن بيانات الجدول فيها تكرار

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

12 ساعات مضت, AbuuAhmed said:

كما أن الدالة تستقبل متغيرين غير مستعملين Q و actv ولا دور لهما في الدالة.

نعم - لأنني اختزلت اجزئية التي تعنيني في السؤال ولا حاجة لان ارفق باقي الكود الذي لا مشكلة به ويمكنك ان تحذف هذين البرمترين من الدالة ان اردت.

12 ساعات مضت, AbuuAhmed said:

وقد قمت بفلترة الجدول بعدة أشكال ولكن مع كل النتائج أرى أن هناك سجلات متشابهة!!

أعتذر لتعب حضرتك - ولكن للتوضيح هذه عينة من البيانات الفعلية التي سيتم عليها العمل: 

وتلخيص الامر في ان عمود TarifaID هو عدد الفترات المعنية فلكل فترة كود معيا من 0 الي 3 حسب العينة المرفقة بالمرفق السابق

يعني لدينا اربع فترات لكل فترة بياناتها الخاصة و مدتها الخاصة - المطلوب من الدلة فقط هو تحديد المدي ازمني الممر اليها من المستخدم اين يقع في تلك الفترات وكل فترة منها يخصها كام شهر بالتحديد كما موضح بالامثلة بردي السابق

12 ساعات مضت, AbuuAhmed said:

وتوضيح أين تود إضافة نتائجها.

قمت بانشاء Array لتخزين نتائج الدالة وهذا ما احتاجه فقط الآن 

 

12 ساعات مضت, AbuuAhmed said:

إما أن توضح أكثر وبتفاصيل واضحة جدا

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

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

شاكر لسيادتكم المحاولة في المساعدة - وارجو ان يكون ردي به توضيح لبعض الغموض في السؤال

وأرجو ان لا اكون ممن عنيت ببيت الشعر بالتوقيع :biggrin:

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

 

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

  • أفضل إجابة
في 25‏/1‏/2023 at 23:26, أبو عبدالله الحلوانى said:

النتيجة المتوقعة من الدالة:  ثلاث فترات وهم:

1- من (8/2020) الي 3/2022 ----> فرق 20 شهر الفترة 1 (1|20)

2- من 4/2022 الي 1/2023 ------> فرق 9 شهر الفترة 2 (2|9)

3- من 2/2023 الي (8/2023) --------> فرق 7 شهر الفترة 3 (3|7)

اخونا الحبيب  وأستاذنا القدير ابو عبدالله ؛ في الفقرة 1 لعلك تراجع الحسبة ، لاني حسبتها باصابعي والنتيجة 19 شهر

المهم في الامر ان  الاستعلام رفيقي مثل ما الاستاذ جعفر رفيق التقارير

حاولت ان احل المسألة باستعلام واحد ونجحت في ذلك

اتمنى ان يحقق مطلبك

QuestionHalwane.rar

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

سؤال هامشي
شاهدت هناك عدم تواصل في المدد وبفاصل شهر كالتالي:
 

من 8/2020 الى 3/2022
من 4/2022 الى 1/2023
من 2/2023 الى 8/2023

يفترض أن يكون بداية الفترة التالية هي نفسها نهاية الفترة السابقة وإلا يعتبر هناك شهر مفقود ، (إلا إذا كانت مقصودة).
المهم في الأمر أنا رفيق الكل.
 

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

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

لاني حسبتها باصابعي والنتيجة 19 شهر

وانا ايضا حسبتها باصابعي الاحد عشر :biggrin:

عموما - مش هفاصل مع حضرتك ادفع ما اردت وانا مسامح في الباقي - :biggrin:

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

وأستاذنا القدير

بل انتم اساتذتي وتاج رأسي - واحلف غير حانث ان شاء الله - لو قدر لي بلوغكم لأقبلن رأسك ويديك 

جزاكم الله عنا خير الجزاء وجعله في موازين حسناتكم - وأسأل الله الكريم المنان أن يمن عليكم بسعادة الدارين وقرة العين في الأهل والذرية - والبركة في العمر والعمل آمين وجميع اساتذتي الأكارم الأفاضل وجميع المسلمين 

والله منذ يومين وقد أُغلق عليّ فهمها،  ولم ازل حتي ساعتي هذه وانا احاول. 

جزاكم الله خيرا - وأسأل الله أن يفرج عنكم بها كربة من كرب يوم القيامة 

ووالله لفرحي بردكم الكريم أكبر من فرحي بالجواب - جزاكم الله عنا خيرا 

 

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

36 دقائق مضت, AbuuAhmed said:

وإلا يعتبر هناك شهر مفقود ،

إذا هذا هو الشهر الذي نبحث عنه استاذنا @ابوخليل وانا - واعوذ بالله من كلمة انا- :biggrin:

اتيت بها يا رجل -

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

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

الحمد لله .. وجزاك الله خيرا على هذه الدعوات الطيبات جعل الله لكم النصيب الأوفر منها

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

عند ابتداء الدوارة على السجل الأول يجب ان يكون الشرط ( القيمة في العمود) اصغر من او يساوي ( القيمة الممررة ) وهذا منطقي

لأن القيمة الممررة يجب ان تكون اكبر او تساوي

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

ولا يصلح ان يكون الشرط اكبر من فقط  لانه سيغفل السجل الاول الحقيقي ويقفز للسجل الأكبر ،، وهذا تفسير عدم ظهور الرقم الصحيح

يمكن يصلح لو كان الشرط اكبر من او يساوي .. شريطة ان تكون القيمة الممرررة مساوية تماما لأحد الحقول في العمود 

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

هذا ما ظهر لي .. والله اعلم

 

 

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

أنصح بتعديل بيانات الجدول أولا ثم اختبار الحل من جديد
وأخمن أن تاريخ النهاية هو الخاطئ ويحتاج إلى زيادة شهر ، طبعا يبقى احتمال خطأ تاريخ البداية قائم.
الخلاصة يجب تصحيح أحد التاريخين إما البداية بإنقاصها أو النهاية بزيادتها شهرا واحدا.

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

منذ ساعه, AbuuAhmed said:

أنصح بتعديل بيانات الجدول أولا ثم اختبار الحل من جديد
وأخمن أن تاريخ النهاية هو الخاطئ ويحتاج إلى زيادة شهر ، طبعا يبقى احتمال خطأ تاريخ البداية قائم.
الخلاصة يجب تصحيح أحد التاريخين إما البداية بإنقاصها أو النهاية بزيادتها شهرا واحدا.

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

سوف يتضح لك ما ذكرته في فكرة تنفيذ الكود اعلاه

 

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

1 ساعه مضت, ابوخليل said:

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

سوف يتضح لك ما ذكرته في فكرة تنفيذ الكود اعلاه

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

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

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

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