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

kha9009lid

الخبراء
  • Posts

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

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

  • Days Won

    29

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

  1. ياهلا باستاذنا الغالي هاوي هذه الطريقة تعمل من الاصدار 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) تحياتي لك
  2. مشاركة بسيطة مع الاساتذه الكرام ولكون المطلوب مجرد استعلام عن سعر الصنف ومعلوماته برقم الباركود في نموذج غير مرتبط فيمكن عملها باستخدم حقل مخصص لقراءة الباركود يتم افراغة مباشرة بعد تنفيذ الكود ليكون جاهز لقراءة باركود اخر واستخدم دالة 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 الاستعلام في الصورة 👇 باستخدام جهاز الباركود
  3. من مبدأ تعدد الحلول اضافة لما اشار الية الدكتور الفاضل حسنين اذا كنت تستخدم احد الاصدارات الحديثة اكسس مممكن عملها في الجدول مباشرة عن طريق جعل حقل الجنس محسوب وتكون قيمة الحقل تساوي 👇 IIf(Left([الرقم_الوطني];2)=10;"ذكر";IIf(Left([الرقم_الوطني];2)=11;"انثى";"رقم غير صحيح")) وتفسيره اذا كان الرقمين من اليسار تساوي 10 الجنس ذكر واذا كان الرقمين تساوي 11 الجنس انثى واي رقم اخر يكون الرقم الوطني او التعريفي غير صحيح وكررنا دالة iif لكونها تعود بنتيجين ونحن نحتاج الى نتيجة ثالثة لو كان الرقم لا يساوي 11 او 10 مرفق مثال ذكروانثى.accdb
  4. هذا الموضوع 👇 يفيدك ان شاء الله
  5. منتهى الابداع كعادتك @kanory
  6. مشاركة متواضعة مني عن طريق عدد 2 استعلام الاستعلام الاول نقوم بتقسيم حقل الاسم الى عمودين باستخدام دالة عمنا العود @ابوخليل جزاه الله خير Public Function qsplit(NName As String, i As Integer) On Error Resume Next qsplit = Split(NName, "-")(i) End Function الاستعلام الثاني استعلام توحيدي ومصدره الاستعلام الاول لغرض توحيد حقلي الاسم ثم نضع شرط في الاستعلام لحذف الصفوف الخالية والنتيجة في المرفق ملاحظة يمكن الاستغناء عن الاستعلام الاول وعمل استعلام التوحيد مباشرة من الجدول مع استخدام الدالة والمعايير ولكن سوف يكون صعب على غير المختصين هذا الحل البسيط يعتمد على فهمي للموضوع وربما لم افهم المطلوب بشكل صحيح op.accdb
  7. فيه طريق بسيطة نعمل وحدة نمطية On Error Resume Next DoCmd.RunCommand acCmdPageSetup ثم نستدعيها من المايكروا الفرعي Database510.accdb
  8. مرفق مثال مشابه عملته بشكل سريع او انتظر صاحب الموضوع يرفق لك مثاله اذا استخدم الكود الذي وضعته طاهر.accdb في هذا المثال حملنا قيمة واحدة لنقلها للنموذج الاخر وبالامكان تحميل فيمة عدة حقول مع تعديل بسيط للمثال شاهذا هذه المشاركة لعدد اكبر من الحقول 👇
  9. جرب ولكن من المهم ان يتم تسجيل اسماء ورموز البنوك في جدول البنوك لان الفكرة الاساسية مبنيه على الارقم 5 و 6 في جدول البنوك DB2.accdb
  10. في نموذج 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 مغلق سوف تظهر رسالة خطا 🌹
  11. بهذه الطريقة بتواجهك مشكلة انك لوحذفت صنف من المرتجع لن يتم تعديل اجمالي المرتجع وللتغلب على هذه المشكلة في امر حذف الصنف المسترجع استبدل الكود الموجود بالكود التالي 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
  12. جرب ضع الامر التالي في حدث بعد التحديث للسعر Me.Recalc Me.Parent![Total_mor] = DSum("[total]", "hark_mort", "[c_mort]=" & [Forms]![mortga_be]![c_mort]) نفس حل اخي حسام بعد اضافة معيار رقم المرتجع تحياتي
  13. اعتذر لعدم فهمي المطلوب بشكل صحيح وبالتالي وضعت مرفق حسب تصوري للامر تحياتي
  14. تعني النموذج الاب ونستخدمها بدلا من كتابة اسم النموذج الرئيسي بخصوص موضوعك اضم صوتي لطلب دكتور حسنين بوضع مثال لسهولة فهم الية العمل لديك تستحق انت وكل العاملين في القطاعات الصحية الشكر والثناء على جهودكم وتضحياتكم الكبيرة وندعو لكم بالثبات وللمرضى بالشفاء العاجل
  15. واضح انك مستعجل اخي امير لا داعي لاي تعقيدات الحقيقة ممكن نعملها بعدة طرق وباكواد وبدون اكواد عن طريق منشئ التعبير على كل حال الطريقة الاسهل اولا نعمل جدول باسماء البنوك يحتوى على حقلين معرف البنك مفتاح اساسي ونوعة رقم نسجل فيه رموز البنوك والتي كما ذكرنا تكون رقم 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
  16. ووالديك اخي العزيز حسام وكافة اخواننا الكرام 🌹
  17. احسن الله اليك استاذنا ابو خليل فائدة لمن يهمه الامر يمكن ايضا الحصول على اسم البنك من خلال رقم الايبان حيث ان الرقم الخامس والسادس خاصة برمز البنك SA7915000000000000000000 البنك الاهلي 10 بنك البلاد 15 بنك الرياض 20 البنك العربي 30 سامبا 40 ساب 45 البنك السعودي الهولندي 50 السعودي الفرنسي 55 مصرف الراجحي 80 الانماء 05 الجزيرة. 60 وهكذا يمكن عمل كود بسيط يتم من خلالة كتابة اسم البنك بمجرد ادخال رقم الايبان والفكرة ببساطة عمل متغير من نوع رقم يساوي x = Mid([Odb_AccBanckIBAN], 5, 2) ثم استخدام Select Case او اي طريقة مشابهه لكتابة الاحتمالات الخاصة باسم البنك وكذلك السويفت كود والله الموفق
  18. ممتاز اخي و استاذي حسام ولاثراء الموضوع عند استخدام dsum بدون معيار سيتم اضافة مجموع كافة الفواتير و ليس للفاتورة الحالية لذا لابد من استخدام معيار رقم الفاتورة ليكون الناتج صحيح اما فكرتي المتواضعة طالما ان الاجمالي للفاتورة الحالية موجود في النموذج الفرعي ممكن اختصار الكود ليكون Me.Recalc Me.Parent!d = Me.XSum في البداية ااستخدمنا recalc لاعادة تحديث الحقول المحسوبة ثم جعلنا قيمة الاجمالي في الرئيسي تساوي الاجمالي في الفرعي DB.accdb
  19. احسنت استاذي ابو خليل والحقيقه كانت هذه الجزئية على بالي ولكن نسيت ذكرها عند وضع الرد السن له احكام اللهم احسن خاتمتنا
  20. مع انه يمكن الغاء عمل الزر عن طريق خصائص النموذج وبدون الحاجة الى كود لكن ممكن مع الانتباه الى ان تعطيل بعض خصائص النموذج يتطلب لها الدخول على عرض التصميم لذا يمكن التحايل وعملها عن طريق 👇 DoCmd.OpenForm "frm1", acDesign Forms!frm1.CloseButton = False DoCmd.Close acForm, "frm1", acSaveYes DoCmd.OpenForm "frm1" وتفسيره افتح النموذج في عرض التصميم اجعل زر الاغلاق غير مفعل اغلق النموذج مع حفظ التغيير اعد فتح النموذج مشوار طويل ولكن .... الملف مرفق aziz.accdb
  21. اسهل طريقة اعمل استعلام 1 ثم ضع فيه معيار تصفية Between Nz([forms]![FQin]![f2];"01/01/1900") And Nz([forms]![FQin]![t2];"01/01/2100") ثم اعمل استعلام 2 ويكون فيه التجميع واجعله مصدر للنموذج FF.accdb
  22. وعليكم السلام للاسف انني استخدمت الطريقة الاولى في برنامجي نقطة بيع (خاص بالمشاريع الصغيرة) وهذه الطريقة فيها لزوم مالا يلزم ومما زاد الخطأ انني استخدمت جداول مؤقتة لتنفيذ عمليات الارجاع وتحديث الكميات في المستودع غلطة خالد بـ 100 لذا فقد دارت نقاشات مع الجهة المسئولة عن المبادرة لتكون الاصدارة النهائية كما اشرتم اي الطريقة الثانية ولكن هذه الاصدارة لن تكون تحديث وانما بناء من الصفر ان كتب الله لنا ذلك ودمتم
  23. احسنت استاذ حسام اما رأيي الشخصي ولا يقلل من عمل اخي الفاضل حسام فانا افضل اضافة حقل معرف الموظف غير قابل للتكرار او رقم الهوية الوطنية يكون مفتاح اساس مع تاريخ الراتب بدلا من الاسم لكون ان الاسم قد يتشابه مع اسم موظف اخر وبالتالي اذا اعتمدنا على اسم الموظف مع التاريخ وكان لدينا اسم مشابه فانه لن يتم الحاق احدهما
×
×
  • اضف...

Important Information