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

برنامج ادارة الغرف

بدأه friend_egypt في 2 أغسطس 2011 · 31 رد · 2,644 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

اما بعد اخواني الاعضاء و الخبراء

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

اود ان اوضح اولا طريقة العمل

هناك نظامان للحجز اما حتي الساعه 8 مساءا ( معني ذلك ان الرحيل في نفس اليوم او اذا كان الحجز لاكثر من يوم فان الرحيل في يوم اخر )

واما حتي الساعه 8 صباحا ( معني ذلك ان الرحيل لا يمكن ان يكون في نفس اليوم )

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

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

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

ان كانت الساعه بعد 8 صباحا حتي ان كان نفس تاريخ الخروج السابق فانه يقبل الحجز و ذلك في شاشة الحجز search

2 - بالنسبة للاستعلام beds Without Matching patient من المفترض انه يستعلم عن السراير الفارغه و لكنه يستعلم عن اول سجل فقط

بمعني عند حجز السرير 106a حتي 2 / 8 / 2011 ثم بعد ذلك حجزه يوم 3/8/2011 لم ياخذ في الاعتبار الحجز الثاني و ظهر ان السرير فراغ

3 - هل من الممكن تحويل الشاشة gform لاسرة و ليس لغرف

و اسف جدا علي الاطاله و ارجو ان يساعدني احد

Desktop.rar

#2

اخواني الاعزاء هل من مستجيب؟؟؟

#3

للرفع

#4

للرفع

:S

#5

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

هل المطلوب غير مفهوم بالنسبه للاعضاء الكرام حيث انني بحاجه ماسه الي هذا التعديل

و شكرا لكم جميعا

#6

هذه الدالة ستحقق لك ما تريد

فقط ضعها فى النموذج

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

Function GetBedData(bedno As String) As String
 GetBedData = ""
 Dim rs As Recordset

 Set rs = CurrentDb.OpenRecordset("SELECT patient.* FROM patient WHERE (((patient.[out date])>=Date()) AND ((patient.[bed no])='" & bedno & "')) ORDER BY patient.[out date];")
 If rs.RecordCount > 0 Then
    If rs![out date] = Date And rs![time key] = "8 AM" And Hour(time()) > 7 Then
    '
    ElseIf rs![out date] = Date And rs![time key] = "8 PM" And Hour(time()) > 19 Then
    '
    Else
     GetBedData = rs![patient name] & vbCrLf & rs![out date] & vbCrLf & rs![time key]
    End If
 End If

 rs.Close
 Set rs = Nothing

End Function

و احذف الدالة GetRoomData من النموذج

و اضف هذه

لكى يتم عرض الاسرة بدلا من الغرف

و كذلك سيتم اعطاء السرير المحجوز لون مختلف عن الفارغ

Public Function GetRoomData()
Dim Pag As Page
Dim Ctl As Control
Dim bed As String

For Each Pag In Me.TabCtl0.Pages
    i = 0
    For Each Ctl In Pag.Controls

    If bed = "a" Then
    bed = "b"
    Else
    i = i + 1
    bed = "a"
    End If

If Ctl.ControlType = acCommandButton Then
            'إضافة رقم السرير إلى بطاقة زر الأمر
            Ctl.Caption = Pag.PageIndex & Format(i, "00") & bed
            'إضافة بيانات المريض إلى بطاقة رز الأمر
            Ctl.Caption = Ctl.Caption & vbCrLf & GetBedData(Ctl.Caption)
            If Len(Ctl.Caption) > 6 Then Ctl.ForeColor = RGB(56, 33, 223) Else Ctl.FontBold = True
            Ctl.TabStop = False
            Ctl.FontUnderline = False
            Ctl.ControlTipText = Ctl.Caption

            'إضافة الدالة إلى حدث عند النقر
            Ctl.OnClick = "=OpenForm()"
        End If
    Next

Next

End Function

ملحوظة :

ستحتاج الى وضع أزرار بعدد الاسرة بكل طابق

room manager.rar

3

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#7
Abo_Yossof كتب:

هذه الدالة ستحقق لك ما تريد

فقط ضعها فى النموذج

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

Function GetBedData(bedno As String) As String
 GetBedData = ""
 Dim rs As Recordset

 Set rs = CurrentDb.OpenRecordset("SELECT patient.* FROM patient WHERE (((patient.[out date])>=Date()) AND ((patient.[bed no])='" & bedno & "')) ORDER BY patient.[out date];")
 If rs.RecordCount > 0 Then
    If rs![out date] = Date And rs![time key] = "8 AM" And Hour(time()) > 7 Then
    '
    ElseIf rs![out date] = Date And rs![time key] = "8 PM" And Hour(time()) > 19 Then

    '
    Else
     GetBedData = rs![patient name] & vbCrLf & rs![out date] & vbCrLf & rs![time key]
    End If
 End If

 rs.Close
 Set rs = Nothing

End Function

و احذف الدالة GetRoomData من النموذج

و اضف هذه

لكى يتم عرض الاسرة بدلا من الغرف

و كذلك سيتم اعطاء السرير المحجوز لون مختلف عن الفارغ

Public Function GetRoomData()
Dim Pag As Page
Dim Ctl As Control
Dim bed As String

For Each Pag In Me.TabCtl0.Pages
    i = 0
    For Each Ctl In Pag.Controls

    If bed = "a" Then
    bed = "b"
    Else
    i = i + 1
    bed = "a"
    End If

If Ctl.ControlType = acCommandButton Then
            'إضافة رقم السرير إلى بطاقة زر الأمر
            Ctl.Caption = Pag.PageIndex & Format(i, "00") & bed
            'إضافة بيانات المريض إلى بطاقة رز الأمر
            Ctl.Caption = Ctl.Caption & vbCrLf & GetBedData(Ctl.Caption)
            If Len(Ctl.Caption) > 6 Then Ctl.ForeColor = RGB(56, 33, 223) Else Ctl.FontBold = True
            Ctl.TabStop = False
            Ctl.FontUnderline = False
            Ctl.ControlTipText = Ctl.Caption

            'إضافة الدالة إلى حدث عند النقر
            Ctl.OnClick = "=OpenForm()"
        End If
    Next

Next

End Function

ملحوظة :

ستحتاج الى وضع أزرار بعدد الاسرة بكل طابق

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

لقد قمت بتجربة الداله الجديده علي النحو التالي

قمت بحجز السرير 101A يوم 7/8/2011 و تاريخ المغادره 8/8/2011 وكان نظام الحجز 8AM ثم قمت بتغيير التاريخ و الساعه بالكمبيوتر الي 8/8/2011 و الساعه 10AM ولكنه لم يقبل بالحجز بالرغم من ان السرير يعتبر فارغ من 8AM

اما ماذا عن لشاشة beds Without Matching patient في طلبي

و اسف علي ازعاجك معي و لك جزيل الشكر

تم تعديل هذه المشاركة بواسطة friend_egypt في 7 أغسطس 2011 في 23:34

#8
اقتباس
قمت بحجز السرير 101A يوم 7/8/2011 و تاريخ المغادره 8/8/2011 وكان نظام الحجز 8AM ثم قمت بتغيير التاريخ و الساعه بالكمبيوتر الي 8/8/2011 و الساعه 10AM ولكنه لم يقبل بالحجز بالرغم من ان السرير يعتبر فارغ من 8AM

لا اعرف ماذا تقصد بأنه لم يقبل بالحجز ؟

هل تقصد النص المكتوب على الازرار

أم تقصد نموذج المريض

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

اقتباس
اما ماذا عن لشاشة beds Without Matching patient في طلبي

تم تعديلها فى المرفق

room manager.rar

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#9
Abo_Yossof كتب:

لا اعرف ماذا تقصد بأنه لم يقبل بالحجز ؟

هل تقصد النص المكتوب على الازرار

أم تقصد نموذج المريض

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

تم تعديلها فى المرفق

اخي الكريم ابو يوسف شكرا جزيلا لك علي مجهودك معي و مساعدتك لي

فهذه هي شيم الكرام

لقد ارفقت لك صورة توضح المشكله لدي وهي رقم 3 حيث ان السرير فارغ و كان من المفترض ان اضعها من اول الموضوع حتي لا اطول عليك او اضيع وقتك

و اسف اذا اطلت عليك

post-247181-088414900 1312818963_thumb.j

المرفقات
Slide1.JPG

تم تعديل هذه المشاركة بواسطة friend_egypt في 8 أغسطس 2011 في 18:59

#10

نعم اخى

الان وضحت الصورة

لكن الحجز يتم بأى تاريخ ( من الممكن ان يكون بتاريخ لاحق لتاريخ اليوم )

لذلك

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

ان شاء الله سأحاول التعديل لكن انا مشغول حاليا

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#11
Abo_Yossof كتب:

نعم اخى

الان وضحت الصورة

لكن الحجز يتم بأى تاريخ ( من الممكن ان يكون بتاريخ لاحق لتاريخ اليوم )

لذلك

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

ان شاء الله سأحاول التعديل لكن انا مشغول حاليا

شكرا لك اخي ابو يوسف و كان الله في العون

ومنتظرك ولكن بالله عليك ما تنساني

#12

إلى أن يجيبك الأستاذ أبو يوسف على طلبك أو أن أشير إلى أمرين مهمين

الأول ..

- يتوجب عليك تخليص الجدول Patient من البيانات المتعلقة بالحجوزات وجعلها في جدول مستقل باسم Reservation لضمان عدم تكرار إدخال بيانلت المريض كاملةً مع كل حجز

- رقم الغرفة لا محل له في حالة استخدمنا رقم السرير

الثاني ..

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

1
#13

للمناقشة

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

- قد يكون المطلوب عند وجود السجل الفريد من التكرار ... وهذا تقليدي

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

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

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

- يمكن تطبيق هذا المنطق باستخدام دالة ()DMAX لإعادة أعلى تاريخ خروج للسرير المحدد (يجب مراعات الوقت هنا)

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

- يمكن تطبيق هذا المنطق باستخدام دالة ()DLOOKUP لإعادة صواب أو خطأ مع عرض التاريخ مع الصواب للمستخدم المحدد (يجب مراعات الوقت)

يبجب يستخدم المفتاح الأساسي للغرض الذي صمم من أجله فقط

#14
القحم كتب:

للمناقشة

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

- قد يكون المطلوب عند وجود السجل الفريد من التكرار ... وهذا تقليدي

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

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

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

- يمكن تطبيق هذا المنطق باستخدام دالة ()DMAX لإعادة أعلى تاريخ خروج للسرير المحدد (يجب مراعات الوقت هنا)

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

- يمكن تطبيق هذا المنطق باستخدام دالة ()DLOOKUP لإعادة صواب أو خطأ مع عرض التاريخ مع الصواب للمستخدم المحدد (يجب مراعات الوقت)

يبجب يستخدم المفتاح الأساسي للغرض الذي صمم من أجله فقط

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

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

ان كنت تستطيع مساعدتي انت و الاستاذ ابو يوسف اكون شاكر جدا

#15

نعم بعض الشيء.. لكن سوف أقوم بحل الأصعب منهما وأترك الأخر لك لكي تعمل فيه عقل وتبدع في الحل

هذا المثال يقوم بتطبيق المنطق المتعلق بحجز السرير

room manager.zip

1
#16

قمت بإجراء تعديل بسيط على الشفرة ... أرجو ملاحظة الفرق بين السرير 101A والسرير 106B

room manager.zip

تم تعديل هذه المشاركة بواسطة القحم في 11 أغسطس 2011 في 12:07

1
#17
القحم كتب:

قمت بإجراء تعديل بسيط على الشفرة ... أرجو ملاحظة الفرق بين السرير 101A والسرير 106B

room manager.zip

اخي العزيز القحم

بارك الله فيك اخي الكريم علي هذا التعديل الذكي الجميل

ولكن لدي استفسار

الا يمكن استخدام الداله التي في حدث bed no قبل التحديث التي استعملتها لاختيار اكبر تاريخ حجز و تحويلها الي وقت علي الفورم search و بدون فصل جدول patient الي reservation

حيث ان فكرة ان عند اختيار السرير يبحث في احدث تاريخ out date بالجدول patient لهذا السرير و يعطي رساله بهل تريد الحجز بعد هذا التاريخ او الخروج و تغيير السرير رائعه ان امكن تطبيقها علي الفورم search

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

و علي كل حال فقد قمت بعمل ممتاز بارك الله فيك

تم تعديل هذه المشاركة بواسطة friend_egypt في 12 أغسطس 2011 في 01:51

#18

لك ذلك ...

room manager.zip

#19

بارك الله فيك أخ القحم

انت هنا تقارن أكبر تاريخ للحجوزات

لكن الفرضية التى كنت اتحدث عنها هى ان تكون الحجوزات متقطعة ( بما يعنى أن تكون هناك مدة شاغرة بين حجزين

و فى هذه الحالة لن تظهر هذه المدة

عموما هذا يتوقف على نظام العمل لدى الاخ السائل

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#20
Abo_Yossof كتب:

بارك الله فيك أخ القحم

انت هنا تقارن أكبر تاريخ للحجوزات

لكن الفرضية التى كنت اتحدث عنها هى ان تكون الحجوزات متقطعة ( بما يعنى أن تكون هناك مدة شاغرة بين حجزين

و فى هذه الحالة لن تظهر هذه المدة

عموما هذا يتوقف على نظام العمل لدى الاخ السائل

جزاكم الله خير ابو يوسف هذا فعلا ما احتاجه حيث ان الحجز متقطع ليس مستمر :sad:

القحم كتب:

لك ذلك ...

room manager.zip

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

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

post-247181-027890900 1313147210_thumb.j

المرفقات
untitled.JPG

تم تعديل هذه المشاركة بواسطة friend_egypt في 12 أغسطس 2011 في 14:07

#21
Abo_Yossof كتب:

بارك الله فيك أخ القحم

انت هنا تقارن أكبر تاريخ للحجوزات

لكن الفرضية التى كنت اتحدث عنها هى ان تكون الحجوزات متقطعة ( بما يعنى أن تكون هناك مدة شاغرة بين حجزين

و فى هذه الحالة لن تظهر هذه المدة

عموما هذا يتوقف على نظام العمل لدى الاخ السائل

نعم أستاذ أبو يوسف! ولهذا وضعت المسألة للنقاش! لأن الوضع يحتمل صوراً متعددة. أما الصورة التي ذكرتها أنا فهي الصورة الشائعة.. ومع هذا قد يدخل هذة الصورة؛ (الإلغاء وطلب التأجيل، وتغيير السرير أيضا!). ولهذا قلت..

اقتباس
حتى يجيب الأستاذ أبو يوسف على إشكالية الحجز المسبق

وعلى كل حال هذا النوع من الحجوزات يعتمد على تاريخ الحجز وليس على الغرض المحجوز.. بمعنى أننا ننظر إلى التاريخ المراد حجزه وليس الغرض المراد حجزه! والسؤال المنطقي هو ..

هل هذا التاريخ (المحدد) يوجد به أغراض محجوزة شاغرة؟.. (غرفة ، تذكرة ، موعد ، .. )

وليس هذا ينطبق على ما فعلناه!.. لأسباب..

- لأن هذا جواب على قدر السؤال..

- لأن هذا يتطلب صحة تدفق البيانات.. والسائل قد لا يرغب في هذا مثل:

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

والجواب:

اقتباس
الا يمكن استخدام الداله التي في حدث bed no قبل التحديث التي استعملتها لاختيار اكبر تاريخ حجز و تحويلها الي وقت علي الفورم search و بدون فصل جدول patient الي reservation

ويبقى الأمر تحت نظركم أستاذ أبو يوسف..

تم تعديل هذه المشاركة بواسطة القحم في 12 أغسطس 2011 في 14:31

#22
القحم كتب:

نعم أستاذ يوسف! ولهذا وضعت المسألة للنقاش! لأن الوضع يحتمل صوراً متعددة. أما الصورة التي ذكرتها أنا فهي الصورة الشائعة.. ومع هذا قد يدخل هذة الصورة؛ (الإلغاء وطلب التأجيل، وتغيير السرير أيضا!). ولهذا قلت..

وعلى كل حال هذا النوع من الحجوزات يعتمد على تاريخ الحجز وليس على الغرض المحجوز.. بمعنى أننا ننظر إلى التاريخ المراد حجزه وليس الغرض المراد حجزه! والسؤال المنطقي هو ..

هل هذا التاريخ (المحدد) يوجد به أغراض محجوزة؟.. (غرفة ، تذكرة ، موعد ، .. )

وليس هذا ينطبق على ما فعلناه!.. لأسباب..

- لأن هذا جواب على قدر السؤال..

- لأن هذا يتطلب صحة تدفق البيانات.. والسائل قد لا يرغب في هذا مثل:

والجواب:

ويبقى الأمر تحت نظركم أستاذ يوسف..

اخي الكريم القحم جزاك الله خيرا و زادك علما

اولا احب ان اخبرك انني ليست لدي اي خبرة كافيه لكي اناقشك في شيء انت اعلم مني به فكل ما اردته هو التسهيل ان امكن حيث انني اخشي عند تغيير مسار البرنامج لا استطيع تظبيطه من الاول و علي كل حال فانا مجرد سائل للمساعده من اهل الخبرة امثالكم و اعزرني ان كنت اتعبتك او شغلت وقتك اكثر من اللازم

ثانيا ساخبرك بفكره عامه عن مسار البرنامج

كل ما في الامر عندي مجموعه من الاسرة و يكون الحجز اما حتي 8 مساءا او 8 صباحا حسب عدد الايام المحجوزة - يمكن حجز السرير اكثر من يوم ( مع مراعاه ان اخر يوم حجز للسرير اذا كان الحجز حتي 8 صباحا بعد الساعه 8 صباحا يكون السرير متاح للحجز) و يمكن نقل المريض من سرير الي سرير اخر و يمكن مد فترة الاقامه لنفس المريض علي نفس السرير

والامر كله لكم خبراء الاكسس استاذي الجليل ابو يوسف و استاذي الجليل القحم

#23

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

دعنا ننتظر الاستاذ أبو يوسف وما يقترح علينا... وإن شاء الله نجد الحل المناسب

#24

هذه الدالة كتبتها لارجاع الفترات الشاغرة للسرير

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

اما فى حالة ما اذا كان السرير شاعر فى ذلك التاريخ فلن ترجع شىء

و كذلك وضعت متغير عام لارجاع حالة السرير ما اذا كان محجوز أم شاغر

ملحوظة : تم الاعتماد على ان الحجوزات تبدأ من 8 صباحا دائما (لأنى لم أجد بالجدول ما يشير الى غير ذلك)

أولا هذا الكود ضعه فى وحدة نمطية

Public BedAvailable As Boolean

Function Bed_AvailableIn(bedno As String, Qdate As Date) As String
On Error GoTo Good_Bye
Dim strdate As Date, rs As Recordset
Dim LastDateReserved
Dim i, r, x As Integer
BedAvailable = True

Set rs = CurrentDb.OpenRecordset("SELECT patient.* FROM patient WHERE (((patient.[bed no])='" & "102a" & "') AND ((patient.[out date])>=#" & Qdate & "#)) ORDER BY patient.[out date];")
r = rs.RecordCount

If r > 0 Then
     rs.MoveFirst
       Bed_AvailableIn = "The bed  " & bedno & "  is availlable  :"
       strdate = CDate(Qdate & " 8 AM")
       For i = 0 To r - 1
         If BedAvailable = True Then BedAvailable = Not (CDate(Qdate & " 8 AM") >= CDate(rs![in date] & " 8 AM") And CDate(Qdate & " 8 AM") < CDate(rs![out date] & " " & rs![time key]))
         If CDate(rs![in date] & " 8 AM") - strdate >= 1 Then Bed_AvailableIn = Bed_AvailableIn & vbCrLf & "From " & strdate & "   To " & CDate(rs![in date] & " 8 AM")
          strdate = CDate(rs![out date] & " " & rs![time key])
          rs.MoveNext
       Next
      Bed_AvailableIn = Bed_AvailableIn & vbCrLf & "From " & strdate & "   To  ......"
Else
  BedAvailable = True
End If

Good_Bye:
On Error Resume Next
If Err.Number > 0 Then MsgBox Err.Number & vbCrLf & Err.Description
 rs.Close
 Set rs = Nothing
End Function

و فى النموذج يمكنك استخدامه بهذا الشكل

Dim stravl As String
 stravl = Bed_AvailableIn(bedno, txtdate)
  If BedAvailable Then
    MsgBox "السرير شاغر  "
    Else
     MsgBox stravl
  End If

حيث bedno هو رقم السرير

و txtdate هو تاريخ الحجز

جرب الكود و أخبرنى بالنتائج لأننى جربته سريعا

تم تعديل هذه المشاركة بواسطة Abo_Yossof في 13 أغسطس 2011 في 02:47

1

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#25
Abo_Yossof كتب:

هذه الدالة كتبتها لارجاع الفترات الشاغرة للسرير

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

اما فى حالة ما اذا كان السرير شاعر فى ذلك التاريخ فلن ترجع شىء

و كذلك وضعت متغير عام لارجاع حالة السرير ما اذا كان محجوز أم شاغر

ملحوظة : تم الاعتماد على ان الحجوزات تبدأ من 8 صباحا دائما (لأنى لم أجد بالجدول ما يشير الى غير ذلك)

أولا هذا الكود ضعه فى وحدة نمطية

Public BedAvailable As Boolean

Function Bed_AvailableIn(bedno As String, Qdate As Date) As String
On Error GoTo Good_Bye
Dim strdate As Date, rs As Recordset
Dim LastDateReserved
Dim i, r, x As Integer
BedAvailable = True

Set rs = CurrentDb.OpenRecordset("SELECT patient.* FROM patient WHERE (((patient.[bed no])='" & "102a" & "') AND ((patient.[out date])>=#" & Qdate & "#)) ORDER BY patient.[out date];")
r = rs.RecordCount

If r > 0 Then
     rs.MoveFirst
       Bed_AvailableIn = "The bed  " & bedno & "  is availlable  :"
       strdate = CDate(Qdate & " 8 AM")
       For i = 0 To r - 1
         If BedAvailable = True Then BedAvailable = Not (CDate(Qdate & " 8 AM") >= CDate(rs![in date] & " 8 AM") And CDate(Qdate & " 8 AM") < CDate(rs![out date] & " " & rs![time key]))
         If CDate(rs![in date] & " 8 AM") - strdate >= 1 Then Bed_AvailableIn = Bed_AvailableIn & vbCrLf & "From " & strdate & "   To " & CDate(rs![in date] & " 8 AM")
          strdate = CDate(rs![out date] & " " & rs![time key])
          rs.MoveNext
       Next
      Bed_AvailableIn = Bed_AvailableIn & vbCrLf & "From " & strdate & "   To  ......"
Else
  BedAvailable = True
End If

Good_Bye:
On Error Resume Next
If Err.Number > 0 Then MsgBox Err.Number & vbCrLf & Err.Description
 rs.Close
 Set rs = Nothing
End Function

و فى النموذج يمكنك استخدامه بهذا الشكل

Dim stravl As String
 stravl = Bed_AvailableIn(bedno, txtdate)
  If BedAvailable Then
    MsgBox "السرير شاغر  "
    Else
     MsgBox stravl
  End If

حيث bedno هو رقم السرير

و txtdate هو تاريخ الحجز

جرب الكود و أخبرنى بالنتائج لأننى جربته سريعا

جزاك الله خير ا استاذنا ابو يوسف

القحم كتب:

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

دعنا ننتظر الاستاذ أبو يوسف وما يقترح علينا... وإن شاء الله نجد الحل المناسب

اخي الكريم القحم

لقد حاولت ان افعل ما قال عليه استاذ ابو يوسف و لكن لم افهم :sad: :sad:

هل يمكن ان تساعدني بهذه الاكواد ؟؟؟

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