بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
3324 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
131
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
بعد هذه الصورة لا اعتقد انه يوجد لدي ما أزيد به .. تم التنفيذ والتجربة على نسخة أوفيس 2010 !! رغم انها على إصدار 2019 أيضاً كانت النتيجة كما في الصور التي ارفقتها سابقاً .. ولكن قد تكون المشكلة كما خطر لي بأن تكون في تنسيق التاريخ وباختلاف نمط التاريخ .. على العموم جرب المرفق وأخبرنا بالنتيجة 👀 . تأجيل الاقتطاع.zip
-
أخي @طاهر اوفيسنا ، أولاً تقبل الله طاعاتكم ، وكل عام وأنتم بخير ,, جرب التعديل التالي بإزالة التنسيق من التاريخ فقط !! Private Sub cmd_Do_Changes_Click() Dim rst As DAO.Recordset Dim Dat As Date Dim Remarks As String Dim i As Integer Me.Month_From = DateSerial(Year(Me.Month_From), Month(Me.Month_From), 1) If Me.Month_From < Me.DiscountStartDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أصغر من شهر بداية الإقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub ElseIf Me.Month_From > Me.DiscountEndDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أكبر من شهر نهاية أخر إقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub End If If Me.OpenArgs = "frmCridi" Then MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Cridi'" Loan_Type = "Cridi" r = "" Else MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Elec'" Loan_Type = "Elec" r = "" End If Set rst = CurrentDb.OpenRecordset(MySQL) For i = 0 To Me.Number_Of_Months - 1 Dat = DateAdd("m", i, Me.Month_From) rst.FindFirst "[Payment_Month]=#" & Dat & "#" If Not rst.NoMatch Then Remarks = rst!Remarks rst.Edit rst!Loan_Made = 0 rst!Remarks = Remarks & " | " & "تأجيل الإقتطاع إلى تاريخ " & DateAdd("m", i + 1, Me.DiscountEndDate) rst.Update End If rst.AddNew rst!EmployeeID = Me.EmployeeID rst!Loan_ID = Me.Loan_ID rst!Auto_Date = Me.AwardMonth rst!Payment_Month = DateAdd("m", i + 1, Me.DiscountEndDate) rst!Loan_Made = Me.DiscountPerMonth rst!Loan_Type = Loan_Type rst!Remarks = Remarks rst!annee = Year(Date) rst.Update Next i rst.Close: Set rst = Nothing Forms!frmCridi!Frm_sub!DiscountEndDate = DateAdd("m", Me.Number_Of_Months, Forms!frmCridi!Frm_sub!DiscountEndDate) Forms!frmCridi!Frm_sub!Obsérvation = Forms!frmCridi!Frm_sub!Obsérvation & " | " & _ "تأجيل الإقتطاع لمدة " & GetMoisName(i) I2 = Forms!frmCridi!Frm_sub!ID Forms!frmCridi!Frm_sub.Form.Requery Set rst = Forms!frmCridi!Frm_sub.Form.RecordsetClone rst.FindFirst "[ID]=" & I2 Forms!frmCridi!Frm_sub.Form.Bookmark = rst.Bookmark MsgBox ("تم تأجيل الإقتطاع لمدة " & GetMoisName(i)) DoCmd.Close End Sub تأجيل الاقتطاع.zip
-
نرجوا منكم أخي @أبو أحمد الفاضل ، تقييم أفضل إجابة لصاحب الحل ، وليس لردكم الكريم 😇 .
-
عيدكم مبارك جميعاً ، وتقبل الله منا ومنكم صالح الأعمال والطاعات 🤲🏻.
-
حسناً ، سأحاول غداً تثبيت نسخة اوفيس 2010 ، وتجربة المرفق على إصدار آخر والعمل على التعديل بناءً عليه .. مع انني لا اعلم ما هو سبب اختلاف النتيجة بين الإصدارين .
-
نرجو من احد الإخوة والاساتذة الذي يمرون من هنا تجربة المرفق واخبارنا بالنتيجة .. تأجيل الاقتطاع.zip
-
وعليكم السلام ورحمة الله وبركاته .. ارجو منك ان لا تبخل على نفسك بالشرح الوافي للمشكلة .!!!! في اي استعلام تحدث مشكلتك ، ما طبيعة المشكلة بالتفصيل ..... الخ كما ان العنوان مخالف لسياسة المنتدى وقوانينه
-
لا اعلم ماذا أقول ، ولكن هذه الصورة أيضاً كفيلة بالإجابة .. اعتقد ان المشكلة لديك في إصدار الآكسيس تم تحميل المرفق من المشاركة نفسها ، والنتيجة أعلاه توضح ما تم تنفيذه . علماً انني استخدم إصدار 2016 - 64 بت
-
وهذه نتيجة الكود الأصلي في المشاركة الأولى لك ( أساس الموضوع ) :- هل قمت بتحميل المرفق الذي ارفقته لك ؟؟
-
-
بناءً على ما فهمت من المطلوب ، هو اضافة سجلات = عدد الاشهر التي تم تأجيلها ، بشرط ان يتم تأجيل الدفعة ( القيمة ) الى الاشهر الجديدة ؛ صحيح ؟ جرب ها التعديل !!! Private Sub cmd_Do_Changes_Click() Dim rst As DAO.Recordset Dim Dat As Date Dim Remarks As String Dim i As Integer Me.Month_From = DateSerial(Year(Me.Month_From), Month(Me.Month_From), 1) If Me.Month_From < Me.DiscountStartDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أصغر من شهر بداية الإقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub ElseIf Me.Month_From > Me.DiscountEndDate Then MsgBox "آسف, شهر التأجيل الذي أدخلته أكبر من شهر نهاية أخر إقتطاع" & vbCrLf & _ "يرجى التصحيح وحاول مرة أخرى" Exit Sub End If If Me.OpenArgs = "frmCridi" Then MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Cridi'" Loan_Type = "Cridi" r = "" Else MySQL = "Select * From tbl_Loans Where Loan_ID = " & Me.Loan_ID & " And Loan_Type='Elec'" Loan_Type = "Elec" r = "" End If Set rst = CurrentDb.OpenRecordset(MySQL) For i = 0 To Me.Number_Of_Months - 1 Dat = Format(DateAdd("m", i, Me.Month_From), "yyyy-mm-dd") rst.FindFirst "[Payment_Month]=#" & Dat & "#" If Not rst.NoMatch Then Remarks = rst!Remarks rst.Edit rst!Loan_Made = 0 rst!Remarks = Remarks & " | " & "تأجيل الإقتطاع إلى تاريخ " & Format(DateAdd("m", i + 1, Me.DiscountEndDate), "DD-MM-YYYY") rst.Update End If rst.AddNew rst!EmployeeID = Me.EmployeeID rst!Loan_ID = Me.Loan_ID rst!Auto_Date = Me.AwardMonth rst!Payment_Month = DateAdd("m", i + 1, Me.DiscountEndDate) rst!Loan_Made = Me.DiscountPerMonth rst!Loan_Type = Loan_Type rst!Remarks = Remarks rst!annee = Year(Date) rst.Update Next i rst.Close: Set rst = Nothing Forms!frmCridi!Frm_sub!DiscountEndDate = DateAdd("m", Me.Number_Of_Months, Forms!frmCridi!Frm_sub!DiscountEndDate) Forms!frmCridi!Frm_sub!Obsérvation = Forms!frmCridi!Frm_sub!Obsérvation & " | " & _ "تأجيل الإقتطاع لمدة " & GetMoisName(i) I2 = Forms!frmCridi!Frm_sub!ID Forms!frmCridi!Frm_sub.Form.Requery Set rst = Forms!frmCridi!Frm_sub.Form.RecordsetClone rst.FindFirst "[ID]=" & I2 Forms!frmCridi!Frm_sub.Form.Bookmark = rst.Bookmark MsgBox ("تم تأجيل الإقتطاع لمدة " & GetMoisName(i)) DoCmd.Close End Sub تأجيل الاقتطاع.zip
-
فكرة الكود جميلة ، ولا بأس بها ، سلمت على الفكرة . لي تعقيب واحد على ما أظن من خلال قراءة الكود ... في الجزء التالي :- For Each subFld In fld.SubFolders totalSize = totalSize + GetFolderSize(subFld) Next subFld يتم حجز مساحة في الذاكرة بشكل رهيب جداً ومتكرر بسبب تكرار الإستدعاء = For Each ، وخصوصاً مع المجلدات الكبيرة الحجم !!! وبالتالي سيكون الأداء بطيء جداً عند الإفتراض أن مجلد رئيسي يحتوي 10 مجلدات فرعية - على سبيل المثال - ونريد جلب حجم هذا المجلد ، فأن الكود سيقوم بتخزين الأمر مكرراً 10 مرات في الذاكرة وبالتالي قد ينتج عنه أخطاء إما في جلب البيانات ( حجم المجلد ) أو عدم دقتها ، أو سينتج الخطأ Overflow في نهاية المطاف . كما أنها لا تدعم الإيقاف أو ( ايقاف العملية ) وبالتالي قد تستمر العملية لوقت طويل دون تحكم . وهذه بالنسبة لي الطريقتين التي فهمتهما لاستدعاء الدوال في الكود الذي اقترحته .. 'مثال على مسار مجلد محدد في الكود Sub ExampleGetFolderSize() Dim folderPath As String Dim result As String folderPath = "C:\Intel" result = GetFileInfo( _ inputPath:=folderPath, _ fileType:=ftFolder, _ infoType:=itSizeOnly, _ decimalPlaces:=2 _ ) MsgBox "حجم المجلد: " & result End Sub ' مثال على استخدام مربع حوار لاختيار المجلد Sub ExampleWithFolderPicker() Dim result As String result = GetFileInfo( _ fileType:=ftFolder, _ infoType:=itSizeOnly _ ) If result <> "لم يتم اختيار مجلد" Then MsgBox "حجم المجلد: " & result End If End Sub هذا من وجهة نظري ، ولا أحاول الخروج عن سياق الموضوع .
-
للأسف ، تمت الإجابة التي لا مفر منها مسبقاً في هذه المشاركة .. ولكن يبدو أن صديقنا لم يقتنع بها 😇.
-
ليس عليك اختيار إجابتي كأفضل إجابة ما لم تكن تريدها بهذا الشكل ، ولكن على العموم شكراً لك وللأسف ليس لدي فكرة كالتي تريدها
-
ارفق ملف قاعدة البيانات للإطلاع عليه يا صديقي
-
وهذه مشاركة بطريقة أخرى ، مشاركةً مع معلمي الجليل و والدنا العزيز الأستاذ @ابوخليل .. فكرتين ، الأولى هي بجعل الزر يفتح التقرير بشرطين = DoCmd.OpenReport "qrbook", acViewPreview, , , , Me.fsldrase.Column(1) & ";" & Me.drase.Column(1) وأن نجعل الحدث عند التحميل للتقرير = Dim args As Variant If Not IsNull(Me.OpenArgs) Then args = Split(Me.OpenArgs, ";") Me.Tx_Fasl = args(0) Me.Tx_Yer = args(1) End If والفكرة الثانية كما أشار أستاذي في مشاركته تماماً .. ومرفق زرين كل واحد منهما بطريقة نموذج بحث شامل 1.accdb
-
وعليكم السلام ورحمة الله تعالى وبركاته.. هذا الخطأ دلالة على ان ملف قاعدة البيانات تالف وغير صالح 🥴 ، طيب هل جربت انك تعمل قاعدة بيانات جديدة وتستورد العناصر والمكونات من القاعدة القديمة التالفة الى الجديدة ؟؟ هي مجرد فكرة طبعاً ، أو انك تفتح قاعدة البيانات باستخدام مفتاح Shift وتحاول تعمل ضغط وإصلاح 🤔 ؟؟ مجرد إحتمالات ما لم ترفق ملف القاعدة.
-
وعليكم السلام ورحمة الله تعالى وبركاته.. تقدر تستخدام حدث "On Key Down" في النموذج للتحقق مما إذا كان المستخدم قد ضغط على Ctrl + T أو Ctrl + D ثم تغيير خصائص التعديل والحذف بناءً على ذلك . بس طبعاً لازم تتأكد أن خاصية Key Preview في النموذج = Yes 😅 وإلا فلن نستفيد من الكود التالي :- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyT And (Shift And acCtrlMask) <> 0 Then Me.AllowEdits = True MsgBox "تم تفعيل التعديل", vbInformation End If If KeyCode = vbKeyD And (Shift And acCtrlMask) <> 0 Then Me.AllowDeletions = True MsgBox "تم تفعيل الحذف", vbInformation End If End Sub جرب النتيجة النهائية وأخبرنا بها 😇
-
أصبحنا اثنين 😅 . بالفعل ، نقص المعطيات يجعل من الإجابة غير دقيقة ، أضف إلى ذلك ان التقرير فارغ لا يحتوي اي عناصر حتى نستدل على الهدف المطلوب 🥴 .
-
لماذا لم تفلح ، البداية إلى الآن جيدة .. لكن كنصائح للتذكير ليس إلا :- 1. ابتعد عن المسميات العربية للحقول والجداول والعناصر في النماذج والتقارير .. إلخ . 2. ابتعد عن المسميات التي تتكون من مقطعين ، بل حاول استخدام أي رمز مسموج للفصل بين الكلمات على سبيل المثال :- خاطئ = ( Tbl Customer ) الصحيح = ( Tbl_Customer ) . 3. لا تستعمل أسماء محجوزة أو ممنوعة من الاستخدام ، على سبيل المثال أن يكون لديك حقل اسمه Date أو Form .... إلخ ، لأنها ستسبب لك الكثير من المشاكل في العمل لاحقاً . اعتقد هذا ما يخطر ببالي حالياً . أما بخصوص تحويلك لفكرة موقع HTML الى آكسيس فهذا سيتطلب منك جهداً لاحقاً ( ليس لإحباطك ) وإنما لتكون الفكرة واضحة أمامك .
-
وعليكم السلام ورحمة الله وبركاته ،، أخي الكريم انت تبحث عن مشرع كامل وليس حل لمشكلة محددة !! ليت باستطاعتي الإفادة والمساعدة ، ولكن عل أحد الأخوة ممن لديه وقت وتفرغ ان يساعد . ولكن لم لا تحاول بالجداول أولاً ؟؟؟؟ فعلى الأغلب ، ستحتاج جداول مثل ( المحافظات ، السلع واسعارها وأنواعها ، التاجر ، العميل ... إلخ ) ابدأ خطوتك البسيطة وأكيد ستجد الكثير من الحلول والمساعدات والأفكار قد هلّت عليك .
-
انا عن نفسي مش عايز اتكلم ، أحسن تقول لي إنت بتكدبني ؟؟؟؟ 🤣 المشكلة إنه سبق وتصادمنا في كتير مواقف بجنب بعض بالأفكار ، ومش حينفع إني أأكد كلامك بإن مفيش دماغ اصلاً ،
- 28 replies
-
- 2
-
-
- سن التقاعد
- حساب سن التقاعد
-
(و26 أكثر)
موسوم بكلمه :
- سن التقاعد
- حساب سن التقاعد
- حساب العمر
- حساب العمر بالسنة فقط
- سن التقاعد تبعا للقانون المصرى
- قانون المعاشات الجديد 148 لسنة 2019
- حساب سن المعاش
- حساب سن المعاش تبعا للقانون المصرى
- سن المعاش
- شخابيط وافكار
- شخابيط وأفكار
- شخابيط ابو جودى
- شخابيط
- ابو جوى
- ابوجودى
- ابو جودى
- ابو جودي
- أوفيسنا
- اوفيسنا
- منتديات اوفيسنا
- منتديات أوفيسنا
- قسم الاكسس
- الاكسس
- مايكروسوفت اكسس
- microsoft access
- ms access
- المعاش
- التقاعد
-
فتح سجل محدد عن طريق حقل كومبوبوكس في نموذج
Foksh replied to فؤاد الدلوي's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته .. وكالعادة ننوه ونذكر وننصح أخواننا في طلباتهم ومشاركاتهم أن يبتعدوا عن المسميات التي باللغة العربية والتي تحتوي مسافات ( أكثر من كلمة ) ولكن بلا جدوى ، و والله أن النصيحة ليست لي أو لأي شخص يقوم بتقديم حل لأي مشكلة بقدر ما هي ستعود بالفائدة التعليمية وصحة ودقة النتائج العملية لصاحب المشاركة والملف .. على العموم ، قد أعجبتني فكرة الأستاذ @ابو عارف ، فهي بسيطة و تلبي الحاجة المطلوبة بشكل جيد ، ولي رغبة في مشاركته أفكاره بعدة حلول ، أذكر منها حلين في مرفقين اثنين . الأول في الملف المرفق (test (1)) ، في حدث بعد التحديث للكومبوبوكس :- Private Sub اسم_الصنف_AfterUpdate() Dim selectedForm As String Dim currentID As Long selectedForm = Me.اسم_الصنف.Value currentID = Me.ID.Value If Not IsNull(selectedForm) Then DoCmd.OpenForm selectedForm, acNormal, , , , , currentID Else MsgBox "يرجى اختيار قيمة صحيحة!", vbExclamation End If End Sub بحيث يتم تطبيق الفلترة في حدث عند التحميل للنماذج الـ 3 = A,B,C التي ذكرها أخونا الكريم في طلبه :- Private Sub Form_Load() Dim recordID As Long If Not IsNull(Me.OpenArgs) Then recordID = CLng(Me.OpenArgs) Me.Filter = "[ID] = " & recordID Me.FilterOn = True If Not IsNull(Me!نموذج_فرعي_qa) Then Me!نموذج_فرعي_qa.Form.Filter = "[ID] = " & recordID Me!نموذج_فرعي_qa.Form.FilterOn = True End If Else MsgBox "لم يتم تمرير رقم السجل بشكل صحيح", vbExclamation End If End Sub الثاني في الملف المرفق (test (2)) ، في حدث بعد التحديث للكومبوبوكس :- Private Sub اسم_الصنف_AfterUpdate() Dim selectedForm As String Dim currentID As Long selectedForm = Me.اسم_الصنف.Value currentID = Me.ID.Value If Not IsNull(selectedForm) Then DoCmd.OpenForm selectedForm, acNormal, , , , , currentID Else MsgBox "يرجى اختيار قيمة صحيحة", vbExclamation + vbMsgBoxRight End If End Sub وتم نقل الكود لضمان عدم تكراره في النماذج الى وحدة نمطية مع إجراء بعض التعديلات ، بحيث يصبح الكود منفصلاً كالتالي :- Public Sub ApplyRecordFilter(frm As Form, Optional subFormName As String = "", Optional recordID As Variant) If IsNull(recordID) Or recordID = "" Then MsgBox "لم يتم تمرير رقم السجل بشكل صحيح", vbExclamation + vbMsgBoxRight Exit Sub End If frm.Filter = "[ID] = " & recordID frm.FilterOn = True If subFormName <> "" Then On Error Resume Next If Not IsNull(frm.Controls(subFormName)) Then frm.Controls(subFormName).Form.Filter = "[ID] = " & recordID frm.Controls(subFormName).Form.FilterOn = True Else MsgBox "لم يتم العثور على النموذج الفرعي " & subFormName, vbExclamation + vbMsgBoxRight End If On Error GoTo 0 End If End Sub والإستدعاء يكفينا في النماذج الفرعية كالتالي :- Private Sub Form_Load() ApplyRecordFilter Me, "نموذج_فرعي_qa", Me.OpenArgs End Sub قمنا بتمرير قيمة الـ ID إلى النموذج الرئيسي باستخدام OpenArgs لأنها طريقة آمنة وموثوقة بالنسبة لي ، ثم سنطبق الفلتر داخل حدث تحميل النموذج ( On Load ) مباشرة بعد أن يفتح بالكامل وفي الفكرتين لن نحتاج أي روابط بين الحقول ( Link Master Fields & Link Child Fields ) لأننا سنعتمد على الفلتر يدوياً . المرفقات للطريقتين :- test (1).accdb test (2).accdb