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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. اجعل النماذج والتقارير منبثقه جعفر
  2. يعني خلاص ، انحلت المشكله ، والارقام بالتسلسل الصحيح؟ وهل غيّرت سنة الكمبيوتر الى السنه التالية وجربت نتائج التسلسل؟ جعفر
  3. اول ما تفتح البرنامج ، هل تظهر لك هذه الصورة؟ . اذا نعم ، فهل تضغط على زر التمكين؟ جعفر
  4. وعليكم السلام اذا اردت ان يكون عندك تحكم اكثر في الحقول ، من تصفية وفرز ، فاستعمل نموذج فرعي ، وتابع هذا الرابط جعفر
  5. همممم اسمح لي اعمل بخور وارجع لك ، محتاج مساعدة طيب خلينا نشوف اللي تشوفه انت: انزل مرفقي في مشاركتي رقم 10 اعلاه (علشان انا وانت نكون نشتغل على نفس البيانات) ، واخرج الملف من accdb. من الملف المضغوط وانزله في اي مجلد ، ثم افتح البرنامج ، وعندما يأتيك الشريط الاصفر ، اضغط على الزر اللي في النص "تمكين المحتوى" . 1. ادخل في الكود ، واضغط على مكان النقطة ، وستجد ان السطر اصبح لونه بُني . 2. اذهب الى النموذج ، وانتقل الى سجل لا يوجد فيه رقم تسلسلي ، وانقر على زر الامر ، 3. ستجد ان الاكسس ادخلك في الكود ، واصبح لون السطر اصفر . 4. اضغط على زر F8 على الكيبورد ، والذي المفروض ان ينقلك الى السطر التالي ويظلله باللون الاصفر (معناه انه لم يتم القيام بأمر هذا السطر بعد) ، 5. يمكنك وضع الفأرة (وبدون نقر) على اي من المتغيرات ، وستظهر لك قيمة المتغير (الاسطر التي فوق اللون الاصفر) ، 6. لما توصل الى السطر End Sub ويصبح لونه اصفر ، ضع الفأرة على متغيرات السطر الذي قبله ، على هذه المتغيرات Me!Seq ، prtyr ، xNext واخبرنا قيمة كل واحدة منها جعفر
  6. وعليكم السلام اخي اولا اشكرك على جميل ذوقك في اختيار العبارات المناسبة في الرد في مواضيعك سبق وان رايت اكثر من موضوع لك ، ولكني لم اشارك فيها ، وتابعت بعض مواضيعك السابقة ، لهذا السبب احببت ان اوضح لك التالي ، وبعد إذنك: 1. قوانين المنتدى لا تسمح بأكثر من سؤال في موضوع واحد ، والسبب ، حتى يكون الموضوع مرجع لمن لديه سؤال مثل سؤالك ، اما اذا تعددت الاسئلة في موضوع واحد ، فسهل ان يتوه المبرمج الجديد في الاكواد والمصطلحات ، وكما ان لكل واحد فينا نقاط قوة ونقاط ضعف ، وبما انه عندنا وقت محدود للمساعدة ، فاننا نختار من الاسئلة ما يلائمنا. 2. صاحب السؤال ادرى ببرنامجه وتفاصيله ، فاكتب اكبر كمية من التفاصيل عن سؤالك ، مثل اسم النموذج/التقرير/الاستعلام الذي فيه المشكلة ، واسم الحقل ، ماهي المشكلة ، وما النتيجة التي تريد تحقيقها ، واعطاء مثال او مثالين واضحين من برنامجك المرفق ، او ارفاق ملف اكسل او وورد او صورة تشرح المطلوب ، وللأسف الشديد نرى الكثير من الاسئلة عبارة عن سطر واحد ومكتوب فيه ان المطلوب في المرفق ، وعندما لا يرى اجابه فإنه يعاتبنا على إهمال سؤاله جعفر
  7. وعليكم السلام تفضل =DCount("*","المراجعين","[اسماء الموظفين]='سالم'") المعادلة لا تبدو بالطريقة الصحيحة ، لأنها تحتوي على حقول عربية ، ولكن اعمل نسخ للكود اعلاه ، ولصق في الحقل (بدل المعادلة التي عندك) جعفر 681.دالة تظهر عدد النص.accdb.zip
  8. أخي الفاضل المشكلة عندك انك مستخدم احد اسماء الاكسس المحجوزة ، الحقل date ، والكود يشير الى الامر date (يعني تاريخ اليوم) ، فالبرنامج بدل ان يأخذ القيمة من الامر ، كان يأخذ قيمة الحقل انا غيّرت اسم الحقل في الجدول الى date1 ، ومشى الحال ، اما موضوع التنسيق وعدد الاصفار ، فإذا اردته بدون اصفار ، استعمل الكود التالي ليصبح ترقيمك 171 ، 172 ... ، 1710 ، وهكذا: Private Sub cmd_New_Number_Click() If Len(Me.Seq & "") <> 0 Then Exit Sub On Error Resume Next Dim xLast, xNext As Integer Dim prtyr, prtTxt As Integer prtyr = Right(DatePart("yyyy", date), 2) prtTxt = Left(DMax("Seq", "tb1"), 2) xLast = DMax("Seq", "tb1", prtTxt = prtyr) If IsNull(xLast) Then xNext = 1 Else xNext = Val(Mid(xLast, 3)) + 1 End If 'Me!Seq = prtyr & Format(xNext, "00000") Me!Seq = prtyr & xNext End Sub جعفر 679.1.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip
  9. اعتذر منك ، اخذت الكود بالكامل بالخطأ تستطيع ان ترجع هذا السطر للحدث السابق جعفر
  10. وعليكم السلام رجاء تعطيني مثال من واقع بيانات برنامجك حتى اجربه واشوف النتيجة. جعفر
  11. خليها قبل سطر فتح التقرير هكذا مثلا Private Sub Command8_Click() On Error GoTo Err_Command8_Click 'DoCmd.RunCommand acCmdSaveRecord If Me.Dirty = True Then Me.Dirty = False 'Refresh Dim stDocName As String stDocName = "R_Delivery" DoCmd.OpenReport stDocName, acPreview Exit_Command8_Click: Exit Sub Err_Command8_Click: MsgBox Err.Description Resume Exit_Command8_Click End Sub جعفر
  12. وعليكم السلام وبدون انزال المرفق ، واعتمادا على شرحك ، البيانات في النموذج ليست محفوظة في الجدول بعد ، لذا يجب حفظها قبل ان تفتح التقرير ، واختار احد هذه الطرق لحفظ البيانات: سيتم حفظ البيانات بغض النظر اذا تم تعديل عليها او لا docmd.runcommand accmdsaverecord او يحفظ البيانات فقط اذا تم عمل تغيير عليها if me.dirty=true then me.dirty=false او سيتم حفظ البيانات بغض النظر اذا تم تعديل عليها او لا Refresh جعفر
  13. السلام عليكم للعلم ، هذه اول مرة اتعامل مع تاريخ هجري او تاريخ ام القرى ولكن الحمدلله على أكواد ابو هادي (مع اني لم اتعرف عليه ، ولكن اكواده ماشاء الله تحكي ابداعاته) ، والحمد لله ان ابو خليل في احد مشاركاته السابقه ، اشار انه بامكاننا التعامل مع اكواد ابو هادي لتاريخ ام القرى بنفس طريقة تعاملنا مع التواريخ العادية هذا الكود يقوم بالمطلوب ان شاء الله: Dim rst As DAO.Recordset 'Set rst = CurrentDb.OpenRecordset("SELECT bedaya, modda FROM ejazat_main Where UmYear([bedaya]) = " & UmYear(Me.Bd) & " And [Num] = " & Me.ww) mySQL = "SELECT bedaya, modda" mySQL = mySQL & " FROM ejazat_main" mySQL = mySQL & " Where UmYear([bedaya]) = " & UmYear(Me.Bd) mySQL = mySQL & " And [Num] = " & Me.ww Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC For j = 0 To rst!modda - 1 Date_to_Test = UmDateAdd("d", j, UmCDate(rst!bedaya)) 'Debug.Print Date_to_Test 'Debug.Print Date_to_Test & vbTab & UmCDate(Me.Bd) & vbTab & UmDateAdd("d", Me.Md, UmCDate(Me.Bd)) If Date_to_Test >= UmCDate(Me.Bd) And Date_to_Test <= UmDateAdd("d", Me.Md, UmCDate(Me.Bd)) Then Dup = Dup & "Duplicate: " & Date_to_Test & vbCrLf End If Next j rst.MoveNext Next i If Len(Dup & "") > 0 Then MsgBox Dup Cancel = True rst.Close: Set rst = Nothing 'MsgBox "عفواً .. توجد إجازة مسبقة بهذا التاريخ", vbInformation, "" Exit Sub End If . واذا حصل على تاريخ مأخوذ مسبقا ، ستحصل على: جعفر 675.ejazat_hejri.mdb.zip
  14. تفضل برنامجي واضفت سطر في الكود لكي يتأكد من عدم وجود رقم تسلسلي في حقل النموذج جعفر 679.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip
  15. تفضل 1. الحقل no في جدولك هو حقل ترقيم تلقائي ، فلا يمكنك ان تعطيه التسلسل الذي تريد ، 2. اضف حقل Seq الى جدولك ، بنوع رقم ، وسنستخدمه للتسلسل السنوي ، 3. اسم زر الامر في النموذج تم تغييره الى cmd_New_Number ، عليه وبعد تعديل كود أخي ابو خليل ليتماشى مع مسميات جدولك ، ضع هذا الكود على نقر الزر: Private Sub cmd_New_Number_Click() On Error Resume Next Dim xLast, xNext As Integer Dim prtyr, prtTxt As Integer prtyr = Right(DatePart("yyyy", date), 2) prtTxt = Left(DMax("Seq", "tb1"), 2) xLast = DMax("Seq", "tb1", prtTxt = prtyr) If IsNull(xLast) Then xNext = 1 Else xNext = Val(Mid(xLast, 3, 5)) + 1 End If Me!Seq = prtyr & Format(xNext, "00000") End Sub جعفر
  16. لا ، لن تكون هناك مشكلة في البحث ، فاذا كان عندك استعلام تربط فيه الجدولين ، وتبحث ، فالبحث يكون باسم الجدول "نقطة" اسم الحقل ، فبهذه الطريقة الاسماء لن تكون متشابهة واذا نظرت في قائمة الاسماء المحجوزة ، فكلمة Name محجوزة جعفر
  17. وعليكم السلام 1. اسم الحقل ، هو لعمل البرنامج: أ. اكتبه بالانجليزي ، ولو به خطأ إملائي ، ب. اجعله مفهوم ، فحتى لما ترجع بعد سنه ، وبمجرد قراءة الاسم ستعرف عمله ، ج. لا تجعل مسافة بين الكلمات ، واذا كان الاسم بأكثر من كلمه ، فاربط الكلمات بـ "_" ، مثل: Full_Name ، د. لا تستخدم الكلمات المحجوزة للأكسس: https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-E33EB3A9-8BAA-4335-9F57-DA237C63EABE هـ. لا تجعل اسم الحقل عبارة عن رقم ، ولا تبدأ اسم الحقل برقم. 2. اما التسمية فتكون للمستخدم ، وتستطيع ان تكتبها بالعربي بأي طريقة شئت جعفر
  18. وعليكم السلام في احد برامجي اضطررت ان اقوم بشيء شبيه لما تريد عمله ، ولكن ليس بتمرير الفأرة ، وانما بالنقر على زر في السجلات ، والكود المرفق هو لذلك الزر ، الزر في النموذج الفرعي frm_Beads ، واسم النموذج الرئيسي frm_M_Beads ، ونموذج الصورة اسمه frm_Show_Image ، Private Sub cmd_frm_Show_Image_Click() DoCmd.OpenForm "frm_Show_Image" 'get the BE path BE_Path = application.currentproject.path Image_Name = Format(Forms!frm_M_Beads!frm_Beads!Auto_Date, "yyyy_mm_dd-hh_nn_ss") Forms!frm_Show_Image!Scan.Picture = BE_Path & "\Images\Items\" & Image_Name & ".jpg" Exit Sub err_cmd_frm_Show_Image_Click: If Err.Number = 2465 Or Err.Number = 2450 Then 'Form Not open Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر
  19. العفو ، الظاهر اني لم استطع توصيل المعلومة ورايت المرفق في مشاركتك الاولى ، ولم انزله ، لأن فكرة عمل جدول مستقل لكل سنة هي فكرة غير صحيحة أخونا العود ابوخليل ، عنده مشاركه للترقيم السنوي ، وان شاء الله تستفيد مناقشات الموضوع الثريّة بالفائدة ، وبالاساليب المختلفة للترقيم ، ومن مرفقاته كذلك: جعفر
  20. وعليكم السلام غيّر الرقم من 1 الى 2 . جعفر
  21. وعليكم السلام تفضل : Private Sub cmd_Export_to_Excel_Click() Dim xlApp As Object 'Excel.Application Dim xlWB As Object 'Excel.Workbook Dim rst As DAO.Recordset 'open excel template Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False 'True Set xlWB = xlApp.Workbooks.Open(CurrentProject.Path & "\Excel Destn Temp.xltx") Set xlWS = xlWB.Worksheets(1) 'Expense report Number xlWS.Cells(4, 3).Value = Me.[Expense report Number] xlWS.Cells(4, 3).Font.Bold = True xlWS.Cells(4, 3).Interior.Color = vbRed 'Employee Code xlWS.Cells(6, 3).Value = Me.[Employee Code] xlWS.Cells(6, 3).Font.Bold = True xlWS.Cells(6, 3).Interior.Color = vbRed 'Employee Name xlWS.Cells(7, 3).Value = Me.[Employee Name] xlWS.Cells(7, 3).Font.Bold = True xlWS.Cells(7, 3).Interior.Color = vbRed 'the subform values Set rst = Me.Vouchers_Subform.Form.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount iRow = 10 'i + 1 For i = 1 To RC 'Sequence xlWS.Cells(iRow + i, 1).Value = i xlWS.Cells(iRow + i, 1).Font.Bold = True xlWS.Cells(iRow + i, 1).Interior.Color = vbRed 'VDate xlWS.Cells(iRow + i, 2).Value = rst!VDate xlWS.Cells(iRow + i, 2).Font.Bold = True xlWS.Cells(iRow + i, 2).Interior.Color = vbRed 'Expense Type xlWS.Cells(iRow + i, 3).Value = "jj" xlWS.Cells(iRow + i, 3).Font.Bold = True xlWS.Cells(iRow + i, 3).Interior.Color = vbRed 'Voucher NUMBER xlWS.Cells(iRow + i, 4).Value = rst!VoucherNUMBER xlWS.Cells(iRow + i, 4).Font.Bold = True xlWS.Cells(iRow + i, 4).Interior.Color = vbRed 'VA mount xlWS.Cells(iRow + i, 6).Value = rst!VAmount xlWS.Cells(iRow + i, 6).Font.Bold = True xlWS.Cells(iRow + i, 6).Interior.Color = vbRed rst.MoveNext Next i xlApp.Save 'ask the user to save the new file xlApp.Quit Set xlWS = Nothing Set xlWB = Nothing Set xlApp = Nothing End Sub جعفر 677.Export to excel temp.zip
  22. وعليكم السلام سيدي العزيز أبو نادر من تجربتي لبرامج الاجازات ، ولعدم حصول تكرار ، والأهم ، هو لسرعة البرنامج: الجدول: اسم او رقم الموظف ، ترقيم الاجازة (سنوي) ، تاريخ الاجازة ، نوع الاجازة ، ملاحظات ، تم قطع الاجازة (نعم/لا) ، والقيمة الافتراضية يجب ان تكون صفر (يعني لا) . النموذج: ادخال التاريخ ، من و الى ، عند الموافقة ، يكون هناك زر لتفكيك الاجازة الى ايام ، وحفظها في الجدول ، زر امكانية تغيير قطع اجازة الموظف ، كذلك بين التاريخين ، وتحديث الجدول ، والملاحظات ، إن وُجدت. الاستعلام: اسم او رقم الموظف ، وقد يكون بمعيار ، تاريخ الاجازة ، والمعيار يكون بين تاريخين ، تم قطع الاجازة ، والمعيار يكون صفر. واذا اردت اضافة قسم الموظف ، فاعمل استعلام آخر ، واربط اسم او رقم الموظف بجدول الاقسام ، اما الحقول المحسوبة مثل: اليوم ، فهذه تعملها في الاستعلام مباشرة ، ولا تُحفظ في الجدول. الآن الموضوع سيكون في غاية السهولة ، والسرعة في احد برامجي ، كان هناك اكثر من ثلاثين الف اجازة في الشهر ، وكُله مشى تمام وهناك مَثل شهير في قواعد البيانات: الحقول غالية ، والسجلات رخيصة جعفر
  23. وعليكم السلام وبدون انزال برنامجك ، فالفكرة ليست صحيحة في عالم قاعدة البيانات فكرة قاعدة البيانات هي ، ادخال بيانات ، فرز وتصفية ، اخراج تقارير فالطريقة الصحيحة هي ان يكون جدول واحد لجميع السنوات ، والفرز والتصفية يكون بحقل فيه تاريخ السنه التي تريدها (مثل تاريخ الصادر او الوارد) ، او اذا كلا ولابد ، فاضافة حقل للسنه جعفر
×
×
  • اضف...

Important Information