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

كيف يتم التذكر التلقائى بالأكسس

مغلقاستطلاع
بدأه مسلم المسلم في 22 يناير 2004 · 16 رد · 4,345 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام

استطلاع

6 مشارك في التصويت

??? ??? ?????? ???????? ???????

?????? ?????5 صوت · 83%
??? ?????? ??????? ???? ???? ?? ??? ???? ?????0 صوت · 0%
????? ?? ???????? ?? ???????? ??? ???? ???? ?????1 صوت · 17%
#1 صاحب الموضوع

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

تم تعديل هذه المشاركة بواسطة مسلم المسلم في 22 يناير 2004 في 16:05

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

#2

بسم الله الرحمن الرحيم

الاخ مسلم المسلم

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

وشكرا

أخوك أبو أحمد

#3

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

#4

الأخ مسلم .. تفضل :

العمل :

قمت بإضافة أربعة حقول في جدول Units كالتالي :

Remember = هي خانة اختيار ذكرني

PrintAfter = المدة التي تريد التذكير بعدها (رقم)

RememberDate = تاريخ التذكير ويقوم الإجراء باحتسابه دون تدخل منك بعد خروجك من حقل PrintAfter .

RemPrint = خانة اختيار لمعرفة هل تمت طباعة التذكير للسجل أم لا

-----------

بعد أن تكتب الرقم الذي تريد أن يذكرك به في خانة PrintAfter وتخرج منه سيقوم الإجراء التالي بوضع وقت تاريخ التذكير في خانة RememberDate :

Me.RememberDate = DateAdd("d", Me.PrintAfter, Date)

----------

عند ضغطك لزر ( ذكرني ... ) سيحصل الآتي بإذن الله :

سيبحث الإجراء التالي عن السجلات التي تم التعليم عليها للتذكير ولم يتم طباعتها وبلغت أو زادت على تاريخ التذكير RememberDate :

Dim sq As String
Dim Rec As New ADODB.Recordset
Dim Strmsg As String

sq = "select * from Units Where Remember=" & True
sq = sq & " And RemPrint=" & False
q = sq & " And RememberDate >=" & Date

Rec.Open sq, CurrentProject.Connection, adOpenKeyset, adLockReadOnly, adCmdText

If Rec.RecordCount <> 0 Then
    Strmsg = MsgBox("يوجد عدد : " & Rec.RecordCount & "سجلاً/سجلات" & " لم يتم طباعتها للتذكير .. هل تريد طباعته الآن : ", vbYesNo + vbDefaultButton2)
        If Strmsg = vbYes Then
' الانتقال إلى إجراء طباعة التقرير
            printRecords
        End If
End If

Rec.Close
Set Rec = Nothing

وبدوره إذا وجد الإجراء السابق سجلات توفرت فيها الشروط سيقوم بطباعتها :

Dim cr1 As String
Dim cr2 As String
Dim cr3 As String
Dim Strmsg As String
Dim db As ADODB.Connection
Dim sqlUpdate As String
' الشروط
cr1 = "Remember=" & True
cr2 = " And RemPrint=" & False
cr3 = " And RememberDate >=" & Date

Strmsg = MsgBox("هل الطابعة جاهزة أم لا ؟ ", vbYesNo + vbDefaultButton2)
    If Strmsg = vbYes Then
        DoCmd.OpenReport "تذكير", acViewPreview, , cr1 & cr2 & cr3
 ' تحديث حقل RemPrint
' للإفادة بطباعة السجل بوضع علامة عليه
   sqlUpdate = "Update units set RemPrint=" & True
   sqlUpdate = sqlUpdate & " where Remember=" & True
   sqlUpdate = sqlUpdate & " And RemPrint = " & False
   sqlUpdate = sqlUpdate & " And RememberDate >=" & Date
    Set db = CurrentProject.Connection
    db.Execute sqlUpdate
    db.Close
    Set db = Nothing
        
    End If

db24.zip

تم تعديل هذه المشاركة بواسطة أحمد الحربي في 25 يناير 2004 في 02:57

#5

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

أنا و أعوذ بالله منكلمة أنا من طرح السؤال و أرفقت المثال للتعديل عليه, و سؤال أخينا مسلم مطابق للسؤالالذي طرحته و يمكنه الاستفادة منه ان شاء الله.

المثال خاضع للتجربة حاليا.

#6

أخي الكريم .. biskra

آسف لم أنتبه جيداً .. ولكن أرجو أن يكون حلاً للمشكلة

#7

الأستاذ أحمد عمل رائع, بل اٍسمح لي بأن أقول لك بأنه اْبداع ليبب واحد هو أنني شاهدت في أكثر من منتدى أجنبي نفس السؤال و لكن لم يتمكن أي منهم من وضع الحل, جزاك الله كل خير و ضاعف حسناتك.

دائما في مسار التحسين لاحظت أن الكود يبقى محتفظ بالتذكير للسجل الذي اٍخترنا له وضع علامة صح على خانة التذكير, أي أنه عند الضغط على التذكير فاٍنه يعاود طبع السجل مع السجلات الجديدة, و قد تتراكم السجلات بكثرة عندما تكبر قاعدة البيانات, سؤالي هل يمكن أن يتم ازالة السجل بعد أن تتم طباعته تلقائيا,أي بعد أن يتم طبع التذكير المرتبط به؟

أرجو أن أكون قدوضحت المطلوب.

#8

أخي الكريم biskra

تأمل الخانة ( هل طبع أم لا ) فالكود ينظر إليها بعين الاعتبار فهو سيختار من السجلات ما توفرت فيه الشروط الثلاثة التالية :

1- تم التعليم عليها بالتذكير في خانة اختيار (تقرير التذكير)

2- وصلت أو زادت عن التاريخ المطلوب .

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

وقد جربته الآن مرة أخرى فعمل بشكل ممتاز

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

تم تعديل هذه المشاركة بواسطة أحمد الحربي في 27 يناير 2004 في 03:32

#10

و هذا من أشهر المنتديات

http://www.accessvba.com/index.php?s=

علامة = تكون بعد s

#11

الأخوة الأعزاء

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

الحل الذي طرح للإجابة على السؤال ائع ولكنه لم يجب على السئوال بشكل دقيق

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

والحل المطروح يتطلب تدخل المستخدم بضغط مفتاح معين اي ليس تلقائيا بعد مرور زمن

يمكن حل المشكلة باستخدام المؤقت في النموذج Form Timer

وذلك في حال وجود نموذج رئيسي في النظام

وفي حال عدم وجود نموذج رئيسي يمكن عمل نموذج جديد مخفي واستخدام نفس الخاصية للتذكير

طبعاً لا داعي لأن ارفق مثال حيث ان الموضوع بسيط ويمكن استخدام نفس الكود الذي وضعه الاخ (أحمد الحربي) وهو كود احترافي لكنه لا ينفذ تلقائيا

مع تحياتي

احمد

أحمد فخري الهياجنة

أخصائي تقنية المعلومات

#12

شكراً أخي ahayajneh

نعم لا بد من التذكير التلقائي لا اليدوي .. وأنا في أول الأمر وضعته في حدث عند الفتح لنموذج يعمل عند فتح البرنامج ..

ولكن إضافتك أيضاً جميلة باستخدام عدد الوقت

شكراً لك .. وشكراً لك يا biskra على المواقع

#13

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

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

#14

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

Private Sub Form_Open (Cancel As Integer)

cmdOK_Click

End Sub

حيث أن CmdOK هو اٍسم الاٍجراء لزر الأمر , و يتنتج عن هذا الكود هو أنه عند فتح النموذج الموجود عليه زر الأمر CmdOK ينتج عنه ضغط تلقائي على هذا الزر .

و هناك طريقة ثانية لكتابة الكود و لكن من الأحسن اٍستعمال الطريقة المذكورة أعلاه لأن النتيجة مضمونة أكثر, و لكن للفائدة أشرحها:

عندما ننشىء زر أمر و نضع له الكود الخاص عند النقر عليه أي Onclic نضيف له الكود التالي في نهاية الاٍجراء الخاص بفتح النموذج الموجود عليه الزر

DoCmd.GoToControl "CmdOK"

SendKeys "{ENTER}", False

طبعا CmdOK هو اٍسم اٍجراء الزر .

أرجو من الأساتذة التصحيح اٍن كان في الشرح أخطاء, مع الاعتذار المسبق عن ذلك.

#15

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

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

المطلوب اتمنى ممن لديه مثال على هذه الطريقه أو شرح لها ان لايبخل علينا بها مع بالغ الامتنان للجميع .

sob7ank.jpg

فرض على الناس أن يتوبوا**** لكن ترك الذنوب أوجب

والصبر في النائبات صعب**** لكن فوات الثواب أصعب

والدهر في صرفه عجيب**** لكن غفلة الناس أعجب

وكل ما قد يجي قريب****والموت للعبد من ذاك أقرب

#16

أخي علالي السلام عليك.

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

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

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

db24.rar

#17

شكرا لك اخي العزيز biskra . وكل عام وانت والجميع بالف خير .

المثال جميل نعم . سوف اقوم بتجربته وابلاغك بالنتيجه

sob7ank.jpg

فرض على الناس أن يتوبوا**** لكن ترك الذنوب أوجب

والصبر في النائبات صعب**** لكن فوات الثواب أصعب

والدهر في صرفه عجيب**** لكن غفلة الناس أعجب

وكل ما قد يجي قريب****والموت للعبد من ذاك أقرب

هذا الموضوع مغلق.

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

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

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

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

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