الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية إعطاء موعد للمريض تلقائياً حسب الأيام الفارغة.

بدأه أبو مالك1 في 12 يناير 2010 · 9 رد · 1,240 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي جدول مواعيد للمرضى فقط ليومين في الأسبوع وأريد من الاستقبال أن يكتب فقط بيانات المريض ويقوم الجدول بإعطائه تاريخ الموعد تلقائياً دون كتابته حيث يقوم الحقل بجمع مواعيد المرضى ويقوم بإدراجه في أقرب موعد مالم يزد عدد المرضى في اليوم أكثر من 10 مرضى.

بمعنى عند إدخال المريض رقم 11 يقوم بإعطائه يوم آخر لأن جدول مواعيد اليوم القادم قد امتلاً إلى نصابه وهو 10 مرضى.

أفيدوني بارك الله فيكم إن كان بالإمكان عمل ذلك أم لا ............

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

db2.rar

تم تعديل هذه المشاركة بواسطة أبو مالك1 في 13 يناير 2010 في 07:53

#2

ياحبايبي أنتظر منكم الرد .....

بحثت في المنتدى كثيراً ولم أجد مايشبع رغبتي

#3

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

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

وبعد، هذه محاولة مني...

الفكرة: استعادة آخر تاريخ في جدول المواعيد (بواسطة الدالة DMAX)، واستعادة عدد المواعيد في هذا التاريخ (بواسطة الدالة DCOUNT)، ثم على أساس مقارنة عدد المواعيد في هذا التاريخ يتم اختيار إما نفس التاريخ أو زيادة يوم عليه... كل هذا يتم في حدث (قبل الإضافة Before Insert) للنموذج الفرعي...

الكود:

Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim dAttDate As Date

    dAttDate = DMax("att_date", "att")
    If DCount("*", "att", "att_date = #" & dAttDate & "#") < 3 Then
        Me.att_date = dAttDate
    Else
        Me.att_date = dAttDate + 1
    End If
    Me.att_day = Format(Me.att_date, "dddd")
End Sub

هذا الكود ينفذ عند محاولة إدخال سجل جديد في النموذج الفرعي (وذلك باختيار نوع الحالة عادي، مستعجل، طارئ... لأنه لا بد من اختيارها من قبل المستخدم في النهاية)... تم اختيار الرقم 3 من أجل الاختبار، وتستطيع تحويله إلى 10 مثلاً.

ملحوظة أخيرة: قدمت هذا الحل مع الاحتفاظ بتصميمك من أجل توضيح الفكرة، لكن في رأيي في مثل هذه الحالات من الأفضل أن يكون نموذج تحديد المواعيد مستقلاً عن نموذج إدخال بيانات المرضى، والله أعلم.

db2.rar

تم تعديل هذه المشاركة بواسطة أحمد مبارك الحيقي في 13 يناير 2010 في 08:52

#4

أشكر شكراً جزيلاً يا أحلى حبيب ...

والله إنك مبدع بجد مرررررره حلوه الفكرة ........ بس كان مضايقني اليوم مكتوب بالعنجليزي فحاولت ضرب بعض الاحتمالات في الكود وإضافة حقل لأسماء الأيام بالعربي........

وبالله التوفيق وهذا الملف بعد الإضافة ......

لك مني جزيل الشكر والتقدير

db2.zip

تم تعديل هذه المشاركة بواسطة أبو مالك1 في 13 يناير 2010 في 17:31

#5

سؤال آخر:

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

ما أريده هو إن كان جدول مواعيد الأحد قد امتلأ مبشارة يقوم بإضافة المواعيد الجديدة ليوم الأربعاء وليس اليوم التالي ..... لأنه من غير المعقول أن يكون العمل باستمرار دون وجود ايام إجازة ......

أنا مازلت أحاول في فكرة لكن ينقصني الخبرة البرمجية ....

#6

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

Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim dAttDate As Date
    Dim iWeekDay As Integer

    dAttDate = Nz(DMax("att_date", "att"), Date)
    iWeekDay = Weekday(dAttDate, vbSunday)
    If (DCount("*", "att", "att_date = #" & dAttDate & "#") < 3) And (iWeekDay = 1 Or iWeekDay = 4) Then
        Me.att_date = dAttDate
    Else
        Select Case iWeekDay
            Case 1
                Me.att_date = dAttDate + 3
            Case 4
                Me.att_date = dAttDate + 4
            Case Is > 4
                Me.att_date = dAttDate + 8 - iWeekDay
            Case Is < 4
                Me.att_date = dAttDate + 4 - iWeekDay
        End Select
    End If
    Me.att_day = Format(Me.att_date, "dddd")
End Sub

تستطيع أن تضيف الجزء الخاص بالتسميات العربية... عندي الإعدادات عربية، فتظهر أسماء الأيام عربية بدون تعديل...

والله أعلم.

db2.rar

#7

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

أحمد ربك إنك بعيد عني وإلا كنت أعطيتك بوسة قوييييييييييييييييييية ما أدري يمكن بعدها تقوم أو لا ....

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

#8

أخي الكريم: أحمد مبارك. أولاً أشكرك على الطريقة التي عرضت بها الاجابة فلم تكتفي فقط بالمرفق وبه الحل ولكنك أشرت عن التعديل في المشاركة نفسها وأعتقد أن طريقة العرض هذه هي أنسب الطرق حيث يمكننا التعرف على الحل دون عناء تحميل المرفق وفتحه والبحث فيه. وأتمنى من كل الاخوة اتباع هذه الطريقة لأنها فعلاً مريحة كما أنها تجعل التركيز على الحل فقط دون تشتت. ثانياً أشكرك على تواضعك الجم وسعة الصدر وايضاً كلمتك الجميلة المحبوبة جداً إلى قلبى والتي دائماً تنهي بها مقالاتك "والله أعلم" وأخيراً أشكر أخي السائل الذي أتاح لي فرصة للتعرف على أفكار جديدة.

#9

الاخ الفاضل / احمد مبارك

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

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

يعطيك الف عافية

#10

الإخوة الأحبة: أبا مالك1، team2000، أبا شادي...

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

1

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…