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

kha9009lid

الخبراء
  • Posts

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

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

  • Days Won

    29

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

  1. فكرت في حقل من نوع نعم لا للاصناف التي تمت طباعتها وبالتالي لو تمت اضافة اصناف جديد بعد الطباعة يتم ارسال الاصناف الجديدة فقط التي لم تطبع من خلال قيمة الحقل نعم لا وبالصدفة وجدت ان استاذنا @jjafferr جزاه الله خير سبق ان وضع رد مشابه في رده على احد الزملاء 👇 اعتقد هذا الرد بيفيدك وبالتالي يمكن اضافة اصناف متعددة وطباعتها بدون ان يحصل تكرار للاصناف المرسلة سابقا للمطبخ فالاهم هناك رقم الفاتورة الذي لن يتغير ورقم الطاولة تحياتي
  2. اذكر كنا نستخدم هذه الطريقة عند عمل برامج تتطلب ادخال بيانات بشكل كبير للتسهيل على الموظفين ونستخدم ارقام بدلا من مربعات التحرير والسرد لكون الامر اسهل في ادخال المعلومان مثلا بدلا من فتح مربع التحرير لاختيار الدولة مثلا الاردن يكتب رقم 1 = الاردن وهكذا لبقية الدول وفي حالة عدم حفظ رمز الدولة ينقر زر امر ⸫ مثل المشابه لما اشرت اليه فيتم فتح نموذج الدول فيختار الدولة ملاحظة الجنس 1=ذكر 2= انثى الجنسية من 1 الى 23 اذا ادخلت رقم اكبر سيفتح نموذج الدول او بامكانك مباشرة النقر على زر الثلاث نقاط لاختيار الدولة مرفق مثال بسيط عملته على السريع فاعتذر عن اي قصور ابو اشرف.accdb
  3. اخي حلبي الامر صحيح ولكنه يعمل مع الاصدارات الحديثة حيث ان اوامر RunCommand هي البديل لـ DoMenuItem وبالتالي فان الامر الذي وضعة الاستاذ @محمد أبوعبدالله في الحقيقة هو نفس الامر الذي وضعة الاستاذ @مسفر DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70 = DoCmd.RunCommand acCmdFind وكذلك يمكن كتابة الامر الاخير هكذا DoCmd.RunCommand 30 وهنا 👇 بعض اوامر DoMenuItem وما يكافئها في runcommand على سبيل المثال لا الحصر والا فالحديث يطول acFormBar, acEditMenu, 2 = acCmdCopy acFormBar, acEditMenu, 6 = acCmdDeleteRecord acFormBar, acRecordsMenu, 5 = acCmdRefresh تحياتي
  4. ملاحظة صغيرة ارجوا قبولها بصدر رحب توجد مشكلة لديك في فورم تسجيل الدخول افتح القاعدة اختر المستخدم دع الباسورد فارغ ثم login سيتم فتح القاعدة والدخول بصلاحية المستخدم ملاحظة ثانية افتح القاعدة في اسم المستخدم اكتب اي اسم او ارقام ثم انقر على امر login بدون وضع رقم سري سيتم الدخول ايضا ملاحظة اخرى تتعلق بامكانية تجاوز شاشة الدخول ومن ثم الدخول بصلاحية كاملة لا اتحدث عن مفتاح الشفت وانما عن عدم تقييد فتح النماذج سواء كان الدخول من خلال امر خارجي او حتى من خلال استخدام مفتاح الشفت ومن اسهلها وضع شرط عند الفتح من خلال متغير يستمد قيمته بعد تسجيل الدخول بشكل صحيح فان لم يحصل المتغير على القيمة يتم اغلاق البرنامج ولكن هذا موضوع اخر يحتاج الى شرح ومثال لعل الله يعينني على شرحه مرة اخرى ليس الهدف من الملاحظة التقليل من العمل ومن جهودكم وجهود الزملاء والاساتذة الذين ساهموا فيه ولكن كما يتضح ان البرنامج مالي وتعودنا دائما بان الامور المالية تحتاج الى حمايه اكبر ومراجعة اكبر والله الموفق تحياتي وتقديري
  5. في زر امر طباعة استبدل الامر Forms!frm_Main!srch_Page = Me.iPage DoCmd.OpenReport "rpt_Items_Pages", acViewPreview بالامر التالي 👇 Forms!frm_Main!srch_Page = Me.iPage DoCmd.OpenReport "rpt_Items_Pages", acViewPreview, , Me.Filter
  6. لا اتفق معك فقط بل ابصم على ذلك
  7. اجاب استاذنا الفاضل هاوي ههههههه اضحك الله سنك اخي هاوي اعتقد المثل قريب لـ (إن لقحت وإلا ما ضرها الجمل)
  8. يا هلا باستاذنا هاوي انا هنا اتحدث عن دالة dcount فقط لكونها تعطي القيمة صفر في حالة عدم تحقق الشرط او في حالة عدم وجود سجلات اصلا وجرب استخدامها في حالة البرنامج لا يحتوي على بيانات ستجد انها تعطي القيمة صفر
  9. السلام اجد في بعض المشاركات استخدام دالة nz مع دالة dcount وقبل الحديث عن صحة هذا الاستخدام سوف نشرح باختصار عمل كل منهما nz تستخدم لإرجاع صفر أو قيمة سلسلة فارغة (" ") أو قيمة محددة أخرى عندما يكون المتغير null اما دالة dcount تستخدم لعد السجلات وتعود بالقيمة 0 في حالة عدم تحقق الشرط مثال لبعض استخداماتها في الموقع 👇 Nz(DCount("[bil_number]";"tbl_1";"[total]>630");0) هنا نطلب عد الفواتير في الجدول اذا كان اجمالي الفاتورة اكبر من 630 وطالما ان الدالة تعود بالقيمة صفر في حالة عدم وجود القيمة او تحقق الشرط فيكون الكود 👇 DCount("[customer]";"tbl_1";"[bil_number]=630") او هكذا DCount("*";"tbl_1";"[bil_number]=630") وبالتي لا داعي لاضافة nz على الكود
  10. فعلا لم افهم من الوهلة الاولى اعذرني انا فهمي على قدي طيب ممكن نعمل الامر Me.total2 = DSum("[Total]", "tbl_1", "[Date_of_invoice] between #" & Format([Forms]![frm_2]![st], "mm/dd/yyyy") & "# and #" & Format([Forms]![frm_2]![en], "mm/dd/yyyy") & "#") مرفق ملف للتجربة لعله المطلوب test2.accdb
  11. اجعل مصدر سجلات النموذج استعلام وضع فيه معيار الفلترة Between Nz([forms]![frm_2]![st];"01/01/1900") And Nz([forms]![frm_2]![en];"01/01/2100") في النموذج اضف مربعي نص للتاريخ من الى اضف مربع نص ثالث واجعل قيمته تساوي =Nz(DSum("[Total]";"q_1");0) هذه الطريقة الاسهل وبدون الحاجة لمعيار الدالة dsum مرفق مثال بسيط test.accdb
  12. من وجهة نظري المتواضعة لن نستفيد لان هذه الدالة لها طريقة في العمل حيث ترجع قيمة حقل واحد او عدة حقول * في نفس السجل بناء على المعايير المحددة DLookup( expr, domain, [criteria] ) expr = الحقل المطلوب ارجاع قيمته domain = المجال قد يكون جدول او استعلام criteria = المعيار وهو اختياري ويكتب بشكل مختلف وفقا لنوع الحقل بينما between and نستخدمها للحصول على سجلات محددة ببداية ونهاية قد تكون النتيجة سجل واحد او اكثر او لا سجلات وفقا للنطاق المحدد من الى وحتى لو قمنا بعملها ويكون لدينا عدة سجلات تحقق معيار الدالة ستقوم بارجع القيمة الاولى لذا اذا اردنا الحصول على قيمة صحيحة نستخدم معيار فريد وبناء عليه اشرح فكرتك والنتيجة التي تريدها فقد تجد حل اكثر فاعليه تحياتي ــــــــــــ * - يوجد شرح في الموقع لاستخدامها لعدة حقول بواسطة الاستاذ @jjafferr
  13. ماهو شرط يكون المشروع خسران احيان يكون الانفاق اكبر لاسباب خارجة عن الارادة حيث تنص لائحة المنافسات على الاتي مع الاخذ في الاعتبار ان لكل بلد انظمته لا يجوز تعديل أسعار العقود أو الاتفاقيات الإطارية بالزيادة أو النقص إلا في الحالات الآتية: تغير أسعار المواد أو الخدمات الرئيسة الداخلة في بنود المنافسة والتي تحددها اللائحة. تعديل التعرفة الجمركية أو الرسوم أو الضرائب. إذا حصلت أثناء تنفيذ العقد صعوبات مادية لم يكن بالإمكان توقعها. بالنسبة لصاحب الموضوع يمكن وضع الشرط على النحو التالي IIf([x]-[z]<0;0;[x]-[z]) x=مبلغ الانفاق الفعلي z=المبلغ الكلي للمشروع اذا كان مبلغ الانفاق الفعلي - المبلغ الكلي للمشروع اصغر من 0 يكون الناتج 0 او ضع المبلغ الناتج
  14. الشكر لله سبحانه الحقيقة هذا جزء بسيط مما تعلمناه منكم ومن اساتذنا الافاضل في الموقع انا فتحت البرنامج وكما تعلم استاذي ان هناك دائما اكثر من طريقة للوصول للنتيجة ولكن عندما شاهدت بناء الملف فضلت اني اضع الملاحظات ولا اقدم حل للسؤال فربما تجد الملاحظات قبول لديه حينها سوف يبدأ بعمل افضل وخالي من المشكلات على المدى البعيد تحياتي وتقديري
  15. السلام عليكم قالت العرب إذا حضر الماء بطل التيمم وطالما استاذنا @jjafferr في الموضوع سنقف في الصف ونتعلم مداخلتي هنا تتعلق بطريق العمل في انشاء القاعدة المرفقة حيث ان كافة المعلومات في جدول واحد وهذا الامر مخالف لمفهوم قواعد البيانات العلائقية اي التي تتكون من مجموعة من الجداول والمرتبطة بعلاقة قد تكون راس باطراف او راس براس او اطراف باطراف وفي المثال المرفق ادى استخدام جدول واحد الى تكرار اسماء الطلاب بعدد السنوات الدراسية حيث ان الطالب احمد طلعت احمد داود لديه خمسة سجلات وكذلك بقية الطلاب تتكرر سجلاتهم وفقا لعدد سنوات الدراسة ايضا للطالب نفسه 5 ارقام بينما الصحيح ان يكون للطالب رقم واحد فقط كمعرف فريد امكانية كتابة اسم الطالب بشكل غير صحيح مثل الطالب ( ابراهيم احمد يوسف السيد احمد ) و ( ابراهيم احمد يوسف " السيد احمد ") وايضا الطالب ( ابراهيم جابر محمود السيد ) والطالب ابراهيم حسن ابراهيم جاد الله مكتوبه باكثر من طريقة وربما غيرهم وعند البحث او التصفية سنجد نتائج غير صحيحة عدد السجلات في الجدول لا يعطي نتيجة صحيحة بسبب التكرار حيث يبلغ عدد السجلات 7817 طالب بينما العدد 3009 طالب وهو تقريبي بسبب وجود اختلاف في طريقة كتابة الاسماء الجدول لا يحتوي على مفتاح اساسى هذا الرد ليس انتقاد للعمل وانما ملاحظات الهدف منها تعليمي بحت ولتلافي مشكلات مستقبليه هنا نصائح مفيد 👇 للاستاذ الفاضل ازهر عبد العزيز وهنا شرح للعلاقات لاستاذنا الفاضل @أحمد الحربي مع تمنياتي لك بالتوفيق
  16. تواضع من استاذ ومعلم اتشرف باني تلميذ في مدرستكم فانا طالب علم ( متقاعد 😎 ) لم ولن اصنف نفسي ضمن الاساتذة الذين نتعلم منهم ونكتسب الخبرة صدقني كل مافي الامر انني تعلمت البرمجة في زمن نظام التشغيل dos وبالتالي لدي قليل من المعرفة ببعض الاوامر والتقنيات القديمة التي تسمح احيانا بتجاوز قيود نظام التشغيل رحم الله امرئ عرف قدر نفسه
  17. وعليكم السلام د.حسنين للاسف مازال يمكن الدخول بشكل غير شرعي وجربت ثلاث طرق وامكن الدخول والتعديل الدخول مباشرة على الشاشة الرئيسية او شاشة الصلاحيات بدون المرور على شاشة الدخول باستخدام باستخدام قاعدة بيانات اخرى الدخول مباشرة على الشاشة الرئيسية او شاشة الصلاحيات بدون المرور على شاشة الدخول باستخدام ملف دفعي bat عن طريق نقطة الاوامر فتح البرنامج واختيار المستخدم ثم الدخول بدون كلمة المرور في المرفق ملف فيديو لعملية تجاوز شاشة الدخول والوصول الى الرئيسية للبرنامج وايضا تنفيذ نفس الامر على قاعدة اخرى استخدمنا نفس الامر ولكن لا يستطيع تجاوز فورم الدخول حيث استخدمنا متغير يستمد قيمته بعد تسجيل الدخول وبالتالي عند محاولة فتح اي كائن في القاعدة بطريقة غير شرعية يقوم بفحص قيمة المغير فان لم يجد القيمة المحددة تظهر رسالة بتعذر الوصول واعادتنا لنموذج تسجيل الدخول نتحدث بكل صدق حتى هذه الطريقة لا تعطي حماية كاملة ولكن تؤدي الغرض حيث ممكن تجاوزها باستخدام الملفات الدفعية ولكن الامر يحتاج الى معرفة قد لا تتوفر لدى اغلب المستخدمين تحياتي وتقديري
  18. وبارك فيك اخي ابو حسن اذا ممكن الوصل للنتيجة عن طريق عمل استعلام ثم في حقل الرصيد نضع الكود (select(sum([Creditor])-sum([Debit])) from [Financial_Records] where [Registration_Date]<= k.Registration_Date and [Registration_Number]<= k.Registration_Number) والنتيجة في الصورة
  19. الحقيقة عمل @د.كاف يار رائع ماشاء الله ولكون هذا الموقع تعليمي فاذا تسمحوا لي اعتقد ان هناك خطأ في الرصيد او انني لم افهم المطلوب بشكل صحيح نتيجة استاذنا الفاضل حسين الدائن المدين الرصيد 0 100 0 150 0 150 0 150 300 100 0 100 222 0 222 في العملية الاولى دائن 0 مدين 100 الرصيد يكون -100 في الثانية دائن 150 ومدين 0 ولكن لدينا مدين 100 من العملية الاولى قيكون الرصيد في العملية الثانية 150-(-100)=50 وهكذا ليصبح الرصيد لكل العمليات 👇 دائن مدين الرصيد 0.00 100.00 -100 150.00 0.00 50 0.00 150.00 -100 100.00 0.00 0 222.00 0.00 222 انا لست محاسب ولا احب عمل المحاسبة فان كان رأيي جانب الصواب فاعتذر مقدما
  20. جولة ثانية في البرنامج وهنا ساتحدث عن الايجابيات وهي ايضا وجهة نظر التصميم رائع واعجبني جدا لا اتحدث عن الالوان وانما اتحدث عن تصميم النماذج وتوزيع الحقول والقائمة الجانبية للشاشة الرئيسية وازرار الاوامر جميعها تعطي صورة عن لغة وفلسفة التصميم لدى المبرمج وضوح الهدف من البرنامج ادى الى اعداد برنامج يمكن التعامل معه بكل سهولة وبدون الحاجة الى تدريب وبخطوات عمل بسيطة للسكرتير وللطبيب بدون تعقيد اود ان اضيف ملاحظة لو امكن وضع زر امر لطباعة الوصفة الطبية من نفس شاشة واجهة الطبيب في المجمل عمل رائع ويستحق الاشادة
  21. لم اختبره بشكل كامل ولكن تجربة سريعة واجهت مشكلة في اختفاء جزء من الشاشة (الجزء السفلي) والتي تحتوي على الاوامر اغلاق النافذة الخ ولكن ربما لاستخدامي شاشة غير قياسية ايضا البرنامج يخفي شريط المهام لنظام التشغيل وهي مشكلة لمستخدمي لوحة مفاتيح اللمس ليست مشكلة عند استخدام لوحة مفاتيح فيزيائية في شاشة الطبيب عند اختيار المريض والنقر على مجموعة الدواء وكان الدواء غير مسجل يتطلب الخروج من الشاشة لاضافة الدواء ثم العودة بينما يمكن اضافة امر للدخول على اضافة الدواء دون الخروج من شاشة المريض ربما المشكلة الاكبر في حالة الدخول غير المشروع يمكن اجراء تعديلات من اضافة وحذف وتعديل على كافة البيانات الحقيقة لم اجرب البرنامج بشكل كافي و الملاحظات التي اشرت لها تبقى وجهة نظر ولا تقلل من جهودكم ماعدا الملاحظة الاخيرة فهي فعلا تمثل مشكلة
  22. ماشاء الله عمل متميز من استاذ كبير كلمة المرور 313 اعتقد الدكتور نسي يضعها في المشاركة
  23. نعم استاذي محمد هذا ماعملته تحياتي وتقديري
  24. لكل مبرمج منا وجهة نظر انا اعتقد انه ضروري حتى لا يحصل خطأ في حساب الرصيد عندما تكون هناك عدة حركات على الحساب في نفس التاريخ لكونه يعطي التسلسل الصحيح في ترتيب الحركات ممكن عدم استخدامه اذا كان لدينا تاريخ بتنسيق الوقت والتاريخ ليكون التسلسل وفقا لذلك ولكن id اسهل الان ناتي للمهم عمل الرصيد التراكمي ممكن بعدة طرق الطريقة الاسهل ويعملها اكسس بدون مجهود منا في التقارير اما في النماذج والاستعلامات فسوف اشرح طريقتين وبشكل مختصر الاولى عن طريق حقل محسوب في الاستعلام باستخدام دالة dsum DSum("[daan] ";"hrkahesab";"[id]<=" & [id] & "and [date]<=" & Format([date];"\#mm\/dd\/yyyy\#"))-DSum("[maden] ";"hrkahesab";"[id]<=" & [id] & "and [date]<=" & Format([date];"\#mm\/dd\/yyyy\#")) وهنا نجمع حقل دائن بشرط id يساوي او اصغر من id في النموذج والتاريخ للسجل اصغر او يساوي التاريخ في الاستعلام ثم نطرح منه جمع حقل مدين بنفس الشرطين هذه الطريقة اسهل ولكن الافضل عدم استخدامها لكونها ليست سريعة عند جود سجلات كثيرة الطريقة الثانية نضع حقل في الاستعلام باستخدام استعلام فرعي يفضل استخدام اسم مستعار للجدول من خلال فتح الاستعلام في وضع التصميم ثم وضع المؤشر على الجدول ثم في ورقة الخصائص اسم مستعار وبنفس الشروط ليكون الكود RaseedTrakomy: (select(sum([daan])-sum([maden])) from [HRKAHESAB] where [id]<= kh.[id] and [date]<=kh.[date] and [merg]=kh.[merg]) في الحالتين نحصل على نفس النتيجة ولكن من تجربتي الطريقة الثانية اسرع اخيرا اخي عادل اعتذر منك فلم اقصد في مشاركتي السابقة اي تجريح فلك كل التقدير والاحترام ولكني تفاجأت بعد وضع الرد ان الموضوع قديم وان الملف المطلوب تعديلة مختلف
×
×
  • اضف...

Important Information