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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    415

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

  1. وعليكم السلام رجاء تعطيني مثال من واقع بيانات برنامجك حتى اجربه واشوف النتيجة. جعفر
  2. خليها قبل سطر فتح التقرير هكذا مثلا 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 جعفر
  3. وعليكم السلام وبدون انزال المرفق ، واعتمادا على شرحك ، البيانات في النموذج ليست محفوظة في الجدول بعد ، لذا يجب حفظها قبل ان تفتح التقرير ، واختار احد هذه الطرق لحفظ البيانات: سيتم حفظ البيانات بغض النظر اذا تم تعديل عليها او لا docmd.runcommand accmdsaverecord او يحفظ البيانات فقط اذا تم عمل تغيير عليها if me.dirty=true then me.dirty=false او سيتم حفظ البيانات بغض النظر اذا تم تعديل عليها او لا Refresh جعفر
  4. السلام عليكم للعلم ، هذه اول مرة اتعامل مع تاريخ هجري او تاريخ ام القرى ولكن الحمدلله على أكواد ابو هادي (مع اني لم اتعرف عليه ، ولكن اكواده ماشاء الله تحكي ابداعاته) ، والحمد لله ان ابو خليل في احد مشاركاته السابقه ، اشار انه بامكاننا التعامل مع اكواد ابو هادي لتاريخ ام القرى بنفس طريقة تعاملنا مع التواريخ العادية هذا الكود يقوم بالمطلوب ان شاء الله: 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
  5. تفضل برنامجي واضفت سطر في الكود لكي يتأكد من عدم وجود رقم تسلسلي في حقل النموذج جعفر 679.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip
  6. تفضل 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 جعفر
  7. لا ، لن تكون هناك مشكلة في البحث ، فاذا كان عندك استعلام تربط فيه الجدولين ، وتبحث ، فالبحث يكون باسم الجدول "نقطة" اسم الحقل ، فبهذه الطريقة الاسماء لن تكون متشابهة واذا نظرت في قائمة الاسماء المحجوزة ، فكلمة Name محجوزة جعفر
  8. وعليكم السلام 1. اسم الحقل ، هو لعمل البرنامج: أ. اكتبه بالانجليزي ، ولو به خطأ إملائي ، ب. اجعله مفهوم ، فحتى لما ترجع بعد سنه ، وبمجرد قراءة الاسم ستعرف عمله ، ج. لا تجعل مسافة بين الكلمات ، واذا كان الاسم بأكثر من كلمه ، فاربط الكلمات بـ "_" ، مثل: Full_Name ، د. لا تستخدم الكلمات المحجوزة للأكسس: https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-E33EB3A9-8BAA-4335-9F57-DA237C63EABE هـ. لا تجعل اسم الحقل عبارة عن رقم ، ولا تبدأ اسم الحقل برقم. 2. اما التسمية فتكون للمستخدم ، وتستطيع ان تكتبها بالعربي بأي طريقة شئت جعفر
  9. وعليكم السلام في احد برامجي اضطررت ان اقوم بشيء شبيه لما تريد عمله ، ولكن ليس بتمرير الفأرة ، وانما بالنقر على زر في السجلات ، والكود المرفق هو لذلك الزر ، الزر في النموذج الفرعي 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 جعفر
  10. العفو ، الظاهر اني لم استطع توصيل المعلومة ورايت المرفق في مشاركتك الاولى ، ولم انزله ، لأن فكرة عمل جدول مستقل لكل سنة هي فكرة غير صحيحة أخونا العود ابوخليل ، عنده مشاركه للترقيم السنوي ، وان شاء الله تستفيد مناقشات الموضوع الثريّة بالفائدة ، وبالاساليب المختلفة للترقيم ، ومن مرفقاته كذلك: جعفر
  11. وعليكم السلام غيّر الرقم من 1 الى 2 . جعفر
  12. وعليكم السلام تفضل : 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
  13. وعليكم السلام سيدي العزيز أبو نادر من تجربتي لبرامج الاجازات ، ولعدم حصول تكرار ، والأهم ، هو لسرعة البرنامج: الجدول: اسم او رقم الموظف ، ترقيم الاجازة (سنوي) ، تاريخ الاجازة ، نوع الاجازة ، ملاحظات ، تم قطع الاجازة (نعم/لا) ، والقيمة الافتراضية يجب ان تكون صفر (يعني لا) . النموذج: ادخال التاريخ ، من و الى ، عند الموافقة ، يكون هناك زر لتفكيك الاجازة الى ايام ، وحفظها في الجدول ، زر امكانية تغيير قطع اجازة الموظف ، كذلك بين التاريخين ، وتحديث الجدول ، والملاحظات ، إن وُجدت. الاستعلام: اسم او رقم الموظف ، وقد يكون بمعيار ، تاريخ الاجازة ، والمعيار يكون بين تاريخين ، تم قطع الاجازة ، والمعيار يكون صفر. واذا اردت اضافة قسم الموظف ، فاعمل استعلام آخر ، واربط اسم او رقم الموظف بجدول الاقسام ، اما الحقول المحسوبة مثل: اليوم ، فهذه تعملها في الاستعلام مباشرة ، ولا تُحفظ في الجدول. الآن الموضوع سيكون في غاية السهولة ، والسرعة في احد برامجي ، كان هناك اكثر من ثلاثين الف اجازة في الشهر ، وكُله مشى تمام وهناك مَثل شهير في قواعد البيانات: الحقول غالية ، والسجلات رخيصة جعفر
  14. وعليكم السلام وبدون انزال برنامجك ، فالفكرة ليست صحيحة في عالم قاعدة البيانات فكرة قاعدة البيانات هي ، ادخال بيانات ، فرز وتصفية ، اخراج تقارير فالطريقة الصحيحة هي ان يكون جدول واحد لجميع السنوات ، والفرز والتصفية يكون بحقل فيه تاريخ السنه التي تريدها (مثل تاريخ الصادر او الوارد) ، او اذا كلا ولابد ، فاضافة حقل للسنه جعفر
  15. وعليكم السلام !Size# هذا معناه ، انه لا توجد قيمة لأحد الحقول التي تعتمد عليها المعادلة ، فيجب معالجة هذا الحقل ، !Type# عندك تضارب في اسم الحقل جعفر
  16. السلام عليكم وبعد إذن الاستاذ محمد اذا كان هناك حقل فاضي وليس Null ، مثلا عملت الاضافة التالية: . فاصبحت القيم . ولكي نستطيع ان نتجنب الحقول الفارغة و Null ، فيمكنك استخدام هذا الكود: Private Sub Command6_Click() If Len(Me.Dept & "") <> 0 Then 'DoCmd.OpenForm "Employees", , , "Dept =Forms!main![Dept].value" DoCmd.OpenForm "Employees", , , "Dept ='" & Me.Dept & "'" Else MsgBox ("تأكد من إدخال البيانات بشكل سليم") End If End Sub جعفر
  17. وعليكم السلام 1. من فهمي لسؤالك ، عندك نموذج فردي ، وعليه تستطيع ان تستعمل الكود التالي لطباعة آخر سجل في النموذج: DoCmd.GoToRecord , , acLast DoCmd.PrintOut acSelection, , , acHigh . ولا اجد اي طريقة للطباعة بصيغة pdf ، إلا اذا استعملت طابعة pdf افتراضية Virtual Printer ، بحيث تجعلها الطابعة الافتراضي للطبع Default Printer ، ثم تُرجع الطابعة الاخرى كطابعة افتراضية ، وهذا الرابط يعطيك فكرة عن هذه الطابعات: جعفر
  18. وعليكم السلام ولتعم الفائدة ، رجاء اقرأ الرابط هذا ، حتى يعمل لك الاكسس الكود المطلوب . والآن الى طلبك: 1. . 2. بالفأرة اليمين ، على حقل التاريخ . 3. . 4. نتيجة التصفية ، ثم تختار التقرير Report لرؤية اعداداته . 5. وهنا نرى الكود جاهزا . 6. نأخذ الكود اعلاه ونضعه في كود فتح التقرير ، مع مراعة استخدام Date1 و Date2: Private Sub أمر39_Click() Dim Date1 As Date Dim Date2 As Date Date1 = InputBox("Enter the first date") Date2 = InputBox("Enter the second date") DoCmd.OpenReport "Rep-sadder", acViewPreview, , "([TBLSadder].[Date-sad] Between #" & Date1 & "# And #" & Date2 & "#)" 'DoCmd.OpenReport "Rep-sadder", acViewPreview, , Date1 & Date2, acWindowNormal 'كيف اجعل التقرير يظهر ضمن التاريخ المحدد ب inputbox End Sub جعفر
×
×
  • اضف...

Important Information