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

انشاء رقم توريد اصناف بناءا على نوع التوريد


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

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

السلام عليكم 

مرفق مثال ـ العمل لدى شركتنا تقوم بتوريد اصناف الى بعض البلاد 

المطلوب : انشاء رقم توريد بناءا على نوع التوريد (مستورد ـ محلى ـ يدوى)  بناءا على اسم الصنف ونوع التوريد وتاريخ التوريد

بشرط ان فى التاريخ الواحد  للصنف الواحد للنوع الواحد يكون رقم التوريد متسلسل ويبدا من رقم ا -2-3  الخ

واذا تغير نوع الصنف فى فى تاريخ مختلف لنوع مختلف يبدا الترقيم من رقم 1

بمعنى : فى يوم 2024/5/22 سوف يورد صنف1   محلى فياخذ رقم التوريد له  ا

           فى نفس اليوم 2024/05/22 سوف يورد صنف1  مستورد فياخذ رقم التوريد له ايضا 1

           فى نفس اليوم 2024/05/22 سوف يورد صنف1 يدوى فياخذ رقم التوريد له ايضا 1

            فى نفس اليوم 2024/05/22 سوف يورد محلى (مرة اخرى ) فياخذ رقم التوريد له ايضا  2

           فى نفس اليوم 2024/05/22 سوف يورد صنف1 مستورد فياخذ رقم التوريد له ايضا  2

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

اسف للاطالة وجزاكم الله خيرا

التوريد.accdb

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

صديقي الدكتور @الحلبي ،، وعليكم السلام ورحمة الله وبركاته ،،

مع أني دخلت في دوامة لحتى أفهم المطلوب 😄 ، لكن دعنا بداية نخطو خطوة خطوة ..

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

ونشوف الاستعلام التالي إن كان فعلاً سيسترجع المطلوب أم لا :-

SELECT Main.nume, Main.typtest, Main.bookingdate, Count(*) AS num_of_supplies
FROM Main
GROUP BY Main.nume, Main.typtest, Main.bookingdate;

 

وبعدين هنحاول نستخدم دالة العد DCount علشان نحسب عدد التوريدات السابقة من نفس النوع والصنف والتاريخ ، وبعدها يتم تعيين الرقم الصحيح للتوريد الحالي بإضافة الرقم 1 للعدد السابق ، ونجرب على الاستعلام التالي :-

SELECT a.nume, a.typtest, a.bookingdate, (SELECT COUNT(*) 
        FROM Main AS b 
        WHERE b.nume = a.nume 
          AND b.typtest = a.typtest 
          AND b.bookingdate = a.bookingdate 
          AND b.k < a.k)+1 AS k
FROM main AS a;

 

الآن علشان نحدث قيمة الحقل K في الجدول Main بقيمة رقم التوريد الجديدة لكل صنف ونوع وتاريخ ، نستخدم استعلام تحديث البسيط ده . وطبعاً استثنيت القيم الفارغة ، ونجرب :-

UPDATE Main SET k = (SELECT COUNT(*) 
         FROM SupplyTable AS b 
         WHERE b.nume = Main.nume 
           AND b.typtest = Main.typtest 
           AND b.bookingdate = Main.bookingdate 
           AND b.k <= SupplyTable.k)
WHERE Main.k IS NULL;

 

الآن في النموذج Main اختر اي حدث تريده ونحط الكود التالي لإضافة القيمة في مربع النص K برقم التوريد الجديد بناءً على القيم الموجودة في مربعات النص (nume و typtest و  bookingdate) :-

    Dim newK As Integer
    newK = DCount("*", "SupplyTable", "nume='" & Me.nume & "' AND typtest='" & Me.typtest & "' AND bookingdate=#" & Me.bookingdate & "#") + 1
    Me.k = newK

حيث تم حجز متغير رقمي واسميته كمثال newK يقوم بعد القيم لرقم التوريد الجديد .

 

التوريد.accdb

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

 

 

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

حيث تم حجز متغير رقمي واسميته كمثال newK يقوم بعد القيم لرقم التوريد الجديد .

صاحبى الاستاذ / فايد

حياك الله على المداخلة والمساعدة

المرفق الذى حضرتك ارفقته ليس به اى اكواد مثل المرفق الاول

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

وهل هو المطلوب ام لا

شكر لك وجزاك الله خير على المساعدة

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

1 دقيقه مضت, الحلبي said:

المرفق الذى حضرتك ارفقته ليس به اى اكواد مثل المرفق الاول

 

الأكواد الثلاثة هي استعلامات SQL موجودة باسماء Query1 , Query2 , Query3 ..

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

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

السلام عليكم

مشاركة معكم احبتي حيث كنت اعمل على المثال

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

وافضل من ذلك ان يكون النموذج غير منضم  ويتم ادراج البيانات في الجدول من خلال الكود .. من اجل زيادة الضبط .. وعدم اتاحة حدوث اي خطأ عند ادخال البيانات

وعلى كل حال خرجت بالنتيجة التالية :

Dim i As Integer
Dim rs As DAO.Recordset
     Set rs = CurrentDb.OpenRecordset("SELECT main.* " & _
             "FROM main " & _
             "WHERE main.nume='" & Me.nume.Value & "' " & _
             "AND main.bookingdate=#" & Me.bookingdate.Value & "# " & _
             "AND main.typtest='" & Me.typtest.Value & "' ")
        rs.MoveLast
        rs.MoveFirst
            For i = 1 To rs.RecordCount
               If i > 0 Then
               If i = 1 Then
               Me.k = 1
                 Else
                   Me.k = i
                End If
                End If
        rs.MoveNext
          Next i
    Set rs = Nothing

 

التوريد2.rar

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

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

حيث تم حجز متغير رقمي واسميته كمثال newK

انا غلطان لك 

وجدت ملفك وبه الاكواد

ولكن معلش انا اسف ياصاحبى اسم الصنف ليس من الشروط يعنى لو تغير اسم الصنف ليس لنا دخل

المهم التاريخ ونوع التوريد : ولهم ثلاث احوال

فى تاريخ 2024/05/20 وردنا نوع محلى فيكون رقم التوريد ياخذ رقم 1

فى نفس التاريخ 2024/05/20 وردنا نوع مستورد فيكون رقم التوريد 1 والمحلى الذى قبله ياخذ رقم 2 ( لان المستورد يورد برقم قبل رقم  التوريد)

فى نفس التاريخ 2024/05/20 وردنا نوع يدوى فيكون رقم 3

هم الثلاث حالات فاذا تكرروا فياخذون التسلسل 2-3-4-5 الخ ولكن المستورد ياخذ الرقم الاقل 

 

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

لم اعرف هل انا وضحت الصورة ام انا ضغيف التعبير

 

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

8 ساعات مضت, الحلبي said:

اى ان التاريخ الواحد للصنف الواحد للنوع الواحد

هذه الجملة تنفي هذه الجملة في طلبك 😂

4 دقائق مضت, الحلبي said:

اسم الصنف ليس من الشروط يعنى لو تغير اسم الصنف ليس لنا دخل

 

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

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

لسلام عليكم

وعليكم السلام استاذى ومعلمى الفاضل ابو خليل

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

ارجو منك ان تقرأ اخر تعليق لى

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

19 دقائق مضت, kkhalifa1960 said:

مشاركة مع استاذ @Foksh تفضل د/ @الحلبي

استاذى ومعلمى ومقدم المساعدات لكل المنتدى جزاك الله خير على مداختك 

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

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

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

استاذى ومعلمى الاستاذ / فايد

المرفق الذى ارفقته الاخير لا يعمل مثلما اطلب

شوف صديقى انسى كل اللى فات وخليك معايا من اول هنا

انا عندى ثلاث عمليات توريد (محلى ـ مستورد ـ يدوي)

عندما نورد فى تاريخ ما نوع محلى فان رقم التوريد ياخذ رقم ا  

وعندما نورد فى نفس التاريخ ويكون النوع مستورد يكون رقم التوريد رقم 1 ايضا

وعندما نورد فى نفس التاريخ ويكون النوع يدوى يكون رقم التوريد رقم ا ايضا  (هم الثلاث عمليات فقط الذى يتم عليهم انشاء رقم التوريد)

لكــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــن

اذا بقى التاريخ كما هو واختارنا محلى يأخذ رقم 2 واذا اخنارنا مستورد ياخذ رقم 2 ايضا كذلك اذا اختارنا يدون ياخذ رقم 2

اى ان فى التاريخ الواحد يكون رقم التوريد  1 وعندما تكرر نوع التوريد فى التاريخ الوحد يسلسل رقم التوريد وياخذ الرقم التالى فى التسلسل اى الرقم 2

واذا تكرر نفس نوع التوريد ياخذ الرقم 3

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

طبعاً صديقي @الحلبي ، تستطيع الاستغناء عن الاستعلامات الثلاثة ، هي فقط للتأكد من الاحصاء وضبط العدد ، يعني فقط الكود الذي في النموذج يخدم هدفك على ما أعتقد .

 

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

التوريد - Copy.accdb

تم تعديل بواسطه Foksh
اضافة مرفق معدل
رابط هذا التعليق
شارك

 

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

قد فهمت صح هههههه

صديقى الاستاذ فايد 

امسح عندك كل ارقام التوريد وابدأ فى اختيار نوع التوريد ياخذ رقم 2 

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

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

3 دقائق مضت, الحلبي said:

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

Ok.png.234283f83b0bc5f857b82675d9878c61.png

 

هل قمت بتحميل آخر مرفق في مشاركتي الأخيرة ؟؟؟؟؟؟

https://www.officena.net/ib/applications/core/interface/file/attachment.php?id=230011&key=82ec48622ab73edbcdc75988d22d14c5

 

الدالة DCount تعيد القيمة 0 تلقائياً اذا كان الجدول فارغاً !!!

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

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

هل قمت بتحميل آخر مرفق في مشاركتي الأخيرة ؟؟؟؟؟؟

نعم قمت بتحميله ولكن معلش استاذى امسح كل ارقام التوريد

حاول ان تدخل اول سجل فماذا يكون رقم التوريد

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

  • أفضل إجابة
6 دقائق مضت, ابوخليل said:

فضل يا دكتور

هو هذا الكلام ياسلام عليك معملنا الكبير وشيخنا الجليل ابو خليل

الله الله الله الله عليك نعم هذا المطلوب الله يفتح عليك ويبارك فى عمرك واسرتك ويرحم والديك

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

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

واتقدم بالشكر للأستاذ العظيم المخلص المحترم جدا الاستاذ / خليفة / @kkhalifa1960 وجزاه الله كل خير عنى ورحم الله والديه ورزقه بغير حساب وبارك فى صحته

جزاكم الله خير فانتم خير مساعدا لنا فى هذا المنتدى

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

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

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

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

هل قمت بتحميل آخر مرفق في مشاركتي الأخيرة

استاذى ومعلمى الاستاذ / فايد

للمرة الثانية اكون انا المخطأ 

عشان يكون الترقيم مصبوط لازم امسح حقول التاريخ وحقول ترقيم الوارد معا ، انا كنت امسح ترقيم التوريد فقط عشان كده كان يعطينى تكرار وعدم التسلسل الصحيح

انا اعتذر لك ياصاحبى وفعلا مثالك مصبوط 100% وانا العلطان ـ ارجو ان تتقبل اعتذارى

وبعدين هل الاستاذ/ فايد تصعب عليه مثل هذه الامور انا عارف ومتأكد من خبراتك فى الاكسس

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

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

5 دقائق مضت, الحلبي said:

استاذى ومعلمى الاستاذ / فايد

للمرة الثانية اكون انا المخطأ 

عشان يكون الترقيم مصبوط لازم امسح حقول التاريخ وحقول ترقيم الوارد معا ، انا كنت امسح ترقيم التوريد فقط عشان كده كان يعطينى تكرار وعدم التسلسل الصحيح

انا اعتذر لك ياصاحبى وفعلا مثالك مصبوط 100% وانا العلطان ـ ارجو ان تتقبل اعتذارى

وبعدين هل الاستاذ/ فايد تصعب عليه مثل هذه الامور انا عارف ومتأكد من خبراتك فى الاكسس

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

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

 

لا داعي للإعتذار صدقني ، والحمد لله على هذه النعمة التي أوتينا منها قليلا :wub:

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

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