بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
-
Posts
13448 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
280
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ابوخليل
-
السلام عليكم قمت بحفظ ايقونة في حقل مرفقات (Attachment) في جدول من اجل استخدامها في اماكن متعددة في البرنامج ذهبت الى هذا النهج من اجل تبقى الايقونة غير ظاهرة .. بحيث لا يمكن حذفها او التعديل عليها واستخدمت هذا الكود لكنه لم يعمل Function RelinkIsIco() As String Dim rs As DAO.Recordset Dim ImagePath As String Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblEnDc") ImagePath = rs!progIcon.Value RelinkIsIco = ImagePath rs.Close Set rs = Nothing End Function Private Sub cmdShar_Click() Me.img1.Picture = RelinkIsIco() End Sub آمل التصحيح ادناه مثال للتجربة Database1.rar
-
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
بارك الله فيكم وينكم من زمان هذا الموضوع طرحته اليوم بعد وصولي لنتيجة صحيحة مرضية بل محكمة هذا الوصول سبقه موضوع تجاوزت المشاركات فيه الــــ 100 لن اتنازل عن اكوادي التي صنعتها .. مادام العمل سليم .. لاني تعبت من التجربة والتكرار والبحث عن الطريقة السليمة ..... ولكن ستبقى هذه الأكواد التي تفضلتم بها مرجعا مهما لي ولغيري لمن اراد بناء برنامج حضور كي يستنير بها حفظكم الله من كل سوء وزادكم علما ورفعة -
اجدت وأفدت مع ان ما قدمه اخونا Debug Ace رائع لا يقاوم .. لوجود ميزات متقدمة الا انني يبدو سأعتمد نسختك هذه لعدة اسباب : - تحقق عرض الخطوط العربية فقط من وندوز - التعامل مع التقرير مباشرة وحفظ آخر نسخة لتصبح دائمة - جلب الخلفية مفتوح وغير مقيد كل هذه قريبة من عملي تقريبا .. مع بعض التعديلات اللازمة جزاكم الله خيرا .. جميعا واجزل لكم الثواب
-
جزيت خيرا اخي موسى .. لم اجربه ويبدوا انه برنامج رائع متكامل ولكن حاجتي في فورم ارفقه في برنامجي . اقصد الاستغناء عن جدول الخطوط .. وجلب الخطوط العربية مباشرة من مجلد الخطوط في وندوز لأن المستخدم يملك خطوطا خاصه في جهازه
-
رائع جدا .. فوق المتوقع استفسار حول اختيار نوع الخط .. هل يمكن عرض الخطوط العربية فقط لأن قائمة الخطوط كثيرة جدا جدا .. وتأخذ وقتا كثيرا لايجاد الخط المناسب هذه الجزئية .. انا لدي شهادة ثابتة كما شاهدتها في الصورة بل صورتان واحدة للبنين والأخرى للبنات .. يتم عرضها حسب الجنس هذه الجديدة المرنة ستبقى واحدة ايضا ثابتة في التقرير ... لها زر للعرض بجانب الشهادة الثابتة الأولى .. وتتغير بياناتها تبعا للتحديث عليها واسفل منهما : زر لصنع هذه الشهادة المرنة وهو استعراض عملك هذا وتصميم الشهادة حسب الرغبة وحفظها
-
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
بارك الله فيك .. اجدت وأفدت المهم هو توقيع فوكش .. جميلة هذه التوقيعات .. تذكرنا ببعض في محفوظاتي اعمال كثيرة استفيد منها عند الحاجة فابحث عنها واوظفها غالب هذه الاعمال لإخوة لنا هنا .. ولكن لا يوجد عليها علامات تذكرنا بهم .. اقل حق من حقوقهم ان ندعو لهم في ظهر الغيب -
الله .. الله .. الله .. ما هذا !! لا يهمني العمل الآن .. يكفيني النص المكتوب .. اخجلتني يارجل .. لحظة تعال ... معرف جديد + خبرة فائقة .. وخطاب يمثل المنتدى .. اني لأشم ريح يوسف
-
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
نسيت كلمات المرور للدخول عام = 1 مدير= 2 -
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
تمام اليك المرفق النهائي بعد معالجة ثغرة توقيع الانصراف من الغد آمل ان تجري التحسينات المقترحة .. دمت ذخرا لاخوانك ومحبيك ChkInOut_CNet2.rar -
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
نعم الثغرة موجودة .. يجب معالجتها لذا حذفت المرفق .. من اجل التعديل والاصلاح -
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
بالنسبة للتوقيع فهو مفتوح الاول حضور والثاني خروج .. ويمكن تكرار الدخول والخروج عدة مرات في الفترة الواحدة اما خارج الوقت المتاح للفترة فلا يمكن التوقيع بقي شيء لم اتأكد منه هل سيوقع انصراف في الغد لو لم يتمكن من التوقيع اليوم بسبب خروج الوقت .. هذه ثغرة يجب ان اتأكد منها .. لأنه يجب ان يبقى حقل الانصراف فارغا ويسجل له دخول جديد -
حضور وانصراف الموظفين .. فترات محكمة خلال يوم .. وتمتد لليوم التالي
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
نعم .. تماما السر في هذه الدالة التي حلت المشكلة الدالة تتحدث وليست بحاجة الى شرح .. حيث تفحص الوقت الحالي هل هو في مساء اليوم ام لا Dim startTime As Date Dim endTime As Date Dim currentTime As Date Dim i As Integer startTime = TimeValue("12:01:00") endTime = TimeValue("23:59:59") currentTime = Time() If currentTime > startTime And currentTime < endTime Then i = 1 Else i = 2 End If CheckTimeBetween = i وكان السبب الرئيس في المشكلة هو دالة توقيت المساء سواء الحضور او الانصراف لأنه عند دخول اليوم التالي يعتبر الدخول المسائي ضمن مساء الغد لهذا تم تعديل دالتي التوقيت المسائي وفقا لهذه الدالة اعلاه انظروا كيف تتعامل الدالتان ادناه الشرط يقول : اذا الوقت الحالي داخل في شرط الدالة وصحيح .. اي =1 فالتاريخ تاريخ اليوم وإلا فإن التاريخ هو تاريخ الأمس Public Function funFirstTimeB_in() Dim z As Integer Dim i As Date, ii As Date, jj As Date z = Nz(DLookup("free2_in", "tblTimeCtrl"), 0) If CheckTimeBetween() = 1 Then i = DLookup("fatrah2_In", "tblTimeCtrl") & " " & Date ii = DateAdd("n", -z, i) Else jj = DateAdd("d", -1, Date) i = DLookup("fatrah2_In", "tblTimeCtrl") & " " & jj ii = DateAdd("n", -z, i) End If funFirstTimeB_in = ii End Function Public Function funLastTimeB_Out() Dim z As Integer Dim x As Integer, xx As Integer Dim i As Date, ii As Date, jj As Date z = Nz(DLookup("free2_out", "tblTimeCtrl"), 0) x = Nz(DLookup("hours_Work2", "tblTimeCtrl"), 0) xx = (x * 60) + z If CheckTimeBetween() = 1 Then i = DLookup("fatrah2_In", "tblTimeCtrl") & " " & Date ii = DateAdd("n", xx, i) Else jj = DateAdd("d", -1, Date) i = DLookup("fatrah2_In", "tblTimeCtrl") & " " & jj ii = DateAdd("n", xx, i) End If funLastTimeB_Out = ii End Function للتجربة والتأكد ان كل شيء تمام جعلت عند التوقيع في الفترتين كليهما .. تظهر رسالتان الاولى لبداية التوقيع والثانية لنهايته اذا الامور تمام يمكنك تعطيل وايقاف هذه الرسائل بداية التوقيع = وقت الدخول الرسمي - الوقت المتاح قبل نهاية التوقيع = وقت الدخول الرسمي + عدد ساعات العمل + الوقت المتاح بعد جعلت الاوقات المتاحة بالدقائق من اجل دقة الاختيار -
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
ابشرك وجدتها .. وتمكنت منه بفضل الله ولكن المشاركات هنا تجاوزت 100 مشاركة اساس الموضوع كان لحضور فترة واحدة الآن اتسع الموضوع .. فأود ان افرد عملي النهائي هذا بعنوان يخصه .. وليس بعيدا عنه الباحث سوف يتوه هنا بين المشاركات .. ولكن ستبقى ذات فائدة لتنوع الطرق فيها والمناقشات . تفضلوا من هنا -
بل اعجبني المشهد .. سلمت اناملك يا سلام .. زاد حماسي .. احب المفاجآت في مثل هذه المواضيع
-
السلام عليكم في المرفق شهادة شكر .. تظهر عندي في برنامجي الاساسي بشكل رائع مع البيانات اللازمة هذه الشهادة هي عبارة عن صورة مكتوب عليها عبارة الشكر المعتادة .. ويتخللها حقول مصدرها الجدول مثل اسم الطالب والسنة والفصل الدراسي واسم المعلمة والمديرة وايضا صور لشعارات خاصة . الى هنا وكل شيء تمام 100% افكر فيما لو تم نشر البرنامج .. فالناس مختلفون في الذوق ووجهات النظر .. فيمكن بعضهم يريد تغيير الخلفية والآخر يريد تغيير النص الثابت في الصورة . لذا طرحت موضوعي هذا اريد ان اجعل الشهادة مرنة .. امكن المستخدم من تغيير عبارة الشكر .. وتغيير الخلفية الخلفية مقدور عليها فقد وضعت بجانب قاعدة البيانات الصورة نفسها مفرغة . ويمكنه تغييرها بما يشاء عنوان الشهادة .. والعبارات اللاحقة : اريد المستخدم ان يكتبها من خلال فورم خاص بشرط امكانية التحكم بنوع الخط ومقاسه ولونه . هل يمكن ذلك على فرضية تحويل الملف الى accde dbs1.rar
-
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
قبل الشروع في العمل يجب ان نتفق على طريقة ونظام احتساب ساعات العمل : اولا : الطريقة التقليدية : يتم احتساب الوقت من : توقيت الحضور الرسمي وحتى توقيت الخروج الرسمي بمعنى اذا ساعات العمل المعتبرة 8 ساعات وجاء متأخرا عن توقيت الحضور بــ 20 دقيقة وخرج بتوقيت الخروج تماما او بعد التوقيت بــ 20 او 30 دقيقة فلن تنفعه هذه الزيادة بتعويض التأخر في الحضور .. وسيحسب البرنامج له حضور اليوم = 7:40 اي بنقص 20 دقيقة علما انه يوجد مرونة في تأخر الحضور أو الخروج قبل الوقت النظامي في معظم الانظمة .. بحيث يتم التجاوز عن دقائق يحددها المستخدم للبرنامج ثانيا : الطريقة المرنة الحديثة المفتوحة : وهي مطالبة العامل او الموظف بساعات معلومة ومحددة يكون متواجدا فيها في مكان العمل .. وهي ليست مفتوحة تماما كما يتصور .. ولكن المرونة في وقت الدخول ووقت الخروج فالمرونة في اتساع وقت التواجد من 8 ساعات الى 9 او 10 ساعات مثلا ( التحديد برمجي يتحكم فيه المستخدم ) فيمكنه الحضور بعد الموعد بربع ساعة ويعوضها في الخروج بأن يبقى ربع ساعة ، وما زاد يمكن اعتباره وقتا اضافيا -
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
اذا خصيصة الموظف التواجد في فترتين البرنامج يفهم هذا وعند توقيع اثبات التواجد .. يقوم البرنامج بالنيابة عنه بتوقيع الخروج عن الفترة السابقة الحساب في التقرير : سيعتبر حسب الفترة الواحدة/ اليوم //// .. وتضم الفترتين اذا كانتا خلال يوم واحد على اعتبار الدخول والخروج المتكرر حال الاستئذان المؤقت -
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
ما المشكلة في تعدد الفترات .. اذا كان بالامكان للموظف ان ان يعمل في اكثر من فترة مثلها مثل الحاصل على الآرض الآن ويعمل به في المطارات والشركات التي تستلزم فترة العمل اكثر من يوم احيانا الفترة تمتد الى 12 ساعة في هذه الشركات نظام اثبات التواجد بعد عدد ساعات محددة يذهب الموظف الموجود والحاضر فعلا ويوقع اثبات تواجد اثبات التواجد هذا في النظام البرمجي هو عبارة عن بداية فترة جديدة -
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
نعم هذا هو المفترض في جميع الانظمة المتعارف عليها .. التوقيع الأول = حضور سواء جاء اول الوقت او آخره الأصل ان البرنامج يجب ان يعرفهم واحدا واحدا ، ويعرف اوقاتهم المتاح لهم التوقيع فيها . انا صنعت ذلك باحكام .. ولكن طلب الاخ محمد فيما لو تجاوز الوقت اليوم الحالي الى ما بعد منتصف الليل ودخول يوم جديد هنا المعيار الاساسي يكون حجر عثرة ويجب ازالته والبحث عن بديل .. وهنا جاءت الثغرات ...................... بعد كل المحاولات اتضح لي انه من اجل الضبط المحكم ( ما يخرش المية ) يجب اضافة فترة جديدة تخص اليوم التالي هنا يصبح لدينا ثلاث فترات على الأقل .. ويمكن زيادة عدد الفترات عن 3 لمن اراد .. وكل ذلك خلال 24 ساعة تبدأ من الساعة 12:01 صباحا وتنتهي في 11:59 مساء .. حسب تقسيم كل فترة بداية/نهاية ان وافقني على هذا المقترح سوف اقوم باعداده سواء على طريقة تصميم حقلين في الجدول حضور/انصراف //// او طريقة الحقل الواحد والمعرف -
نعم .. تمام .. جزاك الله خيرا وبيني وبينك 🙃 ولا تخبر احد .. الله المستعان ..اصلا الجهاز الثاني لا يوجد عليه طابعة اسهبت وأجدت في الشرح والتفصيل .. جزاك الله خيرا
-
حضور وانصراف الموظفين .. بسيط مختصر .. وجاهز للعمل
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
وضعتها كتأسيس لمن يريد تطبيقها .. وهو غير ملزم اتركه دعه ينسى .. هو صاحب الشأن وهو ادرى بمصلحته النظام الجديد مختلف عما سبق تماما .. وهو نظام عالمي شائع التوقيع الاول حضور والثاني خروج .. حتى لو وقع 100 مرة في اليوم في النهاية سيتم الحساب بجمع ما بين التوقيعين الثغرات كثيرة في جميع الانظمة .. ولكن المهم هو اثبات وقت التوقيع لتلافي جميع الثغرات يجب ان يكون هناك شخص مسؤول عن مراقبة عمليات التوقيع الاشكالية التي تواجه الضبط البرمجي المحكم هو دخول يوم جديد .. اتمنى ان تفهم هذه النقطة البعض يستخدم فترة ثالثة لتلافي الثغرة تبدأ من الساعة 12:01 ليلا -
السلام عليكم عندي كمبيوترين على احد الاجهزة صممت تقرير (شهادة شكر ) وجعلت خلفيته صورة وفي التفاصيل بعض الحقول التقرير ممتاز حتى اني جعلت جميع الهوامش = صفر .. من اجل تمدد الصورة على كامل ورقة الـــ A4 عندما نقلت البرنامج الى الجهاز الآخر تغير تصميم التقرير واختلف تمركز الصورة واختلت اماكن الحقول وظهرت الهوامش كبيرة رغم انها صفر الجهاز الاول win10 والاخر win7 ان كان احد من الاخوة مر بهذه التجربة يفيدني فيها .. جزيتم خيرا
-
عجبا .. مشاركات تقارب الألف ولا تكلف نفسك اختيار عنوان مناسب لموضوعك !!!
-
عجيب .. عجيب يبدو انك عدلت على شيء ما اعدت التجربة .. والنتيجة كانت مذهلة التعديلات التي اجراها : تنظيم الكود .. بحيث جعل جميع الاعلانات عن المتغيرات في الأعلى بدل شرط الحقل النصي في الدوال بالمتغير وكذلك في جملة sql استبدل الدالة بالمتغير .. عفريت برمجي اضاف لي متغير اسم الموظف غفلت عن نقله من العمل السابق ... هذه الاضافة لا تخطر على بال المحترفين الا بعد عناء اغلاق السجلات عند نهاية كل شرط .. الحقيقة هذه الحركة تحفة هذه صورة من الخيارات التي استخدمتها : وهذا الكود الاصلي : Private Sub id_AfterUpdate() EmpUserid = id Dim mylevl As Boolean mylevl = Nz(DLookup("Emp_user", "tblEmpNames", "Emp_user='" & Me.id & "'"), 0) EmpFatrah = Nz(DLookup("fatrah", "tblEmpNames", "Emp_user='" & Me.id & "'"), 0) If mylevl = False Then Beep Me.LabelH.Caption = "خطأ!! .. الادخال غير صحيح" Me.TimerInterval = 3000 id = "" id.SetFocus Exit Sub End If Dim rs As Recordset Dim strSql As String strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _ "FROM tblCheckINOut " & vbCrLf & _ "WHERE (((tblCheckINOut.EmpUser)=funEmpUserid())) " & vbCrLf & _ "ORDER BY tblCheckINOut.id DESC;" Set rs = CurrentDb.OpenRecordset(strSql) If rs.RecordCount = 0 Then rs.AddNew rs!EmpUser = id rs!chekInOut = Now() rs!chkio = "I" rs!ftra_id = EmpFatrah Me.txtnm = empName LabelH.Caption = "حضور" Me.Requery Me.TimerInterval = 3000 Me.id = "" Me.id.SetFocus rs.Update Exit Sub End If Dim waitTime As Integer Dim AdTim As Date waitTime = Nz(DLookup("waitBtween", "tblTimeCtrl"), 0) AdTim = DateAdd("n", waitTime, rs!chekInOut) If Now() < AdTim Then Me.id.SetFocus Beep Me.LabelH.Caption = "توقيع مكرر !! انتظر قليلا ..." id = "" Me.TimerInterval = 3000 id.SetFocus Exit Sub Else If rs!chkio = "I" Then rs.AddNew rs!EmpUser = EmpUserid rs!chekInOut = Now() rs!chkio = "O" rs!ftra_id = EmpFatrah Me.txtnm = empName LabelH.Caption = "انصراف" Me.Requery Me.id = "" Me.TimerInterval = 3000 Me.id.SetFocus rs.Update Exit Sub ElseIf rs!chkio = "O" Then rs.AddNew rs!EmpUser = EmpUserid rs!chekInOut = Now() rs!chkio = "I" rs!ftra_id = EmpFatrah Me.txtnm = empName LabelH.Caption = "حضور" Me.Requery Me.TimerInterval = 3000 Me.id = "" Me.id.SetFocus rs.Update Exit Sub End If End If End Sub وهذه هي النتيجة الرائعة : Private Sub id_AfterUpdate() Dim EmpUserid As Variant Dim mylevl As Boolean Dim EmpFatrah As Variant Dim rs As DAO.Recordset Dim strSql As String Dim waitTime As Integer Dim AdTim As Date Dim empName As String ' Declare empName EmpUserid = Me.id ' Corrected logic for mylevl to check for user existence mylevl = Not IsNull(DLookup("Emp_user", "tblEmpNames", "Emp_user='" & EmpUserid & "'")) EmpFatrah = Nz(DLookup("fatrah", "tblEmpNames", "Emp_user='" & EmpUserid & "'"), 0) If mylevl = False Then Beep Me.LabelH.Caption = "خطأ!! .. الادخال غير صحيح" Me.TimerInterval = 3000 Me.id = "" Me.id.SetFocus Exit Sub End If ' Lookup empName once after confirming user existence empName = Nz(DLookup("Emp_Name", "tblEmpNames", "Emp_user='" & EmpUserid & "'"), "") strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _ "FROM tblCheckINOut " & vbCrLf & _ "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) " & vbCrLf & _ "ORDER BY tblCheckINOut.id DESC;" Set rs = CurrentDb.OpenRecordset(strSql) If rs.RecordCount = 0 Then rs.AddNew rs!EmpUser = EmpUserid rs!chekInOut = Now() rs!chkio = "I" rs!ftra_id = EmpFatrah Me.txtnm = empName Me.LabelH.Caption = "حضور" Me.Requery Me.TimerInterval = 3000 Me.id = "" Me.id.SetFocus rs.Update rs.Close Set rs = Nothing Exit Sub End If waitTime = Nz(DLookup("waitBtween", "tblTimeCtrl"), 0) AdTim = DateAdd("n", waitTime, rs!chekInOut) If Now() < AdTim Then Me.id.SetFocus Beep Me.LabelH.Caption = "توقيع مكرر !! انتظر قليلا ..." Me.id = "" Me.TimerInterval = 3000 Me.id.SetFocus rs.Close Set rs = Nothing Exit Sub Else If rs!chkio = "I" Then rs.AddNew rs!EmpUser = EmpUserid rs!chekInOut = Now() rs!chkio = "O" rs!ftra_id = EmpFatrah Me.txtnm = empName Me.LabelH.Caption = "انصراف" Me.Requery Me.id = "" Me.TimerInterval = 3000 Me.id.SetFocus rs.Update rs.Close Set rs = Nothing Exit Sub ElseIf rs!chkio = "O" Then rs.AddNew rs!EmpUser = EmpUserid rs!chekInOut = Now() rs!chkio = "I" rs!ftra_id = EmpFatrah Me.txtnm = empName Me.LabelH.Caption = "حضور" Me.Requery Me.TimerInterval = 3000 Me.id = "" Me.id.SetFocus rs.Update rs.Close Set rs = Nothing Exit Sub End If End If End Sub صحيح هو اضاف لي هذا المتغير : Dim EmpUserid As Variant ولكن هذا المتغير تم الاعلان عنه في الوحدة النمطية كمتغير عام وانا لا الومه لانه لا يعلم وليس له الا الظاهر ☺️