اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

kha9009lid

الخبراء
  • Posts

    1,347
  • تاريخ الانضمام

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

  • Days Won

    29

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

  1. جزاك الله خير اخي وكل عام وانتم بخير
  2. السؤال لاستاذنا ابو خليل والموضوع قديم وكان الاجراء الصحيح وضع مشاركة جديدة والاشارة ضمنها لهذا الموضوع ولكن سوف اجيب على اخي وصديقي العزيز ابو اشرف هنا معلمنا حجز متغير من نوع عنصر تحكم لكونه يرغب تطبيق الشرط على كل العناصر في التقرير هذه العناصر في النماذج او التقرير قد تكون مربع نص او قائمة او تسمية او مربع تحرير وسرد او خانة اختيار الخ ..... وهنا قائمة بعناصر التحكم وقيمة كل منهم Name Value Description acAttachment 126 Attachment control acBoundObjectFrame 108 BoundObjectFrame control acCheckBox 106 CheckBox control acComboBox 111 ComboBox control acCommandButton 104 CommandButton control acCustomControl 119 ActiveX control acEmptyCell 127 EmptyCell control acImage 103 Image control acLabel 100 Label control acLine 102 Line control acListBox 110 ListBox control acNavigationButton 130 NavigationButton control acNavigationControl 129 NavigationControl control acObjectFrame 114 Unbound ObjectFrame control acOptionButton 105 OptionButton control acOptionGroup 107 OptionGroup control acPage 124 Page control acPageBreak 118 PageBreak control acRectangle 101 Rectangle control acSubForm 112 SubForm control acTabCtl 123 Tab control acTextBox 109 TextBox control acToggleButton 122 ToggleButton control acWebBrowser 128 WebBrowserControl control وعندما نرغب الاشارة الى عنصر تحكم مثلا ن(عنصر تسميه) ممكن نصرح بنوعه مباشرة فيكون ctli.ControlType = aclabel او نشير الى قيمته بدون تصريح ليكون ctli.ControlType = 100 نعم ممكن ويكون الكود If Len(num.Value) > 55 Then Me.num.FontSize = 7 Else Me.num.FontSize = 12 End If هنا اذا كان عدد الاحرف للحقل الاسم اكبر من 55 يكون حجم الخط 7 وان كان اقل يكون 12 ويمكن اضافة اكثر من شرط النتيجة تكون ظاهرة في معاينة قبل الطباعة للتقرير مرفق مثال بسيط Database1601.accdb
  3. ههههههه اكيد استاذنا الفاضل الشرح للمبتدئين وكنت بكتبها في الرد السابق ولكني نسيت والله
  4. ياهلا باستاذنا الغالي هاوي هذه الطريقة تعمل من الاصدار 2003 وسبق ان اشار لها الاستاذ جعفر عام 2015 هي نفس الاسماء A = DLookup("[Product_id] & '|' & [Product_Name] & '|' & [Product_price]", "tbl_2", "[n_w]='" & [tx1] & "'") x = Split(A, "|") لو تلاحظ قسمنا نتيجة اي حسب موقعها من "|" Product_id = x(0) Product_Name = x(1) Product_price = x(2) تقريبا نفس فكرة القائمة المنسدلة عندما نحملها بقيمة عدة حقول ونستدعيها في النموذج مع فارق ان القائمة مبنية على استعلام وهنا تم استخدام متغير لتحميل الحقول بواسطة DLookup ثم استخدام الحقول المحملة وفقا لموقع كل منها من "|" Me.tx1 = Me.c_2.Column(0) Me.tx2 = Me.c_2.Column(1) Me.tx3 = Me.c_2.Column(2) تحياتي لك
  5. مشاركة بسيطة مع الاساتذه الكرام ولكون المطلوب مجرد استعلام عن سعر الصنف ومعلوماته برقم الباركود في نموذج غير مرتبط فيمكن عملها باستخدم حقل مخصص لقراءة الباركود يتم افراغة مباشرة بعد تنفيذ الكود ليكون جاهز لقراءة باركود اخر واستخدم دالة DLookup مع تحميل الحقول المطلوبة في الامر ويمكن اضافة حقول اخرى الى عدد 10 حقول ليكون الكود On Error GoTo err Dim x() As String A = DLookup("[Product_id] & '|' & [Product_Name] & '|' & [Product_price]", "tbl_2", "[n_w]='" & [tx1] & "'") x = Split(A, "|") [tx2] = x(1) [tx4] = x(0) [tx3] = x(2) Me.tx1 = Null Exit Sub err: MsgBox "رقم الباركود غير صحيح", vbInformation, "تنبيه" [tx1] = Null [tx2] = Null [tx4] = Null [tx3] = Null الاستعلام في الصورة 👇 باستخدام جهاز الباركود
  6. من مبدأ تعدد الحلول اضافة لما اشار الية الدكتور الفاضل حسنين اذا كنت تستخدم احد الاصدارات الحديثة اكسس مممكن عملها في الجدول مباشرة عن طريق جعل حقل الجنس محسوب وتكون قيمة الحقل تساوي 👇 IIf(Left([الرقم_الوطني];2)=10;"ذكر";IIf(Left([الرقم_الوطني];2)=11;"انثى";"رقم غير صحيح")) وتفسيره اذا كان الرقمين من اليسار تساوي 10 الجنس ذكر واذا كان الرقمين تساوي 11 الجنس انثى واي رقم اخر يكون الرقم الوطني او التعريفي غير صحيح وكررنا دالة iif لكونها تعود بنتيجين ونحن نحتاج الى نتيجة ثالثة لو كان الرقم لا يساوي 11 او 10 مرفق مثال ذكروانثى.accdb
  7. هذا الموضوع 👇 يفيدك ان شاء الله
  8. منتهى الابداع كعادتك @kanory
  9. مشاركة متواضعة مني عن طريق عدد 2 استعلام الاستعلام الاول نقوم بتقسيم حقل الاسم الى عمودين باستخدام دالة عمنا العود @ابوخليل جزاه الله خير Public Function qsplit(NName As String, i As Integer) On Error Resume Next qsplit = Split(NName, "-")(i) End Function الاستعلام الثاني استعلام توحيدي ومصدره الاستعلام الاول لغرض توحيد حقلي الاسم ثم نضع شرط في الاستعلام لحذف الصفوف الخالية والنتيجة في المرفق ملاحظة يمكن الاستغناء عن الاستعلام الاول وعمل استعلام التوحيد مباشرة من الجدول مع استخدام الدالة والمعايير ولكن سوف يكون صعب على غير المختصين هذا الحل البسيط يعتمد على فهمي للموضوع وربما لم افهم المطلوب بشكل صحيح op.accdb
  10. فيه طريق بسيطة نعمل وحدة نمطية On Error Resume Next DoCmd.RunCommand acCmdPageSetup ثم نستدعيها من المايكروا الفرعي Database510.accdb
  11. مرفق مثال مشابه عملته بشكل سريع او انتظر صاحب الموضوع يرفق لك مثاله اذا استخدم الكود الذي وضعته طاهر.accdb في هذا المثال حملنا قيمة واحدة لنقلها للنموذج الاخر وبالامكان تحميل فيمة عدة حقول مع تعديل بسيط للمثال شاهذا هذه المشاركة لعدد اكبر من الحقول 👇
  12. جرب ولكن من المهم ان يتم تسجيل اسماء ورموز البنوك في جدول البنوك لان الفكرة الاساسية مبنيه على الارقم 5 و 6 في جدول البنوك DB2.accdb
  13. في نموذج fty في حدث بعد التحديث للحقل idx ضع الكود التالي Dim x As Integer x = DCount("[idx]", "tx", "[idx]='" & [idx] & "'") If x = 0 Then If MsgBox("هل ترغب باضافة هذا العميل", vbYesNo, "تنبيه") = vbYes Then DoCmd.OpenForm "ftx", , , , , , idx Else Me.Undo End If End If حجزنا متغير رقمي جعلنا قيمة المتغير = عدد السجلات المطابقة للحقل idx ثم وضعنا شرط اذا كان العدد 0 يظهر الرسالة من نوع نعم لا اذا اخترنا نعم يفتح نموذج ftx ونحمل قيمة الحقل idx في بارامتر OpenArgs اما اذا اخترنا "لا" يتم التراجع ثم في نموذج ftx في حدث عند الفتح نضع الكود التالي If Not IsNull(Me.OpenArgs) Then DoCmd.GoToRecord , , acNewRec Me.idx.Value = Me.OpenArgs End If هنا اشترطنا اذا كان OpenArgs غير فارغ ينقلنا الى وضع اضافة سجل جديد ثم نجعل قيمة الحقل idx تساوي القيمة المحملة في OpenArgs بالتوفيق اخ ازهر مع تحفظي على الفكرة جميل اخي ناقل ولكن عند فتح نموذج ftx ونموذج fty مغلق سوف تظهر رسالة خطا 🌹
  14. بهذه الطريقة بتواجهك مشكلة انك لوحذفت صنف من المرتجع لن يتم تعديل اجمالي المرتجع وللتغلب على هذه المشكلة في امر حذف الصنف المسترجع استبدل الكود الموجود بالكود التالي On Error Resume Next If MsgBox(" عفوا هل تريد مسح هذا الصنف .... " & sanf_name.Value & vbCrLf & _ " ", _ vbQuestion + vbMsgBoxRight + vbYesNo, _ " حذف صنف ") = vbYes Then DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord Call P_mor_AfterUpdate Else DoCmd.RunCommand acCmdUndo End If
  15. جرب ضع الامر التالي في حدث بعد التحديث للسعر Me.Recalc Me.Parent![Total_mor] = DSum("[total]", "hark_mort", "[c_mort]=" & [Forms]![mortga_be]![c_mort]) نفس حل اخي حسام بعد اضافة معيار رقم المرتجع تحياتي
  16. اعتذر لعدم فهمي المطلوب بشكل صحيح وبالتالي وضعت مرفق حسب تصوري للامر تحياتي
  17. تعني النموذج الاب ونستخدمها بدلا من كتابة اسم النموذج الرئيسي بخصوص موضوعك اضم صوتي لطلب دكتور حسنين بوضع مثال لسهولة فهم الية العمل لديك تستحق انت وكل العاملين في القطاعات الصحية الشكر والثناء على جهودكم وتضحياتكم الكبيرة وندعو لكم بالثبات وللمرضى بالشفاء العاجل
  18. واضح انك مستعجل اخي امير لا داعي لاي تعقيدات الحقيقة ممكن نعملها بعدة طرق وباكواد وبدون اكواد عن طريق منشئ التعبير على كل حال الطريقة الاسهل اولا نعمل جدول باسماء البنوك يحتوى على حقلين معرف البنك مفتاح اساسي ونوعة رقم نسجل فيه رموز البنوك والتي كما ذكرنا تكون رقم 5 و 6 من جهة اليسار في الايبان اسم البنك حقل نصي وممكن اضافة حقول اخرى مثلا اسم البنك الانجليزي ورقم السويفت كود الخ والهدف من الجدول سهولة التعديل لو احتجنا الى اضافة بنك او تغيير اسم بنك او اندماج بنوك لكون التعديل هنا اسهل من التعديل على الكود ثانيا في جدول حسابات العملاء نضيف حقل اسم البنك من نوع نص ثالثا في النموذج تسجيل الحسابات البنكية نضيف حقل اسم البنك الذي وضعناه في الجدول في حدث بعد التحديث لرقم الايبان نضع الكود التالي Dim b As String Dim x As Integer x = Mid([Odb_AccBanckIBAN], 5, 2) Odb_AccBanck = Right(Odb_AccBanckIBAN, 14) b = DLookup("[n_bank]", "tbl_bank", "[id]=" & x) Me.n_bank = b تم عمله على السريع ولم اقم بمراجعته بسبب انشغالي فعذرا مقدما الملف مرفق DB2.accdb
  19. ووالديك اخي العزيز حسام وكافة اخواننا الكرام 🌹
  20. احسن الله اليك استاذنا ابو خليل فائدة لمن يهمه الامر يمكن ايضا الحصول على اسم البنك من خلال رقم الايبان حيث ان الرقم الخامس والسادس خاصة برمز البنك SA7915000000000000000000 البنك الاهلي 10 بنك البلاد 15 بنك الرياض 20 البنك العربي 30 سامبا 40 ساب 45 البنك السعودي الهولندي 50 السعودي الفرنسي 55 مصرف الراجحي 80 الانماء 05 الجزيرة. 60 وهكذا يمكن عمل كود بسيط يتم من خلالة كتابة اسم البنك بمجرد ادخال رقم الايبان والفكرة ببساطة عمل متغير من نوع رقم يساوي x = Mid([Odb_AccBanckIBAN], 5, 2) ثم استخدام Select Case او اي طريقة مشابهه لكتابة الاحتمالات الخاصة باسم البنك وكذلك السويفت كود والله الموفق
  21. ممتاز اخي و استاذي حسام ولاثراء الموضوع عند استخدام dsum بدون معيار سيتم اضافة مجموع كافة الفواتير و ليس للفاتورة الحالية لذا لابد من استخدام معيار رقم الفاتورة ليكون الناتج صحيح اما فكرتي المتواضعة طالما ان الاجمالي للفاتورة الحالية موجود في النموذج الفرعي ممكن اختصار الكود ليكون Me.Recalc Me.Parent!d = Me.XSum في البداية ااستخدمنا recalc لاعادة تحديث الحقول المحسوبة ثم جعلنا قيمة الاجمالي في الرئيسي تساوي الاجمالي في الفرعي DB.accdb
  22. احسنت استاذي ابو خليل والحقيقه كانت هذه الجزئية على بالي ولكن نسيت ذكرها عند وضع الرد السن له احكام اللهم احسن خاتمتنا
  23. مع انه يمكن الغاء عمل الزر عن طريق خصائص النموذج وبدون الحاجة الى كود لكن ممكن مع الانتباه الى ان تعطيل بعض خصائص النموذج يتطلب لها الدخول على عرض التصميم لذا يمكن التحايل وعملها عن طريق 👇 DoCmd.OpenForm "frm1", acDesign Forms!frm1.CloseButton = False DoCmd.Close acForm, "frm1", acSaveYes DoCmd.OpenForm "frm1" وتفسيره افتح النموذج في عرض التصميم اجعل زر الاغلاق غير مفعل اغلق النموذج مع حفظ التغيير اعد فتح النموذج مشوار طويل ولكن .... الملف مرفق aziz.accdb
×
×
  • اضف...

Important Information