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

تعارض الدورات التدريبية

بدأه فتى الوادي في 18 أبريل 2011 · 11 رد · 708 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أريد تصميم قاعدة بيانات لتسجيل الدورات التي يريدها الموظف ...

الموظف قد يريد دورة معينة من تاريخ إلى تاريخ .. وقد يكون لديه دورة أخرى داخلة بين التاريخين ..

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

ومرفق لكم المثال ...

شكرا لكم مقدما على تجاوبكم .

دورة دورات تدريب بين تاريخين.rar

mk17481_26bccea871.gif
#2

للرفع رفع الله من قدره ...

mk17481_26bccea871.gif
#3

للرفع رفع الله من قدركم ...

mk17481_26bccea871.gif
#4

جرب هذا الاستعلام أخى الكريم

SELECT Q.id, Q.txtnam, Q.txtname2, Q.txtin, Q.txtmd, Q.txtdatef, Q.txtdatet, Q.txtnote
FROM [SELECT t_1.id, t_1.txtnam, t_1.txtname2, t_1.txtin, t_1.txtmd, t_1.txtdatef, t_1.txtdatet, t_1.txtnote FROM t_1 WHERE (((t_1.txtnam)=[forms]![f_1].[txtnam]))]. AS Q
WHERE (((Q.txtdatef)<=[forms]![f_1].[txtdatef]) AND ((Q.txtdatet)>=[forms]![f_1].[txtdatef])) OR (((Q.txtdatef)<=[forms]![f_1].[txtdatet]) AND ((Q.txtdatet)>=[forms]![f_1].[txtdatet])) OR (((Q.txtdatef)>=[forms]![f_1].[txtdatef]) AND ((Q.txtdatet)<=[forms]![f_1].[txtdatet]));

و هذه دالة كتبتها سريعا تؤدى نفس الغرض

يمكنك أن تجربها

Public Function Dawrah(EMPNAME As String, STARTDATE As Date, modah As Double) As Boolean

Dim STRSQL As String, ENDATE As Date
Dim RS As Recordset
ENDATE = DateAdd("D", modah - 1, STARTDATE)

STRSQL = "SELECT Q.* FROM (SELECT t_1.* FROM t_1 WHERE (((t_1.txtnam)='" & EMPNAME & "'))) AS Q " & _
"WHERE (((Q.txtdatef)<=#" & STARTDATE & "#) AND ((Q.txtdatet)>=#" & STARTDATE & "#)) " & _
"OR (((Q.txtdatef)<=#" & ENDATE & "#) AND ((Q.txtdatet)>=#" & ENDATE & "#)) " & _
"OR (((Q.txtdatef)>=#" & STARTDATE & "#) AND ((Q.txtdatet)<=#" & ENDATE & "#));"

Set RS = CurrentDb.OpenRecordset(STRSQL)
If RS.RecordCount > 0 Then
Dawrah = True
Else
Dawrah = False
End If

End Function

و لاستخدامها

If Dawrah(Me.txtnam, Me.txtdatef, Nz(Me.txtmd, 0)) Then
MsgBox "XXXXXX"
End If

تم تعديل هذه المشاركة بواسطة Abo_Yossof في 19 أبريل 2011 في 00:31

مدونتى:-

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

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

#5

اخي الكريم ابو يوسف .. شكرا لكن .. لم يعمل كما ينبغي ...

أنا عدلت المثال اختصارا ... وهذه صورة شرح للمطلوب ...

post-3573-009375300 1303165086_thumb.jpg

دورة دورات تدريب بين تاريخين2.rar

المرفقات
00001.jpg
mk17481_26bccea871.gif
#7

أحسنت أخي الكريم ..

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

دورة دورات تدريب بين تاريخين3.rar

mk17481_26bccea871.gif
#8

الشروط الموضوعة فى الدالة

لن تعطيك كل النتائج أخى

مدونتى:-

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

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

#9

ممكن تشرح لي كيف لا تعطيني كل النتائج ؟

mk17481_26bccea871.gif
#10

هذا هو كودك أخى

If DCount("[id]", "[t_1]", "[txtname]=[forms]![f_1]![txtname1] and [txtdatef]<=[forms]![f_1]![txtdatef] AND [txtdatet]>=[forms]![f_1]![txtdatef]") > 0 Then

الجزء الاول للاسم ليس به مشكلة

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

الجزء الثالث لتاريخ النهاية و به نفس المشكلة

لو لاحظت مثالى السابق ستجد اننى وضعت 3 احتمالات بالاستعلام حتى لا نستبعد اى نتائج موجودة

مدونتى:-

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

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

#11

أصبح الأمر واضحا ..

بارك الله فيك وفي علمك ونفع الله بك ..

ولا أملك لك إلا الدعاء في ظهر الغيب .

mk17481_26bccea871.gif
#12

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

اخوانى الافاضل وبارك الله لكم

سبحان الله وبحمده سبحان الله العظيم .. سبحان الله . الحمد لله . لا اله الا الله . الله اكبر .. استغفر الله . استغفر الله . استغفر الله

يارب احمى دينى وبلدى من كيد الاعداء والخائنين بحبك يا مصر بحبك يا مصر بحبك يا مصر

 


 


3.gif

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