اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

Foksh

أوفيسنا
  • Posts

    3997
  • تاريخ الانضمام

  • Days Won

    167

كل منشورات العضو Foksh

  1. أهلاً أخي الكريم .. يبدو انك لم تأخذ بنصيحة معلمي الفاضل أبو خليل , ثم انك لم ترسل المرفق الذي تقول عنه يحتوي النموذجين !!!
  2. حبيبي وصديقي جو ، انا لم أقم سوى بحذف التسمية التوضيحية للتقرير في آخر مرفق ارسلته لك لا اعلم عن ماذا أو اي جملة شرطية تتحدث . لأنني حقيقة لم أطلع على أي كوووود داخل ملفك سوى الجزء الذي تم التعليق عليه سابقاً !!!
  3. أولا ، وعليكم السلام ورحمة الله وبركاته .. ثانياً صدقاً لم أفهم أي شيء من الكلام ، وسبق كثيراً أن تم تنبيهكم إلى ضرورة الإعتناء باللغة التي تكتبون فيها مشاركاتكم وردودكم أخي الكريم .. ثالثاً بعيداً عن النقطة السابقة ، بعد تحميل المرفق والسير على الخطوات ، أرفقت فيديو لتجربتي والنتيجة المبدئية لها .
  4. وعليكم السلام ورحمة الله وبركاته .. أولاً هدية طيبة ومقبولة منك أخي الكريم ، حملت الملف لألقي نظرة عليه وأستمتع بهذا العمل الجميل ، ولكن حظي وفرحتي لم يكتملان
  5. وعليكم السلام ورحمة الله وبركاته .. اسمح لي بسؤال أخي الكريم ، هل الجزء الواحد كما في الصورة لليوم الواحد أم ماذا ؟؟ إن كان كذلك ، فأنت لست بحاجة لأن يخبرك أي شخص أن هذا السلوك غير منطقي وغير صحيح برمجياً . خلاف ذلك ننتظر منك التوضيح للمطلوب
  6. 70% من التحديث قد تم بنجاح .. باقي القليل 😉
  7. بسيطة أخي جو .. احذف التسمية من خصائص التقرير ( Caption ) فقط وسيعمل معك بدون مشاكل تفضل ملفك بعد التعديل :- LAb (1).zip
  8. وعليكم السلام ورحمة الله تعالى وبركاته 🤗 كإجابة على السؤال المهم في طلبك ، إن كان يمكن تحقيقه من خلال الجدول نفسه ، فإجابتي لا . ما لم يكن هناك رأي آخر . فمثلاً لا تستطيع ادخال قيمة افتراضية لحقل ما داخل جدول من خلال معادلة أو جملة شرطية . كمثال:- =IIf([loifondamontale]="المهندسين", 1, 0) ولا أحاول إحباطك ، فيمكن تحقيق الهدف بطرق مختلفة . منها استخدام الجمل الشرطية المعقدة داخل حدث بعد التحديث لمربع النص او الكومبوبوكس loifondamontale كمثال للتوضيح بالافتراض ان لديك نموذج لإدخال البيانات في هذا الجدول :- Private Sub loifondamontale_AfterUpdate() Dim typ As String typ = Me.loifondamontale If typ = "مهندسين" Then Me.evalu_moubadara_chaksia = 5 Me.evalu_itkan_elamel = 4 Me.evalu_nachatat_tarbia = 3 Me.evalu_absence = 0 Me.evalu_retard = 1 Me.evalu_tatwir = 2 Me.evalu_absence_prof = 0 Me.evalu_retard_prof = 0 Me.evalu_nadawat_prof = 0 Me.evalu_nachatat_tarbia_prof = 0 Me.evalu_mobadara_prof = 0 ElseIf typ = "معلمين" Then Me.evalu_absence_prof = 1 Me.evalu_retard_prof = 2 Me.evalu_nadawat_prof = 3 Me.evalu_nachatat_tarbia_prof = 4 Me.evalu_mobadara_prof = 5 Me.evalu_moubadara_chaksia = 0 Me.evalu_itkan_elamel = 0 Me.evalu_nachatat_tarbia = 0 Me.evalu_absence = 0 Me.evalu_retard = 0 Me.evalu_tatwir = 0 Else Me.evalu_moubadara_chaksia = 0 Me.evalu_itkan_elamel = 0 Me.evalu_nachatat_tarbia = 0 Me.evalu_absence = 0 Me.evalu_retard = 0 Me.evalu_tatwir = 0 Me.evalu_absence_prof = 0 Me.evalu_retard_prof = 0 Me.evalu_nadawat_prof = 0 Me.evalu_nachatat_tarbia_prof = 0 Me.evalu_mobadara_prof = 0 End If End Sub هذا كإقتراح أول يعتمد على الجملة الشرطية المتعددة ( أو حتى باستخدام Case ) وكلاهما يؤدي الغرض نفسه . أما عن وجود حل آخر وهو استخدام جدول للقيم الإفتراضية التي تريدها ولنفترض انه سيتكون من 3 حقول ( نوع الموظف ، اسم الحقل ، القيمة الإفتراضية ) - أسماء مجازية - وتملأ القيم مرة واحدة ( وقد يكون لها مستقبلاً نموذج لتعديلها حسب رغبتك ) . ثم وبنفس النمط - في حدث بعد التحديث لمربع النص نفسه أو الكومبوبوكس - نستخدم أسلوب كمثال :- Private Sub loifondamontale_AfterUpdate() Dim rs As DAO.Recordset Dim fldName As String, defVal As Variant Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_DefaultValues WHERE نوع_الموظف = '" & Me.loifondamontale & "'") Do While Not rs.EOF fldName = rs!اسم_الحقل defVal = rs!القيمة_الافتراضية Me(fldName) = defVal rs.MoveNext Loop rs.Close Set rs = Nothing End Sub 💡 وفي هذا الحل من الضروري أن تكون أسماء مربعات النص ( في النموذج ) مطابقة تماماً لأسماء الحقول في الجدول . وقد يكون هناك حلول اخرى تعتمد على الاستعلامات تحديث ، ولكنك هنا ستحتاج شرطاً لتحديد السجل الحالي برقم الموظف أو id الحقل ... إلخ. جرب ولن تخسر شيء 😇.
  9. استخدم تحديث النموذج Docmd.Requery بعد رسالة تأكيد نجاح الاستيراد
  10. وعليكم السلام ورحمة الله وبركاته.. للإستيراد من اكسل الى اكسيس ، راجع هذا الموضوع:- أما التصدير من اكسيس لإكسل ، فأعتقد أن الكثير من المواضيع في المنتدى تحدثت عنه ، استخدم خاصية البحث ، علك تجد ما يناسبك. *أتابع من الجوال*
  11. مداخلة .. اجعل خاصية Modal = Yes للنموذج والتقرير أولاً ثانياً في زر الطباعة الموجود في النموذج Main وبعد هذا السطر ElseIf .ResultMain = 7 Then DoCmd.Close acReport, "youssef" قم بإضافة السطر :- DoCmd.OpenForm "main", acNormal ليصبح هذا الجزء كاملاً :- ElseIf .ResultMain = 7 Then DoCmd.Close acReport, "youssef" DoCmd.OpenForm "main", acNormal End If
  12. وعليكم السلام ورحمة الله وبركاته .. تأملت منك توضيح كلمة الفرق هنا = ؟؟؟
  13. في الرابط التالي ، سلسلة من دروس الأستاذ محمود عبدالغفار ، متأكد أنها ستقدم لك الإجابات الشافية بشكل مرئي .. https://www.youtube.com/hashtag/mahmoudtrainingmicrosoftvba_dao والدرس الأول أعتقد جواب لسؤالك
  14. وعليكم السلام ورحمة الله وبركاته .. فكرة جميلة ولا بأس بها .. واسمح لي بمداخلات في نقاطي التالية :- إذا كانت الفكرة تعتمد على عدد سجلات محدد ، فهذا يعني انك ستكرر إستدعاء الأكواد في جميع نماذج الإدخال ، صحيح ؟ إذا قام المستخدم ( العميل ) بشراء نسخة كاملة منك ، وتم عمل فورمات وتنزيل نسخة ويندوز جديدة ، فهل سيتأثر التفعيل بهذه الحالة ؟؟ هل رمز التفعيل الذي في مثالك أو غيره ثابت ، أم يختلف من نسخة الى نسخة أخرى ؟؟؟ هل يتم تشفير مفتاح وبيانات التفعيل في الريجستري ؟؟؟؟ هي فقط نقاط خطرت ببالي ، لأني اعتمد في مشاريعي على فكرة مشابهة ، وما زالت قي التطوير بجميع الصغرات التي أواجهها
  15. وعليكم السلام ورحمة الله وبركاته .. حياكم الله أخي أسعد ، الأداة منفصلة بذاتها للآن .. تستطيع استدعائها وفتحها من خلال زر مثلاً بأحد الخيارين التاليين :- On Error GoTo ErrorHandler Dim dbPath As String dbPath = CurrentProject.Path & "\PDF Converter - 64.accde" Application.FollowHyperlink dbPath Exit Sub ErrorHandler: MsgBox "حدث خطأ أثناء محاولة فتح قاعدة البيانات" & vbCrLf & Err.Description, _ vbExclamation + vbMsgBoxRight, "خطأ" أو استخدام الكود التالي :- On Error GoTo ErrorHandler Dim dbPath As String Dim ws As Object dbPath = CurrentProject.Path & "\PDF Converter - 64.accde" If Dir(dbPath) = "" Then MsgBox "ملف قاعدة البيانات غير موجود", vbExclamation Exit Sub End If Set ws = CreateObject("WScript.Shell") ws.Run Chr(34) & dbPath & Chr(34) Set ws = Nothing Exit Sub ErrorHandler: MsgBox "حدث خطأ أثناء فتح قاعدة البيانات" & Err.Description, vbExclamation + vbMsgBoxRight, "خطأ" Set ws = Nothing مع ضرورة تغيير اسم قاعدة البيانات في الكود ، وحيث أن مسار المشروع سيكون بجانب قاعدة بياناتك . وكلاهما يعملان ولكن الكود الأول قد ينتج عنه رسالة التنبيه هذه على سبيل المثال :- والسبب في بعض الأجهزة ونسخ الأوفيس عدم تعيين موقع قاعدة البيانات كمصدر موثوق ، لذا في الكود الثاني سيتجاوز هذا التحذير فقط لا غير ..
  16. أسعدكم الله أخي @Hamtoooo ، وبإذن الله قريباً جداً مميزات وتحسينات وإضافات جديدة ترقى بكم وبهذا المنتدى .
  17. في التحديث الجديد تم إضافة ميزات وتحسينات كثيرة إن شاء الله 😇 . قريباً بإذن الله
  18. وعليكم السلام ورحمة الله وبركاته.. في زر *اعرض هذا الملف* ، ثم الزر "حمل هذا الملف*
  19. وعليكم السلام ورحمة الله وبركاته .. أولاً أخي الكريم ما علاقة النموذج الفرعي في حدث القرير !!!!! حاول ان يكون العنوان ذا صلة بالموضوع وأن يكون واضحاً . راجع هذا الموضوع ، سيفيدك كثيراً . فهو يحتوي ثمرة خبرة الأساتذة في هذا الموضوع
  20. تم طرح نفس المشكلة تقريباً في موضوع قديم هنا :- وللأسف كانت فكرتك مبنية على أنك لا تريد أن يتم الغاء التنشيط أو الرول باك .. صحيح !!
  21. هذه بسيطة إن شاء الله ,, لكن تعليقي على هذه :- حيث ان عند تحويل الأوقات الى دقائق :- 300 + 360 + 300 + 300 + 389 + 300 + 375 + 366 + 270 + 380 + 300 + 380 + 375 + 270 + 330 + 300 + 375 + 375 + 300 + 375 + 300 = 7020 دقيقة وعند التحويل بقسمة المجموع على 60 7020 ÷ 60 = 117 ساعة إذاً الناتج يكون 117 ساعة .. أما في طلبك الإضافي :- SELECT Tbl_Salary.Mmonth, Format(Sum(DateDiff("n",[Start_Day],[End_Day]))\60,"00") & ":" & Format(Sum(DateDiff("n",[Start_Day],[End_Day])) Mod 60,"00") AS Total_Work_Time, Count(Tbl_Salary.ID) AS Work_Days, Round(Sum(DateDiff("n",[Start_Day],[End_Day]))/300,2) AS Actual_Work_Days FROM Tbl_Salary GROUP BY Tbl_Salary.Mmonth ORDER BY Min(Tbl_Salary.DDate); Mmonth Total_Work_Time Work_Days Actual_Work_Days May 153:30 28 30.7 June 117:00 21 23.4 July 139:28 25 27.89 August 133:35 23 26.72
  22. وعليكم السلام ورحمة الله وبركاته .. استخدم هذا الاستعلام :- SELECT Tbl_Salary.Mmonth, Format(Sum(DateDiff("n", [Start_Day], [End_Day]))\60,"00") & ":" & Format(Sum(DateDiff("n", [Start_Day], [End_Day])) Mod 60,"00") AS Total_Work_Time, Count(Tbl_Salary.ID) AS Work_Days FROM Tbl_Salary GROUP BY Tbl_Salary.Mmonth ORDER BY Min(Tbl_Salary.DDate); سيعرض لك اسم الشهر ، ومجموع ساعات العمل فيه ، وعدد أيام العمل أيضاً Que_Foksh Mmonth Total_Work_Time Work_Days May 153:30 28 June 117:00 21 July 139:28 25 August 133:35 23 ملفك بعد التعديل :- JO_TIME.zip
  23. وعليكم السلام ورحمة الله وبركاته .. هذه الرسالة تعني ان هناك دالة أو وظيفة أو ماكرو يحمل نفس الإسم : Kh_Date_Gender_Province قد يكون على سبيل المثال اسم الدالة بأحد هذه الخيارات :- Sub Kh_Date_Gender_Province() أو Public Function Kh_Date_Gender_Province تحقق من أن اسم الدالة غير مكرر في نفس الأكواد
  24. وعليكم السلام ورحمة الله وبركاته ,, حل مشكلتك إن شاء الله بسيط . في المديول اللي في مشروعك الرئيسي ، انقل الدالة التالية :- Public Function RowNum(frm As Form) As Variant On Error GoTo Err_RowNum With frm.RecordsetClone .Bookmark = frm.Bookmark RowNum = .AbsolutePosition + 1 End With Exit_RowNum: Exit Function Err_RowNum: If Err.Number <> 3021& Then Debug.Print "RowNum() error " & Err.Number & " - " & Err.Description End If RowNum = Null Resume Exit_RowNum End Function الآن في النموذج استدعي الدالة التالية في مربع النص الذي تريد الترقيم فيه بدلاً من القديمة :- =RowNum([Form]) وأخبرنا بالنتيجة
×
×
  • اضف...

Important Information