بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9907 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
كود برمجى ينسق الاجازات الاعتيادية المستحقة للموظف
jjafferr replied to حمدى الظابط's topic in قسم الأكسيس Access
وعليكم السلام اولا قمت بتعديل في برنامجك ، وعملت جداول كالتالي: هذا الجدول لا علاقة له بموضوعك ، ولكن من الافضل ان تجعل القيم المتغيره في جدول مستقل ، ولا تجعله في Dlookup الجدول ، لأن المستخدم يستطيع ان يضيف القيم في الجدول ببساطة وبدون تدخل المبرمج في اضافة/تعديل اي قيم . والان الى موضوعك: تم اضافة تاريخ التوظيف مع بيانات الموظفين ، . اسماء الوظائف تم عزلها الى جدول مستقل ، وامام كل وظيفة عدد ايام الاجازة المسموح له ، واما الاجازات التي تعتمد على تاريخ التوظيف ، فنترك المدة فاضية . عملنا الاستعلام التالي ، والذي ينادي الوحدة النمطية Vacation_Calc للحساب ، ولعمل الوحدة النمطية ، يجب ان نرسل (بالترتيب) أ. تاريخ التوظيف ب. التاريخ الذي نريد حسابه ج. عدد ايام الاجازة المسموح له وللتجربة استعملنا تاريخين مختلفين لحساب (التاريخ الذي نريد حسابه): Vac_Today = تاريخ اليوم Vac_on_3-3-11 = تاريخ 3-3-2011 . والنتيجة . ولعمل الحساب ، يجب استخدام هذه الوحدة النمطية Function Vacation_Calc(eD As Date, E As Date, vD) Dim A 'eD= Employement Start Date 'E= End Date 'vD= Days allowed for Employee 'هل يوجد عدد في جدول الاجازات If Len(vD & "") = 0 Then 'لا يوجد عدد ، اذن فليسوا معلمين 'اذن حساب اجازتهم تعتمد على تاريخ التوظيف 'نحسب فترة توظيفهم بالاشهر ، والسنوات Y = DateDiff("yyyy", eD, E) M = DateDiff("m", eD, E) A = 0 Vacation_Calc = 0 'اذا فترة التوظيف سنةاو اكثر ، استخدم قيمة السنة 'والا استخدم قيمة الشهر If Y >= 1 Then A = Y ElseIf M > 5 And M < 12 Then A = 0.6 End If 'Debug.Print A If A < 0.5 Then Vacation_Calc = 0 ElseIf A >= 0.5 And A < 1 Then Vacation_Calc = 15 ElseIf A >= 1 And A < 10 Then Vacation_Calc = 21 ElseIf A >= 10 And A < 50 Then Vacation_Calc = 30 ElseIf A >= 50 Then Vacation_Calc = 45 End If Else 'نعم يوجد عدد ، هؤلاء معلمين Vacation_Calc = vD End If End Function . جعفر 476.حضور وانصراف.mdb.zip -
استفسار : طريقة استيراد اكثر من ورقة عمل للاكسس
jjafferr replied to مبرمج على يديكم's topic in قسم الأكسيس Access
هاي ثقة اعتز فيها ، وانتم وبقية العمالقة في المنتدى ، كذلك خير وبركة جعفر -
استفسار : طريقة استيراد اكثر من ورقة عمل للاكسس
jjafferr replied to مبرمج على يديكم's topic in قسم الأكسيس Access
الروابط كان فيها الطرق ، واذا عندك مشكلة ، فالرجاء ارفاق ملفك الاكسل وبدون اي تعديلات عليه ، وبرنامجك الاكسس ، واخبرنا بالتفصيل ما تريد عمله جعفر -
-
طبعا ، الجدول عندك في البرنامج ، واضف ما احببت 1. لوسمحت تعدل في البرنامج ، وتعطيني مثال ، لأن جلب التاريخ بين التواريخ لن يكون سهلا بدون دقة في المعطيات ، وعلى اساس المثال او المثالين (واحد بين تاريخين ، والاخر كل الايام بدون تحديد تواريخ للبداية والنهاية (لازم افهم هذه من مثال واضح لوسمحت) ، 2. تمام جعفر
-
السلام عليكم وحتى يكتمل الموضوع ، اخذت جزئية من احد برامجي ، وهي لحساب السنه والشهر واليوم ، يعني الحساب بالكامل . وهكذا ننادي الوحدة النمطية . والنتيجة . والوحدة النمطية Public Function YMDDif2(sDate1, sDate2) 'Public Function YMDDif2(sDate1, sDate2, Cont_Type, Res_Date) On Error GoTo err_YMDDif2 'sDate1 earliest date 'sDate2 later date 'Cont_Type = Contract Type 'Res_Date = Resignation Date Dim dInterim1 As Date ' If Cont_Type = "استقالة" Or Cont_Type = "متقاعد" Then ' sDate2 = Res_Date ' End If iMonth = DateDiff("m", sDate1, sDate2) If Day(sDate1) > Day(sDate2) Then iMonth = iMonth - 1 End If dInterim1 = DateAdd("m", iMonth, sDate1) iDay = DateDiff("d", dInterim1, sDate2) D = iDay M = iMonth Mod 12 Y = iMonth \ 12 YMDDif2 = CStr(Y) & " س/" & CStr(M) & " ش/" & CStr(D) & " ي" Exit Function err_YMDDif2: If Err.Number = 94 Then 'ignor, null Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function . جعفر 473.2.db.mdb.zip
-
سؤال بشان تغير نوع الخط في جميع نماذج الاكسس
jjafferr replied to angelloay's topic in قسم الأكسيس Access
وعليكم السلام الرابط التالي فيه طريقة وكود لتغيير الصور في جميع النماذج/التقارير ، من مضمنه الى مرتبطة ، . وبتغيير بسيط تستطيع ان تغيره الى طلبك ، ولاحظ ان نوع الخط الجديد هو "Andalus" في المثال Function Convert_img_Embed_to_Link() Dim frm As AccessObject Dim rpt As AccessObject Dim dbs As Object Dim frm1 As Access.Form Dim rpt1 As Access.Report Dim ctl As Access.Control Set dbs = Application.CurrentProject For Each frm In dbs.AllForms DoCmd.OpenForm frm.Name, acDesign Set frm1 = Forms(frm.Name) For Each ctl In frm1.Controls If ctl.ControlType = acComboBox Or _ ctl.ControlType = acCommandButton Or _ ctl.ControlType = acLabel Or _ ctl.ControlType = acListBox Or _ ctl.ControlType = acOptionButton Or _ ctl.ControlType = acTextBox Then Debug.Print frm.Name & " > " & ctl.ControlType & " > " & ctl.Name ctl.FontName = "Andalus" If frm1.DefaultView = 2 Then frm1.DatasheetFontName = "Andalus" 'DataSheetForms End If End If Next ctl DoCmd.Close acForm, frm.Name, acSaveYes Next frm Exit Function For Each rpt In dbs.AllReports DoCmd.OpenReport rpt.Name, acDesign Set rpt1 = Reports(rpt.Name) For Each ctl In rpt1.Controls If ctl.ControlType = acComboBox Or _ ctl.ControlType = acCommandButton Or _ ctl.ControlType = acLabel Or _ ctl.ControlType = acListBox Or _ ctl.ControlType = acOptionButton Or _ ctl.ControlType = acTextBox Then Debug.Print rpt.Name & " > " & ctl.ControlType & " > " & ctl.Name ctl.FontName = "Andalus" If rpt1.DefaultView = 2 Then frm1.DatasheetFontName = "Andalus" End If End If Next ctl DoCmd.Close acReport, rpt.Name, acSaveYes Next rpt End Function جعفر -
وعليكم السلام طبعا كمية البيانات لها دور في سرعة اداء الكمبيوتر ، بالاضافة الى ذلك ، اننا عملنا حقل في كل من الاستعلامين ، وربطنا الاستعلامين بهذين الحقلين ، وهذين الحقلين ليسا مفهرسين !! الاقتراح الذي قد يساعد في سرعة البرنامج ، واكيد سيحل مشكلة qry_Union هو ان نغير عمل الاستعلامين: 1. بالنسبة الى الاستعلام الاول (ولا يهم ايهم) ، غيّره الى "استعلام عمل جدول" ، بحيث نتائجه ستحفظ في هذا الجدول الجديد ، ولنسميه tbl_all ، 2. والاستعلام الاخر غيّره الى استعلام "الحاق" ، وتُلحق البيانات الى نفس الجدول الجديد tbl_all ، 3. بهذه الطريقة لن نحتاج الى qry_Union ، واجعل الاستعلام qry_Results يأخذ بياناته من الجدول tbl_all جعفر
-
لازلت في انتظار الجواب على السؤال اعلاه ، لأنه سيفيدنا في جلب التاريخ الناقص في التقرير (انظر المربع الاحمر في الصورة الاخيرة): الاستعلام التالي تم اخذه من التقرير rpt_Follow4 وتحويله من SQL الى استعلام . ونتائجه 32 سجل . جلبت احد الجداول التي استعملها في الكثير من برامج ، tbl_Months ، وفيه ايام الاسبوع حسب ترقيمهم في الكود . عملت استعلام جديد فيه جميع ايام الاسبوع (ما عدا الجمعة والسبت والسجلات الفاضية) ، ولجلب eSIS من tbl_Follow4 ، وبما اننا سنحتاج الى الاسم ايضا ، فاضطررنا لإستخدام الجدول StudentNames . والنتيجة فيها الايام التي نريدها (الايام التي لا يكون فيها الطالب غائب او متأخر) ، لاحظ عندنا 35 سجل . والان الى الاستعلام الذي سيربط الاستعلامات السابقة ، ولاحظ العلاقة بين الاستعلامات . ونتيجته ، ورجاء الملاحظة اننا من الان سنعتمد على الحقل eSIS وليس IDnum في التقرير . والان نحن بحاجة الى تعديل في التقرير قليلا ليتماشى مع المتغيرات . والنتيجة النهائية للتقرير ، وستلاحظ ان التاريخ غير موجود (طبعا غير موجود ، لأن البرنامج يسجل تاريخ الغياب و التأخير) ، فاذا اردنا الحصول على هذا التاريخ ، فيجب الاجابة على سؤالي في المشاركة السابقة . جعفر 459.1.AbsentLate 2016.accdb.zip
-
بالنسبة الى ثانيا ، فعندي سؤال: كيف ستطبع التقرير ، هل سيكون بين تاريخين اسبوعيا ، او بين تاريخين شهريا؟ لأن الفكرة التي عندي هي ادخال الايام كلها في التقرير يدويا ، ثم عن طريق الكود ندخل البيانات لليوم الصحيح ، وهذا يعتمد على اجابتك لسؤالي اعلاه جعفر
-
وعليكم السلام أستاذ علي بالنسبة الى اولا: المفروض ان النموذج الرئيسي يكون غير مضمن وغير مربوط مع الجدول tbl_Follow4 ، لانك لا تستخدمه لإدخال/استخراج بيانات ، لذا احذف اسم الجدول كمصدر للسجلات: . والسبب الاساسي في عمل سجل فاضي ، هو ادخالك معلومة في الحقل Grade في الجدول ، والمعلومة هي "" اي لا شئ ، اي انك حولت الحقل من Null الى Nothing بينما اسم الحقل الذي يجب ان يكون في الكود هو sGrade مثل sSection . جعفر
-
-
استفسار : طريقة استيراد اكثر من ورقة عمل للاكسس
jjafferr replied to مبرمج على يديكم's topic in قسم الأكسيس Access
وعليكم السلام همم ، طيب ايش رايك في هذين الرابطين: و جعفر -
الحاق ايام محددة بين تاريخين بالجدول المرتبط
jjafferr replied to kaser906's topic in قسم الأكسيس Access
هلا والله وهاي الكود الكامل بالتعديلات: Private Sub cmd1_Click() 'التاكد ان الحقول المطلوبة تم اختيارها في النموذج If Len(Me.StarteDate & "") = 0 Then MsgBox "رجاء ادخال تاريخ البداية" Me.StarteDate.SetFocus Exit Sub ElseIf Len(Me.EndDate & "") = 0 Then MsgBox "رجاء ادخال تاريخ النهاية" Me.EndDate.SetFocus Exit Sub ElseIf (Len(Me.iSunday & "") = 0 Or Me.iSunday = 0) And _ (Len(Me.iMonday & "") = 0 Or Me.iMonday = 0) And _ (Len(Me.iTuesday & "") = 0 Or Me.iTuesday = 0) And _ (Len(Me.iWednesday & "") = 0 Or Me.iWednesday = 0) And _ (Len(Me.iThursday & "") = 0 Or Me.iThursday = 0) Then MsgBox "رجاء الاختيار من ايام التدريب" Exit Sub End If Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2") 'عدد الايام بين يومي البداية والنهاية How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate) For i = 0 To How_Many_Days Next_Date = UmDateAdd("d", i, Me.StarteDate) 'التاريخ الهجري التالي Next_Day2 = UmWeekDayName(UmWeekday(Next_Date)) 'اليوم التالي Next_Day = UmWeekday(Next_Date) 'اليوم التالي بالرقم Next_Date = UmFormat(Next_Date, "yyyy/mm/dd") 'تغيير تنسيق التاريخ 'Debug.Print Next_Day & "-" & Next_Day2 'MsgBox Next_Date & " " & Next_Day add_Day = "" 'اذا تم اختيار اليم في النموذج ، ما هو اليوم If Me.iSunday = -1 And Next_Day = 1 Then add_Day = "الاحد" '"Sunday" ElseIf Me.iMonday = -1 And Next_Day = 2 Then add_Day = "الاثنين" '"Monday" ElseIf Me.iTuesday = -1 And Next_Day = 3 Then add_Day = "الثلاثاء" '"Tuesday" ElseIf Me.iWednesday = -1 And Next_Day = 4 Then add_Day = "الاربعاء" '"Wednesday" ElseIf Me.iThursday = -1 And Next_Day = 5 Then add_Day = "الخميس" '"Thursday" End If 'لدينا تاريخ يجب ادخاله If add_Day <> "" Then 'ولكن هل تم ادخال هذا التاريخ سابقا لهذا PCDigit rst.FindFirst "[PcDigit]=" & Me.PcDigit & " And [TDate] ='" & Next_Date & "'" If rst.NoMatch Then 'غير موجود rst.AddNew rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id rst.Update Else 'موجود MsgBox "الموظف رقم " & Me.PcDigit & vbCrLf & _ "يوجد لديه تدريب سابق يوم " & add_Day & vbCrLf & _ "بتاريخ " & Next_Date & vbCrLf & vbCrLf & _ "هذا التاريخ لم يتم ادخاله مرة اخرى" End If End If Next i rst.Close: Set rst = Nothing End Sub وهاي المرفق النهائي جعفر 471.tdate.mdb.zip -
الحاق ايام محددة بين تاريخين بالجدول المرتبط
jjafferr replied to kaser906's topic in قسم الأكسيس Access
تفضل استعمل هذا السطر بدل اللي في الكود: For i = 0 To How_Many_Days يعني استعملنا الصفر بدل الواحد. جعفر -
الحاق ايام محددة بين تاريخين بالجدول المرتبط
jjafferr replied to kaser906's topic in قسم الأكسيس Access
تفضل اضف السطر الرابع للكود ، وفي هذا المكان المحدد Next_Date = UmDateAdd("d", i, Me.StarteDate) 'التاريخ الهجري التالي Next_Day2 = UmWeekDayName(UmWeekday(Next_Date)) 'اليوم التالي Next_Day = UmWeekday(Next_Date) 'اليوم التالي بالرقم Next_Date = UmFormat(Next_Date, "yyyy/mm/dd") 'تغيير تنسيق التاريخ جعفر -
سؤال فى قاعدة بيانات تخص اضافة صور مرتبطة
jjafferr replied to ابو جودي's topic in قسم الأكسيس Access
لا والله ما نسيت ، ولكني انشغلت بمواضيع المنتدى ومحاولة مساعدة الباقين -
الحاق ايام محددة بين تاريخين بالجدول المرتبط
jjafferr replied to kaser906's topic in قسم الأكسيس Access
حياك الله 1. الكود يأخذ اي تاريخ هجري (والكود الذي وضعته انت اصلا يخص ام القرى) ، فما في مشكلة ، 2. اعمل نموذج على اساس الجدول Tbl_2 ، وتستطيع ان تغير فيه كما تشاء ، 3. في تنسيق التاريخ لحقل التاريخ ، انت ادخلته كـ dd/mm/yyyy ، والذي يجب ان تعمله هو yyyy/mm/dd ، هذا اذا اردت الرقم 1 يكون 01 (اي رقمين ، وانا انصحك بهذا ، حيث لن تتعب في الفرز) ، بينما اذا اردت التنسيق رقم واحد مثل ما اشرت في مثالك ، فالتنسيق سيكون yyyy/m/d جعفر -
طيب في طريقة اخرى: نعمل ملف mdb خارجي مؤقت في نفس مجلد البرنامج، ونصدر الكلمات اليه ، ونعمل في برنامجك استعلام يأخذ البيانات هذا من الملف الخارجي ، وبالطريقة هذه ، لن يكون هناك ضغط على برنامجك!! هل تصلح لك هذه الطريقة؟ جعفر
-
سجلات ثابتة بشكل قالب وقيمة محسوبة لاحدها
jjafferr replied to محمدنجار's topic in قسم الأكسيس Access
-
سجلات ثابتة بشكل قالب وقيمة محسوبة لاحدها
jjafferr replied to محمدنجار's topic in قسم الأكسيس Access
تفضل جعفر 467.Panel_Calc Value.mdb.zip -
الحاق ايام محددة بين تاريخين بالجدول المرتبط
jjafferr replied to kaser906's topic in قسم الأكسيس Access
أخي كاسر تم تغيير الكود بحيث لا يقرا اليوم ، وانما رقم اليوم في الكود ، فعليه ، المفروض ان يعمل البرنامج الان على جميع الاجهزة ، وهذا هو الكود المُعدل: Private Sub cmd1_Click() 'التاكد ان الحقول المطلوبة تم اختيارها في النموذج If Len(Me.StarteDate & "") = 0 Then MsgBox "رجاء ادخال تاريخ البداية" Me.StarteDate.SetFocus Exit Sub ElseIf Len(Me.EndDate & "") = 0 Then MsgBox "رجاء ادخال تاريخ النهاية" Me.EndDate.SetFocus Exit Sub ElseIf (Len(Me.iSunday & "") = 0 Or Me.iSunday = 0) And _ (Len(Me.iMonday & "") = 0 Or Me.iMonday = 0) And _ (Len(Me.iTuesday & "") = 0 Or Me.iTuesday = 0) And _ (Len(Me.iWednesday & "") = 0 Or Me.iWednesday = 0) And _ (Len(Me.iThursday & "") = 0 Or Me.iThursday = 0) Then MsgBox "رجاء الاختيار من ايام التدريب" Exit Sub End If Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From Tbl_2") 'عدد الايام بين يومي البداية والنهاية How_Many_Days = UmDateDiff("d", Me.StarteDate, Me.EndDate) For i = 1 To How_Many_Days Next_Date = UmDateAdd("d", i, Me.StarteDate) 'التاريخ الهجري التالي Next_Day2 = UmWeekDayName(UmWeekday(Next_Date)) 'اليوم التالي Next_Day = UmWeekday(Next_Date) 'اليوم التالي بالرقم 'Debug.Print Next_Day & "-" & Next_Day2 'MsgBox Next_Date & " " & Next_Day add_Day = "" 'اذا تم اختيار اليم في النموذج ، ما هو اليوم If Me.iSunday = -1 And Next_Day = 1 Then add_Day = "الاحد" '"Sunday" ElseIf Me.iMonday = -1 And Next_Day = 2 Then add_Day = "الاثنين" '"Monday" ElseIf Me.iTuesday = -1 And Next_Day = 3 Then add_Day = "الثلاثاء" '"Tuesday" ElseIf Me.iWednesday = -1 And Next_Day = 4 Then add_Day = "الاربعاء" '"Wednesday" ElseIf Me.iThursday = -1 And Next_Day = 5 Then add_Day = "الخميس" '"Thursday" End If 'لدينا تاريخ يجب ادخاله If add_Day <> "" Then 'ولكن هل تم ادخال هذا التاريخ سابقا لهذا PCDigit rst.FindFirst "[PcDigit]=" & Me.PcDigit & " And [TDate] ='" & Next_Date & "'" If rst.NoMatch Then 'غير موجود rst.AddNew rst!TDate = Next_Date: rst!TDay = add_Day: rst!PcDigit = Me.PcDigit: rst!auto_id = Me.auto_id rst.Update Else 'موجود MsgBox "الموظف رقم " & Me.PcDigit & vbCrLf & _ "يوجد لديه تدريب سابق يوم " & add_Day & vbCrLf & _ "بتاريخ " & Next_Date & vbCrLf & vbCrLf & _ "هذا التاريخ لم يتم ادخاله مرة اخرى" End If End If Next i rst.Close: Set rst = Nothing End Sub جعفر 471.tdate.mdb.zip -
هل تريدين ان اصدر البيانات الى الاكسل؟ جعفر
-
الحاق ايام محددة بين تاريخين بالجدول المرتبط
jjafferr replied to kaser906's topic in قسم الأكسيس Access
الحمدلله ، اهم شئ هو الدخول في الكود الشئ الذي يأتي على بالي الآن هو ، ان تنصيب الوندوز عندي انجليزي ، واعتقد عندك عربي ، لهذا السبب ايام الاسبوع قد تكون عندك بالعربي ، بينما هي عندي بالانجليزي ، لذا ، اضف السطر الثالث الى الكود : Next_Date = UmDateAdd("d", i, Me.StarteDate) 'التاريخ الهجري التالي Next_Day = UmWeekDayName(UmWeekday(Next_Date)) 'اليوم التالي debug.print Next_Day . ثم شغل النموذج واضغط على زر الحفظ ، ثم ادخل في الكود واضغط على Ctrl + G او انظر للصورة: . وانسخ لي الاسماء التي في المربع الاحمر الى الموقع لوسمحت ، فانا اشك انها بالعربية ، واريد الاسم بالضبط كما يراه الكمبيوتر جعفر -
الظاهر يا اختي اننا لا نتكلم عن نفس الشئ!! فقد قمت بعمل المطلوب في مشاركاتي السابقة ، ويوجد لديك جدول مؤقت اسمه Table2 ، فما عليك إلا ان تعملي استعلام منه واذا لم يكن هذا قصدك ، فاعتقد انه من الافضل ان اتوقف انا ، وان يواصل معك الاستاذ رمهان ، فقد ينظر للموضوع من وجهة نظر اخرى جعفر