اذهب الي المحتوي
أوفيسنا

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

قام بنشر (معدل)

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

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

سؤالي بالتحديد ... هل طريقتي بإستخدام هذا الكود صحيحه ولن تبسبب مشاكل للنظام 

لو فرضنا ان البرنامج يعمل طوال اليوم 

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

Private Function sSA()
On Error Resume Next
Dim i, r As Integer
Dim rs As Recordset
Set rs = Me.RecordsetClone
r = rs.RecordCount
rs.MoveLast
rs.MoveFirst
For i = 1 To r
If rs!mish_time = Time() Then
DoCmd.OpenForm "alarm"

End If
rs.MoveNext
Next
rs.Close
Set rs = Nothing
End Function

يتم استدعاء هذه الدالة عند حدث عداد الوقت كما هو موضح في النموذج frm_missions

شكرا لكم 

AlartSysteM2003.rar

تم تعديل بواسطه سعيد صواب
  • Like 2
قام بنشر
51 دقائق مضت, سعيد صواب said:

سؤالي بالتحديد ... هل طريقتي بإستخدام هذا الكود صحيحه ولن تبسبب مشاكل للنظام 

لو فرضنا ان البرنامج يعمل طوال اليوم 

الطريقة مجربة وسليمة 100%

ويمكن اخفاء النموذج المسؤول ليعمل بصمت في الخلفية

تصور انه يمكن ايضا ان يرسل لك رسائل sms يذكرك بمواعيدك

  • Like 3
قام بنشر

اخي سعيد

اولا ومن النظره الاولى لا انصح بهذا الكود ! ياساتر انت كل ثانية بتلف على السجلات وانشاء كائن ثم حذفه !

ثانيا لاحظت التالي وبالنظر في الكود السابق :

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

2. تتم المقارنة بناء على الوقت فقط ومهملا التاريخ معناته التنبيه يومي فهل هذا مستقصد وباهمال التاريخ

3. خلو الرسالة من موضوع التنبيه فقط ظهور الرسالة

4. لو كان هناك موضوعين بنفس الوقت هل كودك السابق سيظهر النموذج مرتين ؟

اعتقد انك لم تجرب الكود عمليا !!

 

تحياتي

 

  • Like 1
قام بنشر

 حياك الله استاذ رمهان 

ومشكور على نصائحك 

للتوضيح البيانات مبنية على استعلام بتاريخ اليوم لذا ومبدئيا لا احتياج لاستخدام التاريخ

بالنسبة لخلو الرسالة .... فهذا لم اعمل عليه بعد ...

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

==============

9 دقائق مضت, رمهان said:

اخي سعيد

اولا ومن النظره الاولى لا انصح بهذا الكود ! ياساتر انت كل ثانية بتلف على السجلات وانشاء كائن ثم حذفه !

 

 

 

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

 

نستنير بأفكاركم وما طرحت الموضوع الا للإستشارة والنصيحة

 

شكرا للجميع

قام بنشر

اخي سعيد

اضافة الى الملاحظات السابقة

وجدت انك تفلتر على تاريخ اليوم بالاستعلام ! وهذا ليس له اهمية مادام المقارنة على الوقت ! فالنظام راح يشيك يوميا على الوقت حسب تحليلك !

وهذه فكرة بسيطة 

Private Sub Form_Timer()
If DCount("*", "tbl_MIssions", "mish_time=time()") > 0 Then DoCmd.OpenForm "alarm"
clock.Caption = Time()
End Sub

بالتوفيق

قام بنشر (معدل)

شكرا لك استاذ رمهان

اعرف هذه الطريقة استاذ رمهان

وكان رأيي أن من الأفضل بدلا ان يلف على جميع بيانات الجدول ليخرج لي تاريخ اليوم ثم الوقت

ان احضر له تاريخ اليوم بالإستعلام .. ومن بعدها يتبقى الوقت فقط وسجلات الوقت لهذا اليوم لن تتعدى  20 إلى 30 في اقصى الحالات.

انا رحوم بالبرنامج ..  هههه

=====

ولكننا لم نستغني عن اللف في الحالتين ... وربما وهذا رأيي المتواضع ان لفتي ارحم من لفتك استاذي ولو بخطوات .. ههههه

منتظر رأيك 

 

تم تعديل بواسطه سعيد صواب
قام بنشر

كلامك صحيح واوافقك !

يمكن يصبح الكود هكذا 

Private Sub Form_Timer()
If DCount("*", "tbl_MIssions", "mish_time=time() and mish_date=date()") > 0 Then DoCmd.OpenForm "alarm"
clock.Caption = Time()
End Sub

تحياتي

  • Like 2
قام بنشر

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

وبرأيك هذه الطريقة افضل من الطريقة السابقة ... ام ان هذه الطريقة تمهيد لحل آخر يغني عن عمل اللوب كل ثانية 

شكرا

قام بنشر
6 دقائق مضت, سعيد صواب said:

وبرأيك هذه الطريقة افضل من الطريقة السابقة ...

شكرا

برايي افضل

7 دقائق مضت, سعيد صواب said:

 

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

شكرا

بهذا الراي لم يعد هناك حاجة او وجود ل اللوب !! الكود كافي بالعد كل ثانية واظهار الفورم !

بالتوفيق

  • Like 2
قام بنشر
4 دقائق مضت, سعيد صواب said:

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

 

العفو

ومارايك لو نكمل لكي يكون العمل عملي اكثر 

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

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

بالتوفيق

قام بنشر (معدل)

حياك الله استاذ رمهان

وزادك الله تواضع وعلما

لي الشرف ان اتناقش مع شخص بمقامك استاذ رمهان ..

ولكن في الحقيقة الفكرة لم ارسمها بشكل كامل ..

ولو ان لب الفكرة هو هذا النموذج ..

===

ولكن مبدئيا وكل شئ ممكن يتغير عند العمل الفعلي  الفكرة تتلخص في التالي

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

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

 

=====

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

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

وكذلك نفس الفكرة بالتنبيهات الحالية ..

======

واكرر شكري لك استاذ رمهان وللأستاذ ابوخليل على تعاونكم ..

حينما اقوم بعمل هذه الأشياء سأعرضها هنا بإذن الله.

عطيتوني وجه اليومين هذي وانا صدقت ..

شكرا مرة اخرى

 

 

تم تعديل بواسطه سعيد صواب
قام بنشر

العفو استاذ سعيد

وانا اسحب طلبي فلك حرية وقتك ! 

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

ادعو لك بالتوفيق 

يغلق هذا الموضوع :wavetowel:

  • Like 1
قام بنشر (معدل)

السلام عليكم.. وتحياتي للجميع

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

تم تعديل بواسطه محمد سلامة
  • Like 1
قام بنشر
في ١٨‏/٣‏/٢٠١٦ at 00:04, سعيد صواب said:

جزاك الله خير استاذ محمد

اي كود تقصد 

شكرا

هذا الكود الذى اقصده اخى سعيد

تحياتى لك

Private Sub Form_Timer()
On Error Resume Next
Dim I As Integer
With MyUser
I = Nz(DLookup("[ID_wd]", "tbl_wared_d", "[ReadYn] = false  and [UserRecv]='" & .UserName & "'"), 0)
If I <> 0 Then
Me.new_msg = DCount("[ID_wd]", "[tbl_wared_d]", "[ReadYn] = false  AND [UserRecv]='" & .UserName & "'")
Me.new_msg.Visible = True
Else
Me.new_msg.Visible = False
End If
End With

وهذا ايضا

Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
Dim intStore As Integer
intStore = DCount("[id_m]", "[tbl_motaba]", "[Date_End] <=Date() AND [Check1] =0 ")
If intStore = 0 Then
Exit Sub
Else
If MsgBox(" áÏíÜÜÜÜß ÚÜÜÜÏÏ " & intStore & " ãÚÜÜÜÇãáÜÜÜÜÉ " & _
          " ÇäÊåÊ ãÏÉ ÇäÌÇÒåÇ ÜÜ Úáíß ãÊÇÈÚÊåã " & vbCrLf & vbCrLf & _
          " " & _
          "åá ÊÜÜÜæÏ ÑÄíÊåÜÜÜÜã ÇáÂä ¿ " & _
          " ", vbYesNo Or vbExclamation Or vbDefaultButton1, _
          "ÊäÈíå ÈÇäÊåÇÁ ÇáãÚÇãÜÜÜÜáÇÊ") = vbYes Then
DoCmd.OpenForm "frm_search_motaba"
Else
DoCmd.close acForm, "frm_search_motaba", acSaveYes
Exit Sub
End If
End If
End Sub

تحياتى لك

قام بنشر

وما دمنا نعمل ضمن النموذج  هذا كود يقوم بالبحث والمقارنة

Dim i
i = Time()
mish_time.SetFocus
DoCmd.FindRecord i, acEntire, False, acSearchAll, False, acCurrent, True
If i = mish_time Then
DoCmd.OpenForm "alarm"
End If

 

  • Like 1
قام بنشر

السلام عليكم:smile:

 

انا على سفر ، وبعيد عن الكمبيوتر ، لهذا السبب انا بعيدا عن المنتدى :smile:

 

عندي ملاحظة واحدة فقط ، وبحسب خبرتي في هذا الموضوع:

الكمبيوتر يعطي أولوية تنفيذ أوامر  CPU إلى برامج الوندوز ، ثم البرامج الاخرى ،

مما قد يُؤخر تنفيذ أوامر برنامج الاكسس ثانية او اثنين ،

إذًا ، عند تنفيذ الأمر التالي او أمر مثله:

If rs!mish_time = Time() Then

قد يكون CPU الكمبيوتر مشغولا ، وعند تنفيذ الامر ، الوقت لن يكون مطابقاً ، لأننا نقارن الوقت بالثواني ، وحينها ، فالمعادلة لن تُنفّذ !!

لذلك ، ولتفادي هذه المشكلة ، اجعل مقارنة الوقت:

إما بالساعة والدقيقة وبدون ثواني ،

وإما اجعل المقارنة ">=" بدل "="  ، او شئ من هذا القبيل ،

وإلا ، فقد يفوتك موعد ولن تعرف لماذا :smile:

 

جعفر

  • Like 2
قام بنشر
الان, jjafferr said:

السلام عليكم:smile:

 

انا على سفر ، وبعيد عن الكمبيوتر ، لهذا السبب انا بعيدا عن المنتدى :smile:

 

عندي ملاحظة واحدة فقط ، وبحسب خبرتي في هذا الموضوع:

الكمبيوتر يعطي أولوية تنفيذ أوامر  CPU إلى برامج الوندوز ، ثم البرامج الاخرى ،

مما قد يُؤخر تنفيذ أوامر برنامج الاكسس ثانية او اثنين ،

إذًا ، عند تنفيذ الأمر التالي او أمر مثله:

If rs!mish_time = Time() Then

قد يكون CPU الكمبيوتر مشغولا ، وعند تنفيذ الامر ، الوقت لن يكون مطابقاً ، لأننا نقارن الوقت بالثواني ، وحينها ، فالمعادلة لن تُنفّذ !!

لذلك ، ولتفادي هذه المشكلة ، اجعل مقارنة الوقت:

إما بالساعة والدقيقة وبدون ثواني ،

وإما اجعل المقارنة ">=" بدل "="  ، او شئ من هذا القبيل ،

وإلا ، فقد يفوتك موعد ولن تعرف لماذا :smile:

 

جعفر

أسأل الله أن يجعل سفرك سفر بر وتقوى وأن يرزقك من العمل ما يرضى 
اسأل الله أن يهون عليك سفرك هذا وأن يردّك سالماً غانماً
وفقك الله لكلّ خير وبارك فيك 
:wub:

قام بنشر

ماشاء الله !

الموضوع مغلق ياشباب !!!!!:blink::blink:

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

اخي جعفر 

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

في 3/18/2016 at 18:58, رمهان said:

4. لو كان هناك موضوعين بنفس الوقت هل كودك السابق سيظهر النموذج مرتين ؟

اعتقد انك لم تجرب الكود عمليا !!

تحياتي

 

وبما انكم واصلتو النقاش ! اتمنى اتحافنا بحل للنقطة السابقة وبظهور التنبيه على شكل  msgbox  وبها موضوع التنبيه !

تحياتي 

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.

×
×
  • اضف...

Important Information