بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9914 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
تفضل والكود: Function check_both_combos() 'No work without Sinf If Len(Me.cmb_sinf & "") = 0 Then MsgBox "Please select a Sinf" Me.cmb_sinf.SetFocus Exit Function End If If Len(Me.cmb_daraja & "") = 0 Then 'Only Sinf is selected Me.Sinf_Est = DLookup("[rakm istid]", "khibra", "[sinf]=" & Me.cmb_sinf) Me.Daraja_Est = "" Else 'both Sinf and Daraja are selected Me.Sinf_Est = DLookup("[rakm istid]", "khibra", "[sinf]=" & Me.cmb_sinf) Me.Daraja_Est = DLookup("[istidlal]", "khibra", "[sinf]=" & Me.cmb_sinf & " And [daraja]=" & Me.cmb_daraja) End If End Function Private Sub cmb_daraja_AfterUpdate() Call check_both_combos End Sub Private Sub cmb_sinf_AfterUpdate() Call check_both_combos End Sub Private Sub cmb_sinf_DblClick(Cancel As Integer) Me.cmb_sinf = "" Call check_both_combos End Sub Private Sub cmb_daraja_DblClick(Cancel As Integer) Me.cmb_daraja = "" Call check_both_combos End Sub جعفر 260.الشبكة الإستدلالية للمرتبات.accdb.zip
-
حياك الله يعني انت اخترت الطريقة الاولى او الثانية ، فقط للعلم جعفر
-
وعليكم السلام . أخي M_Hasanin انا مررت على هذا السؤال عدة مرات ، ولكني لم افهم الطلب فتركته ، فياريت لو انك تأخذ منك وقتك وتعطينا تفصيل عن سؤالك حتى نستطيع ان نساعدك . الآن وبفضل أخي الاستاذ علي ، قد عرفت ان الموضوع عن طباعة التقرير ، والجواب انه لا يمكن ان تجعل هوامش التقرير (اليمين او اليسار) = 0 ، والسبب ليس اكسس ، وانما الطابعة تحتاج مكان لجعل بكراتها من جانبي الورقة ، تسحب الورقة من الجانبين ، فهذا الهامش تحتفظ به الطابعة لنفسها ، ويختلف هذا الهامش من طابعة الى اخرى. والدليل: في التقرير ، في صفحة اعدادات الطابعة ، اختر الطابعة ، اجعل الهوامش الاربعة = 0 ، احفظ التقرير ، اغلق التقرير ، ثم افتح الاعدادات مرة اخرى ، ستجد ان التخاطب بين اكسس والطابعة نتج عنه اقل الهوامش التي تحتاج اليها الطابعة وللعلم ، اذا عملت التقرير على هوامش طابعتك ، ثم اخذتها لكمبيوتر آخر فيه طابعة اخرى ، فالهوامش سوف تتغير هناك ايضا الحل هو ، إما تصغر حجم الخط وحجم الحقول ، او تقلل عدد الحقول، او تختار الصفحة بالعرض ، او انك تلعب بمخطط التقرير ، وتوزع الحقول بطريقة غير اعتيادية ، بحيث تشمل جميع الحقول المطلوبة جعفر
-
السلام عليكم ورحمة الله وبركاته كنت اشتغل على برنامج يتطلب مني ان اعمل في نموذج رئيسي حوالي 6 نماذج فرعية على هيئة تبويب. للتجربة ، استعملت قاعدة بيانات تجريبية فيها جداول بمجموع 189,450 سجل (في الواقع قاعدة البيانات التجريبية عندي فيها اكثر من مليون سجل ، ولكن لكي ارفع البرنامج للموقع ، اضطررت ان اصغر قاعدة البيانات ) ، حتى اعرف الوقت الذي يأخذه النموذج لفتحه ، ومقدار الذاكرة التي يحتاجها الكمبيوتر للقيام بفتح النماذج فقررت ان اضع النتائج بين يديكم ، والكود الذي سوف استخدمه هو Tbl.1 ، حيث مصدر سجلات النماذج هو الجدول مباشرة ، مع بعض الحقول المفهرسة ، والكود هو: DoCmd.OpenForm "frm_Emplyees_Main", , , "[emp_no]=" & Me.cmb_Names والسبب انه اسرع من مثيله ، هو انه نعمل التصفية بحقل رقم ، حيث التصفية بحقل نص يكون ابطأ ، والشئ الآخر الذي فاجئني ، انه يستخدم كمية من الذاكرة اقل من امر الاستعلام Qry.1 !! ، وربما يكون هذا بسبب انني قد استخدمت مربع السرد ، فاتى بالمعلومات مسبقا !! والارقام تختلف قليلا عند استعمال قاعدة البيانات الكبيرة ، والنتيجة ان الكود اعلاه هو الافضل اترك لكم جدول المقارنة ، مع البرنامج النموذج احتاج الى الثواني التاليه لفتحه حجم BE حجم FE اسم الزر/النموذج لا توجد فهرسة لحقول الجداول ، ولا توجد علاقات بين الجداول 0 360KB Frm_Main 6,270MB 450KB Frm_Main, select a name 6,313MB 622KB Qry.1 10,535MB 697KB Tbl.1 Tbl.2 12,354MB 810KB Tbl.3 12,436MB 907KB Tbl.4 النموذج احتاج الى الثواني التاليه لفتحه حجم BE حجم FE اسم الزر/النموذج تم اغلاق البرنامج وعمل فهرسة لبعض الحقول في الجداول ، وعمل علاقات بين الجداول 5,909MB 528KB Qry.1 6,040MB 608KB Tbl.1 Tbl.2 6,744MB 724KB Tbl.3 6,805MB 800KB Tbl.4 جعفر Stress_Test.zip
-
السبب الذي قلت ان جدولك ليس صحيحا لقاعدة البيانات ، هو انك يجب ان تضيف حقل جديد كل شهر ، فالطريقة الصحيحة لعمل الجداول هو اضافة سجلات وليس اضافة حقول وهناك مثل مشهور في قواعد البيانات يقول : الحقول غالية والسجلات رخيصة اما اذا تريد تمشي حالك الان بالجدول الموجود ، ومجرد تريد ان تجمع قيم جميع الحقول ، اعمل استعلام فيه جميع الاسماء ، وننادي منه الدالة Add_Salaries والتي عملناها في الوحدة النمطية ، ونرسل معها اسم الشخص: . وهذا كود الدالة Add_Salaries: Function Add_Salaries(F As String) As Double 'F = Full Name Dim rst As DAO.Recordset Dim fld As Field 'get this Name Record from the table Set rst = CurrentDb.OpenRecordset("Select * From [salary2015+2014] Where Full_Name='" & F & "'") T = 0 'initial Total 'loop through the fields For Each fld In rst.Fields 'Debug.Print fld.Name & vbTab & fld.Value 'skip the Full_Name field name If fld.Name <> "Full_Name" Then 'add the field values T = T + fld.Value End If Next fld 'now send this Total to the query Add_Salaries = T End Function . حيث اننا في الدالة نطلب سجل الشخص من الجدول salary2015+2014 ، ثم نقول بقراءة الحقول وجمعها ، زنرسل النتيجة الى الاستعلام ، فتصبح نتيجة الاستعلام: . جعفر 262.salary2015+2014.accdb.zip
-
وعليكم السلام هناك طريقة افضل لحفظ سجلاتك في الجدول ، فطريقتك مأخوذة من الاكسل مثلا ، وليست صحيحة لقواعد البيانات . عملت لك جدول جديد ، وجلبت لك البيانات اليه: . والبيانات: . وعليه ، عملت عدد 2 استعلام جدولي ، واحد شامل لكل السنوات: . ونتائجه: . واستعلام سنوي (يعني استخدم خاصية التصفية) ، لكل سنة على حدة: . والنتيجة: . جعفر 262.salary2015+2014.accdb.zip
-
أخي الفاضل رمهان الكود الذي استخدمته انت هو: DoCmd.OpenReport "مساعد كشف الارصده", acViewPreview, , Me.تابع4.Form.Filter, acHidden DoCmd.OpenReport "مساعد كشف الارصده", acViewNormal DoEvents DoCmd.Close acReport, "مساعد كشف الارصده" وهو نسخة اخرى من الكود الذي وضعته انا سابقا والظاهر ان سبب عدم عمل كود الطباعة هو ، ان التصفية تتم بعد فتح التقرير !! لقد حاولت ان آخذ مصدر التقرير ، واضع فيه التصفية والفرز مباشرة ، وارجعه إما بصيغة SQL او Recordset ، بحيث يفتح التقرير على التصفية والفرز مباشرة ، ولكن لم افلح جعفر
-
حيا الله أخي وليد انا ما اعرف عن رقم 1 ، فانا استعمل صيغة 2010 ، وياريت المنتدى يعمل استفتاء لمعرفة النتيجة ، اما رقم 2 ، فياريت تخبرنا عن سبب افضليتها ، والاهم من هذا هو ذكر مصدر هذه المعلومة !! جعفر
-
السلام عليكم لوسمحتي تكتبين تفاصيل أكثر عن لماذا أنه غير المطلوب. ولوسمحتي اختي ، اعملي مجموعة تواريخ في الاكسل ، وأمام كل تاريخ أخبريني ماذا تريدين أن تكون النتيجة. جعفر
-
وعليكم السلام تفضل في الواقع انت قمت بمعظم العمل ، انا فقط ركبت الاشياء على بعضها جعفر 260.الشبكة الإستدلالية للمرتبات.accdb.zip
-
تفضلي أختي جربي المرفق. جعفر 256.مثال.accdb.zip
-
سيدي الكريم غير حدث زر الطباعة الى: Private Sub أمر9_Click() 'the print cannot take place directly with the Filter, 'so we have to open the Report in Preview mode, but hidden so the user doesn't feel DoCmd.OpenReport "مساعد كشف الارصده", acViewPreview, , Me.تابع4.Form.Filter, acHidden 'unfortunately, the sorting Order in the Report needs a bit of time to organize PauseTime = 1 ' Set duration. Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop 'now print the Report DoCmd.PrintOut DoCmd.Close acReport, "مساعد كشف الارصده" End Sub جعفر
-
والآن الى الكنز المخزون في صفحة كود الاكسس ، والذي يحتوي على جميع اوامر الاكسس ، و VBA ، و..... افتح صفحة الكود: . إما تضغط على الايقونه الموضحة بالدائرة الحمراء في الصورة اعلاه ، او تضغط على الزر F2 في لوحة المقاتيح ، وستظهر لك هذه الشاشة: . في الشاشة التاليه: 1. اختر اي الاوامر تريد ، VBA او اكسس او ... ، فسترى انواع الاوامر المتوفرة لها في النافذة 2 ، انا اخترت VBA ، 2. ثم اختار نوع الامر الذي تريده ، انا مثلا اردت جميع اوامر التاريخ والوقت ، فسترى جميع اوامر التاريخ والوقت في النافذة 3 ، 3. اختار الامر الذي تريده وانقر عليه ، انا مثلا اخترت الامر DateAdd ، فسترى في الاسفل (4) طريقة كتابة الامر : . وتستطيع كتابة اي امر تريد في خانة البحث (Recordset مثلا) ، وستحصل على جميع الاوامر التابعة له وإخواننا الصعايدة على راسنا جعفر
-
حياك الله وطريقة اخرى لحل الموضوع: http://www.officena.net/ib/topic/64219-كيف-يمكننى-انشاء-وحدة-نمطية-أريد-أن-أتعلم-كل-شئ-عن-الوحدات-النمطية/?do=findComment&comment=421978 جعفر
-
الى هنا والحديث كله عن API ، ولكن استخدام الوحدات النمطية بشكل يومي يتعدى هذه المعلومة ، فمعظم برامجنا تحتاج الى حساب او معادلات او ... ، فهنا يأتي الوحدة النمطية ، وبالذات عند مناداتها من الاستعلام (او النموذج او التقرير)، ففي الاستعلام قد تكون محتاج الى اجراء عملية حسابية لحقل معين ، وقد تكون خطوات هذه العملية كثيرة ، ولا يمكنك عملها في سطر واحد في الاستعلام ، مثلا: الحقل items في الجدول tbl_AHF يحتوي على 3 معلومات مكررة وهي A, H, F نريد ان نقسم الحقل qty على عدد معين (يعتمد على قيمة الحقل items) ، نقسم qty على 7 ، اذا كانت قيمة items تساوي A ، نقسم qty على 6 ، اذا كانت قيمة items تساوي H ، نقسم qty على 5 ، اذا كانت قيمة items تساوي F ، هنا من الصعوبة ان نضع كود العملية كلها في الاستعلام في سطر واحد ، واذا وضعناه ، فلن نستطيع تعديله بسهولة لاحقا ، لأنه سيكون معقدا ، فالطريقة المثلى هنا ، هي عمل وحدة نمطية ، وارسال قيم الحقول items , qty اليها ، وعمل الكود بها ، واسترجاع النتائج منها ، الوحدة النمطية ستكون هكذا: Function Get_Values(i, q) 'i = items 'q = qty If i = "A" Then Get_Values = q / 7 ElseIf i = "H" Then Get_Values = q / 6 ElseIf i = "F" Then Get_Values = q / 5 End If End Function . والاستعلام يكون بهذه الطريقة: . والنتيجة: . وهنا نلاحظ من النتيجة ان تنسيقها للجهة اليسار ، مما يعني ان النتيجة نص وليست رقم ، لذا نرجع للوحدة النمطية (ودون المساس بالاستعلام) ونجري عليها التعديل المطلوب ، وبكل سهولة ، لتغيير النتيجة من نص الى رقم ، وتصبح الوحدة النمطية: Function Get_Values(i, q) As Double 'i = items 'q = qty If i = "A" Then Get_Values = q / 7 ElseIf i = "H" Then Get_Values = q / 6 ElseIf i = "F" Then Get_Values = q / 5 End If End Function . والنتيجة جعفر 258.modulesANDcommands.mdb.zip
-
شكرا أخي الاستاذ رمهان على هذا الشرح والان الى الجانب العملي لا تستطيع ان تنادي هذه الوحدات بالطرق التقليدية ، وكل لغة (مثل VB, VBA, C++, ...) لها طريقتها الخاصة في مناداة هذه الوحدات ، وبالنسبة الى اكسس ، فالرابط التالي يعطينا امثلة في كيفية استخدامها: http://access.mvps.org/access/index.html وملك الوحدات النمطية وبالذات للرسومات في الاكسس: http://lebans.com/ جعفر
-
حياك الله أخوي عبدالرحمن
-
وعليكم السلام أختي احذفي الكود من حدث التحميل ، اعملي حدث الحالي Current ، واوضعي الكود هناك (وبدون تغيير في الكود) جعفر
-
وعليكم السلام المشكلة عندك في الشرط في الاستعلام klm . فالشرط يأخذ قيمته من الحقل mol في النموذج moaa ، فالنموذج moaa عندما يكون مفتوحا مباشرة ، فالاستعلام يعمل ، ولكن عندما يكون : . النموذج moaa داخل النموذج mm ، فهنا تحدث المشكلة ، فالشرط في الاستعلام في هذه الحالة يجب ان يتغير الى Forms!mm!moaa!mol (هاي ماحسبنا لها حساب ) لذلك ، واذا اردنا التقرير يُفتح من كل النماذج ، فطريقتي هي: 1. نحذف الشرط من الاستعلام: . 2. عملت زر جديد في النموذج: . وكود فتح التقرير هو: Private Sub cmd_Print_Preview_entema_Click() If Len(Me.mol & "") = 0 Then MsgBox "Please Select a name first" Exit Sub Else DoCmd.OpenReport "entema", acViewPreview, , "[name]='" & Me.mol & "'" End If End Sub جعفر 255.saa.accdb.zip