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

محمد طاهر عرفه

إدارة الموقع
  • Posts

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

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

  • Days Won

    38

كل منشورات العضو محمد طاهر عرفه

  1. شكرا للأخ سحاب علي مداخلته ، و سأحاول أيضا شرح الفكرة فيما يلي : و طبعا الموضوع عرضة لافكار كثيرة و لكن ساشرح فكرة لتوضيح الطريقة ( طريقة التعامل مع الدوال و التأكد من الرصيد ) . مع ملاحظة أني كتبت الكود التالي سريعا و لم أجربه فعليا ( لتوضيح الفكرة فقط ) لنفرض أن الرصيد المتاح يسجل فى جدول الموظفين كاجمالي المسموح به لكل موظف. و المستهلكات تسجل فى جدول الاجازات كتاريخ بداية و نهاية و منها علي النموذج تحسب عدد الايام المطلوب تسجيلها كأجازة ( مدة الاجازة ) ومدة الاجازة هي التي سنقوم باختبار هل الرصيد يسمح بها أم لا txtnewRquest هو مربع النص الذي يتم منه تسجيل مدة الاجازة فى جدول الاجازات سواء مباشرة بالكتابة فيه أو بالكود بعد تحديث تواريخ بداية و نهاية الاجازة علي النموذج txtempId هو كود الموظف علي النموذج txtremaining مربع نص غير منضم يتم حساب المتبقي فيه بالكود ( قبل تسجيل الاجازة التي يتم اختبارها حاليا ) txtRassed مربع نص غير منضم يتم حساب الرصيد الاصلي فيه بالكود و لدينا جدولان الاول الموظفين و اسمه tblemp و به حقل الرصيد الكلي Total و حقل كود الموظف empId و جدول حركة الاجازات tblVications و به حقل المستهلك used و كود الموظف empId بالاضافة الي توايخ الاجازة و لكن هي ليست موضوعنا هنا و الكود ينفذ من زر أمر فى نموذج الاضافة الي جدول الاجازات فاما يقوم باظهار رسالة برفض التسجيل لعدم وجود الرصيد ، أو يحسب لنا القيم و يضعها علي النموذج و طبعا هذا لا يكفي لاتمام العمل و التسجيل ، و لكن فقط أردت توضيح النقطة المطلوبة وان لم يكن الشرح التالي واضحا ، فأرجو أن يفي مثال الاخ سحاب بما تريد Dim Rassed, used As Integer Rassed = DLookup("[Total]", "tblemp", "[empId]=" & Me.txtempId) used = DSum("[used]", "tblVications", "[empId]=" & Me.txtempId) If (Rassed - used) < Me.txtnewRquest Then MsgBox "No Rassed available" Exit Sub Else Me.txtRassed = Rassed Me.txtremaining = (Rassed - used) MsgBox " Vications Can be Taken !! " End If
  2. فى هذه الحالة فى التقرير فى حدث عند عدم وجود بيانات قم اخفاء مربعات النص الاصلية و اظهار مربع نص مخفي أصلا و توجد به العبارة التي تريد ME.TXTBOXNAME.VISIBLE=FALSE للاصلية و = TRUE للجديدة
  3. من الافضل ايقاف الطباعة عند عدم وجود بيانات هذا الرد سبق ووضعه الأخ فهد الدوسري : أولاً في حدث عند النقر للزر الذي على النموذج والذي يقوم بفتح التقرير تضع هذا الكود ____________ Private Sub أمر0_Click() On Error Resume Next DoCmd.OpenReport "saudi1", acPreview End Sub على افتراض ان اسم التقرير لديك هو ( saudi1 ) =========== وفي حدث عند عدم وجود بيانات في التقرير ضع الكود هذا Private Sub Report_NoData(Cancel As Integer) MsgBox "عفواً.. لا توجد بيانات", vbCritical + vbOKOnly, "تنبيه" DOCMD.CancelEvent End Sub إنسخ وألصق وغير مسمى التقرير فقط ------------ ملاحظة : ربما يكون الجزء الثاني من الكود فقط كافيا ، بدون استخدام Onerror Resume Next فى الجزء الاول و التي تم اضافتها للتغلب علي رسالةة كانت تظهر لدي طارح السؤال
  4. لزيادة قيمة علي الموجود فى خلية Range("B3").Value = Range("B3").Value + 1 أو بصورة أكثر تفصيلا كاحتياط لعدم وجود قيمة فى الخلية Private Sub Workbook_Open() ActiveWorkbook.Sheets(1).Select Range("a1").Activate Dim aa As Byte If IsNull(Range("B3").Value) Then Range("B3").Value = 1 End If aa = Range("B3").Value Range("B3").Value = aa + 1 Application.ActiveWorkbook.Save End Sub مثلما فى هذا الموضوع http://www.officena.net/ib/index.php?showtopic=396
  5. سيكون عليك فى هذه الحالة استخدام حل آخر و هو أن تصنع نموذج بنفسك لادخال كلمة السر و ليس استخدام ال InputBox
  6. و لماذا تريدها تبدأ من السبت ؟؟ اكتب السبت و اسحب الخلايا و اختار Fill series ستعمل معك حيث أن القوائم متتالية و لن يهم بأيها تبدأ ام هناك حاجة معينة لجعل بداية القائمة السبت ؟؟
  7. تم تصحيح الملف المرفق ، حيث تم ارفاق ملف يخص الموضوعغ السابق سهوا F1.rar
  8. بالكود فى حدث بعد التحديث لبيان معين او فى الكود الخاص بزر علي النموذج الرئيسي تقوم بتحديث قيمة الحقل المنضم ( الذي مصدر بياناته حقل فى جدول) فاذا كان الكود سينفذ من زر او بعد التحديث لكائن فى النموذج الرئيسي me.txboxname = Forms![MainFormname]![Subformname]![txtboxsubformsum] أو يمكنك تنفيذ الكود مع تغيير اي قيمة فى مربع نص فى النموذج الفرعي و في هذه الحالة سيكون الكود forms![MainFormname]![txboxname]= Forms![MainFormname]![Subformname]![txtboxsubformsum]
  9. تقوم بحسب كل من الرصيد و المستهلك باستخدام دالتي Dsum ثم تقارن بينهما فاذا لم يسمح الرصيد ترفض تسجيل الاجازة و تصدر الرسالة
  10. ما المشكلة فى حذف كل هذا الكود ؟؟ اما اذا اردت تنفيذ الانتقال و حذف الرسالة فقط فاحذف السطر الذي يبدأ ب Msgbox
  11. ان ملفات ال add-in هي اضافات تم برمجتها من قبل آخرين و تحويلها الي add-in لتكون جاهزة للاستخدام و من الافضل أن نحاول تعلم الكود نفسه و عمل ال add-in بأنفسنا ، و تحويلها بعد ذلك ال add-in اذا أردنا و طبعا لا مانع من عرض ما هو جاهز لنستفيد منه ، و لكنه فى الغالب لا يكون متاحا فى صورة ملفات مفتوحة
  12. لقد جربت الكود و يعمل بشكل سليم جربه ثانية ، و لاجظ أني عدلته قبل عدة مشاركات انسخه ثانية
  13. يمكنك استخدام Like مع ال * يبدأ بأي شيء و ينتهي بما فى الكومبو Like "*" & [Forms]![FormName]![ComboName] يحوي ما فى الكومبو Like "*" & [Forms]![FormName]![ComboName]& "*" يبدأ بما فى الكومبو Like [Forms]![FormName]![ComboName]& "*" فاذا كان الكومبو يحوي كلمة عبد فاستخدم الخيار الثالث
  14. ان ال ado هو المرجع الافتراضي من ضمن كائنات الوصول الي البيانات فى الاكس بي و تجده مضافا تلقائيا اما ال DAO فهو الاصدار السابق و قمكنك الاختيار بينهما أما دمجهما فى تطبيق واحد فأعتقد انه ليس محبذا ( لست متأكداً ) و فى كل الاحوال التنفيذ بال sql افضله طالما يمكنه أن يفي بالغرض راجع المناقشة فى آخر هذا الموضوع http://www.officena.net/ib/index.php?showt...opic=978&hl=ado
  15. لم أفهم ما دخل الكود الذي أضفته بالموضوع ؟؟
  16. مكان سطر الرسالة كان به خطأ جرب الان
  17. ربما يكون هذا الموضوع قريبا مما تريد http://www.officena.net/ib/index.php?showt...1048&hl=صلاحيات اما ان كان المطلوب كلمة سر فقط ففي الكود فى الزر الذي تفتح من النموذج ضع هذا الكود كلمة السر 111 If InputBox("Enter Password PLease ", "www.officena.net") <> "111" Then DoCmd.CancelEvent MsgBox "Wrong password", 64, "www.officena.net" Else DoCmd.OpenForm "FORM2" End If
  18. فهرس الدورة من هنا http://www.officena.net/ib/index.php?act=S...8&st=0#entry784
  19. أول مواضيع التعامل مع النماذج أنشاء النماذج باستخدام المعالج ، من هنا مرفق المثال
  20. مرفق المثال لحساب الفرق بين الاسابيع و أيضا بين تاريخين كفرق عادي سنين + شهور + أيام و كإجمالي لكل فترة علي حدة اي الفرق كشهور فقط أو أسابيع فقط أو ايام فقط أو سنين فقط ملاحظة : تم استخدام احدي دوال أبو هاجر ضمن الكود و موجودة فى موديول منفصل ضمن الكود Weeks_Diff.rar
  21. طيب جرب العكس للتأكد من ان المشكلة ليست فى المراجع صدر جدولك الي مثالي ثم عدل كود مثالي باسم الجدول و الحقول
  22. المشكلة ليست فى أسماء الحقول و لكن فى أسماء الكائنات الاساسية فمثلا detail تكون عندك تفصيل و هذا ما يسبب المشكلة ، لذا عليك اذا أردت تشغيله فى الويندوز الانجليزي ، عليك باستبدال كل الاسماء من هذا النوع و هذا أحد أسباب عدم استخدامي للنسخة العربية اما اذا استخدمت نسخة الاكسس ذات واجهة التطبيق الانجليزية ( و التي تدعم العربية كلغة ) و لكن الاوامر فيها بشكل File و ليس ملف فلن تواجه هذه المشلكة و يبدون أن النسخة العربية أكثر انتشارا فى الخليج من هذا الاستقصاء http://www.officena.net/ib/index.php?s=&showtopic=287
×
×
  • اضف...

Important Information