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

Foksh

أوفيسنا
  • Posts

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

  • تاريخ اخر زياره

  • Days Won

    181

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

  1. حياكم الله أخي الكريم ، ويسعدني مرورك اللطيف وإن شاء الله تحديث جديد قادم ، لكن الأشغال أخرتني شوية
  2. اقتراح بأن يتم تثبيت الموضوع وأغلاقه . بحيث يتم فيه فقط عرض هذه اللقاء دون فتح الباب للحوار
  3. فقط قم بإزالة الجزء من Or لغاية 0 If IsNull(rs!evalu_moubadara_chaksia) Then
  4. وعليكم السلام ورحمة الله وبركاته ,,, أخي الكريم . حتى لا يتم تهميش أي موضوع تطرحه بعدم حصولك على رد لمشكلتك ، نرجو منك ما يلي :- أن يكون الشرح للمشكلة التي تواجهها شرحاً وافياً كافياً .. ( خذ وقتك في التعبير والكتابة والشرح ) إن أمكن لك توضيح المشكلة وتدعيم موضوعك بصورة فهو مناسب أكثر وأوضح لأي شخص يمر من هنا . استخدامك لمسميات الحقول باللغة العربية يجعل الكثيرين ممن يقومون برؤية الملف في حالة غير مشجعة للرد . فالمسميات العربية تسبب المشاكل في كتابة الاستعلامات والأكواد ... إلخ برأيك ، هل هذا الإسم للحقل "رقم الحساب الجار لصاحب (ة) المنصب" منطقي وصحيح ؟؟ الجواب قطعاً لا . لأسباب كثيرة منها طول الأسم باستخدام أكثر من كلمة يفصل بينها فراغ ... إلخ لا أحاول إحباطك في المشاركات ، لكن هدفنا هو حصولك على النتيجة التي تريدها بأسرع وقت . أشكر لك رحابة صدرك و وساعته على ما اقترحته عليك
  5. تمام ، شكراً للإفادة .. جرب هذا التعديل الأخير Public Sub Foksh(frm As Form) Dim db As DAO.Database Dim rs As DAO.Recordset Dim typ As String Dim conditionValue As Variant On Error Resume Next typ = frm.Controls("نص929").Value On Error GoTo 0 If IsNull(typ) Then MsgBox "لم يتم التحقق من قيمة وظيفة الموظف", vbExclamation + vbMsgBoxRight, "" Exit Sub End If Set db = CurrentDb Set rs = db.OpenRecordset("SELECT * FROM tbl_evaluation WHERE loifondamontale = '" & typ & "'", dbOpenDynaset) If rs.RecordCount = 0 Then MsgBox "لا توجد سجلات تطابق الشرط", vbInformation + vbMsgBoxRight, "" rs.Close Set rs = Nothing Set db = Nothing Exit Sub End If rs.MoveFirst Do While Not rs.EOF If IsNull(rs!evalu_moubadara_chaksia) Or rs!evalu_moubadara_chaksia = 0 Then rs.Edit If typ = "مهندسين" Then rs!evalu_moubadara_chaksia = 4.5 rs!evalu_itkan_elamel = 4.5 rs!evalu_nachatat_tarbia = 3 rs!evalu_absence = 8 rs!evalu_retard = 4 rs!evalu_tatwir = 4.5 rs!evalu_absence_prof = 12 rs!evalu_retard_prof = 4 rs!evalu_nadawat_prof = 6 rs!evalu_nachatat_tarbia_prof = 6 rs!evalu_mobadara_prof = 12 Else rs!evalu_moubadara_chaksia = 0 rs!evalu_itkan_elamel = 0 rs!evalu_nachatat_tarbia = 0 rs!evalu_absence = 0 rs!evalu_retard = 0 rs!evalu_tatwir = 0 rs!evalu_absence_prof = 12 rs!evalu_retard_prof = 4 rs!evalu_nadawat_prof = 6 rs!evalu_nachatat_tarbia_prof = 6 rs!evalu_mobadara_prof = 12 End If rs.Update End If rs.MoveNext Loop rs.Close Set rs = Nothing Set db = Nothing End Sub
  6. فعلاً ستواجه مشاكل أثناء صراع الأفكار وتنفيذها في نماذجك .. ولكن بناءً على اصرارك ، فقد ارتأتيت تغيير الوجهة كاملة بحيث نجعل العمل من خلال دالة عامة يتم استدعائها في حدث عند التحميل للنماذج ، ودون أن نؤثر على أكوادك في نماذجك .. جرب وأخبرنا بالنتيجة . الصق الدالة التالية في مديول :- Public Sub Foksh(frm As Form) On Error GoTo ErrorHandler Dim rs As DAO.Recordset Dim typ As String Dim ctrl As Control On Error Resume Next Set ctrl = frm.Controls("نص929") If Err.Number <> 0 Then MsgBox "لم يتم التحقق من قيمة وظيفة الموظف", vbExclamation + vbMsgBoxRight, "" Exit Sub End If On Error GoTo ErrorHandler Set rs = frm.RecordsetClone If rs.RecordCount = 0 Then MsgBox "لا توجد سجلات لعرضها", vbInformation + vbMsgBoxRight, "" GoTo CleanUp End If rs.MoveFirst Do While Not rs.EOF typ = ctrl.Value rs.Edit If typ = "مهندسين" Then rs!evalu_moubadara_chaksia = 4.5 rs!evalu_itkan_elamel = 4.5 rs!evalu_nachatat_tarbia = 3 rs!evalu_absence = 8 rs!evalu_retard = 4 rs!evalu_tatwir = 4.5 rs!evalu_absence_prof = 12 rs!evalu_retard_prof = 4 rs!evalu_nadawat_prof = 6 rs!evalu_nachatat_tarbia_prof = 6 rs!evalu_mobadara_prof = 12 Else rs!evalu_moubadara_chaksia = 0 rs!evalu_itkan_elamel = 0 rs!evalu_nachatat_tarbia = 0 rs!evalu_absence = 0 rs!evalu_retard = 0 rs!evalu_tatwir = 0 rs!evalu_absence_prof = 12 rs!evalu_retard_prof = 4 rs!evalu_nadawat_prof = 6 rs!evalu_nachatat_tarbia_prof = 6 rs!evalu_mobadara_prof = 12 End If rs.Update rs.MoveNext Loop frm.Requery CleanUp: On Error Resume Next rs.Close Set rs = Nothing Set ctrl = Nothing Exit Sub ErrorHandler: MsgBox " : حدث خطأ" & Err.Description, vbCritical + vbMsgBoxRight, "خطأ" Resume CleanUp End Sub واستدعيها في حدث عند التحميل في نموذجيك أول أمر :- Private Sub Form_Load() Call Foksh(Me) . . . . . End Sub
  7. المصيبة أعظم 😅 أعتقد توجهك الى بناء جديد يقوم بتخزين في ورقة منفصل جديدة باستخدام سجلات صفوف أفضل من سجلات الأعمدة ( طريقتك الحالية ) .
  8. ولا يهمك أخي الكريم .. لكن لي نوضيح لك مستقبلاً .. انت تعلم أن التعامل مع النماذج المستمرة يختلفعن النماذج المنفردة ( صحيح ؟؟ ) ناهيك عن موضوع الرول باك الذي تستعمله على العموم جرب هذا التعديل في مرفقك حيث استخدمت نفس الكود تماماً في الزرين في النموذجين .. Private Sub cmdSave_Click() Dim rs As DAO.Recordset Dim typ As String With WrkSpace 'commit any changes .CommitTrans Me.Recordset.Requery 'begin new transaction .BeginTrans End With m_dirty = False Set rs = Me.RecordsetClone rs.MoveFirst Do While Not rs.EOF typ = Me.نص929 rs.Edit If typ = "مهندسين" Then rs!evalu_moubadara_chaksia = 4.5 rs!evalu_itkan_elamel = 4.5 rs!evalu_nachatat_tarbia = 3 rs!evalu_absence = 8 rs!evalu_retard = 4 rs!evalu_tatwir = 4.5 rs!evalu_absence_prof = 12 rs!evalu_retard_prof = 4 rs!evalu_nadawat_prof = 6 rs!evalu_nachatat_tarbia_prof = 6 rs!evalu_mobadara_prof = 12 Else rs!evalu_moubadara_chaksia = 0 rs!evalu_itkan_elamel = 0 rs!evalu_nachatat_tarbia = 0 rs!evalu_absence = 0 rs!evalu_retard = 0 rs!evalu_tatwir = 0 rs!evalu_absence_prof = 12 rs!evalu_retard_prof = 4 rs!evalu_nadawat_prof = 6 rs!evalu_nachatat_tarbia_prof = 6 rs!evalu_mobadara_prof = 12 End If rs.Update rs.MoveNext Loop Set rs = Nothing m_dirty = False End Sub عدل القيم حسب حاجتك ، فأنا تعديلي كان حسب النموذج ، ولك الباقي حسب ما تراه مناسباً لمشروعك BASE-E1.zip
  9. وعليكم السلام ورحمة الله وبركاته .. تفصد أخي الكريم استعلام تحديث لقيم حقلين في الجدول الأول من الجدول الثاني بشرط الرقم القومي ( بما انه حقل فريد غير متكرر ) ، صحيح ؟ جرب هذا الاستعلام أولاً UPDATE [Copy Of شيت رصد اولى] INNER JOIN [Copy Of 1] ON [Copy Of شيت رصد اولى].[st_kawmy] = [Copy Of 1].[st_kawmy] SET [Copy Of شيت رصد اولى].codeterm = [Copy Of 1].[codeterm], [Copy Of شيت رصد اولى].st_kind = [Copy Of 1].[st_kind]; وأخبرنا بالنتيجة
  10. وعليكم السلام ورحمة الله وبركاته .. اعتقد تنسيق التاريخ في الحقل أو مربع النص له علاقة ، ولتلافي المشكلة وأعتقد مؤقتاً ، جرب التعديل التالي :- DoCmd.OpenReport "Y_N_Report", acViewPreview, , "ddate = #" & Format([DDate], "yyyy-mm-dd") & "# AND NOT IsNull(colour)", , Screen.ActiveControl.Caption
  11. أهلاً أخي الكريم .. يبدو انك لم تأخذ بنصيحة معلمي الفاضل أبو خليل , ثم انك لم ترسل المرفق الذي تقول عنه يحتوي النموذجين !!!
  12. حبيبي وصديقي جو ، انا لم أقم سوى بحذف التسمية التوضيحية للتقرير في آخر مرفق ارسلته لك لا اعلم عن ماذا أو اي جملة شرطية تتحدث . لأنني حقيقة لم أطلع على أي كوووود داخل ملفك سوى الجزء الذي تم التعليق عليه سابقاً !!!
  13. أولا ، وعليكم السلام ورحمة الله وبركاته .. ثانياً صدقاً لم أفهم أي شيء من الكلام ، وسبق كثيراً أن تم تنبيهكم إلى ضرورة الإعتناء باللغة التي تكتبون فيها مشاركاتكم وردودكم أخي الكريم .. ثالثاً بعيداً عن النقطة السابقة ، بعد تحميل المرفق والسير على الخطوات ، أرفقت فيديو لتجربتي والنتيجة المبدئية لها .
  14. وعليكم السلام ورحمة الله وبركاته .. أولاً هدية طيبة ومقبولة منك أخي الكريم ، حملت الملف لألقي نظرة عليه وأستمتع بهذا العمل الجميل ، ولكن حظي وفرحتي لم يكتملان
  15. وعليكم السلام ورحمة الله وبركاته .. اسمح لي بسؤال أخي الكريم ، هل الجزء الواحد كما في الصورة لليوم الواحد أم ماذا ؟؟ إن كان كذلك ، فأنت لست بحاجة لأن يخبرك أي شخص أن هذا السلوك غير منطقي وغير صحيح برمجياً . خلاف ذلك ننتظر منك التوضيح للمطلوب
  16. 70% من التحديث قد تم بنجاح .. باقي القليل 😉
  17. بسيطة أخي جو .. احذف التسمية من خصائص التقرير ( Caption ) فقط وسيعمل معك بدون مشاكل تفضل ملفك بعد التعديل :- LAb (1).zip
  18. وعليكم السلام ورحمة الله تعالى وبركاته 🤗 كإجابة على السؤال المهم في طلبك ، إن كان يمكن تحقيقه من خلال الجدول نفسه ، فإجابتي لا . ما لم يكن هناك رأي آخر . فمثلاً لا تستطيع ادخال قيمة افتراضية لحقل ما داخل جدول من خلال معادلة أو جملة شرطية . كمثال:- =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 الحقل ... إلخ. جرب ولن تخسر شيء 😇.
  19. استخدم تحديث النموذج Docmd.Requery بعد رسالة تأكيد نجاح الاستيراد
  20. وعليكم السلام ورحمة الله وبركاته.. للإستيراد من اكسل الى اكسيس ، راجع هذا الموضوع:- أما التصدير من اكسيس لإكسل ، فأعتقد أن الكثير من المواضيع في المنتدى تحدثت عنه ، استخدم خاصية البحث ، علك تجد ما يناسبك. *أتابع من الجوال*
  21. مداخلة .. اجعل خاصية 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
  22. وعليكم السلام ورحمة الله وبركاته .. تأملت منك توضيح كلمة الفرق هنا = ؟؟؟
  23. في الرابط التالي ، سلسلة من دروس الأستاذ محمود عبدالغفار ، متأكد أنها ستقدم لك الإجابات الشافية بشكل مرئي .. https://www.youtube.com/hashtag/mahmoudtrainingmicrosoftvba_dao والدرس الأول أعتقد جواب لسؤالك
×
×
  • اضف...

Important Information