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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    127

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

  1. وكتوضيح ومشاركة مع أستاذي @ابوخليل .. من المتعارف عليه في تعدد أعمدة الكومبوبوكس ( مربع التحرير والسرد ) أن الـ :- Column(0) تشير إلى العمود الأول و الـ Column(1) تشير الى العمود الثاني ,,,, وهكذا .
  2. وعليكم السلام ورحمة الله وبركاته .. هناك عدة أسباب بعد النظر الى طريقة كتابة الكود .. أذكر منها :- عمليات التحديث المتكررة : الكود يقوم بـ Me.Refresh عدة مرات مما يجبر النموذج على إعادة رسم نفسه . الانتقال بين السجلات : استخدامك لـ DoCmd.GoToRecord و Me.Recordset.FindFirst يتسبب في إعادة تحميل البيانات . أيضاً إيقاف تحذيرات النظام : DoCmd.SetWarnings False/True المتكرر قد يؤثر على أداء النموذج . التحديث المستمر للعناصر : إعادة تعيين Me.txtsave إلى Null مرتين متتاليتين . جرب التعديل التالي للكود على جهازك .. Private Sub txtsave_AfterUpdate() On Error GoTo ErrorHandler DoCmd.SetWarnings False Application.Echo False Dim x1, x2, x3, barw, n, x Dim barcodeValue As String barcodeValue = Me.txtsave.Value x1 = Nz(DLookup("barcode", "tabl1", "[barcode]='" & barcodeValue & "'"), 0) x2 = Nz(DLookup("barcode", "tabl1", "[barcodeset]='" & barcodeValue & "'"), 0) x3 = Nz(DLookup("barcode", "tabl1", "[barcodecarton]='" & barcodeValue & "'"), 0) If x1 = 0 And x2 = 0 And x3 = 0 Then Me.txtsave = Null DoCmd.Beep Me.txtsave.SetFocus GoTo CleanUp End If barw = Nz(DLookup("barcode", "tabl1", "[barcode]='" & barcodeValue & "'"), 0) If barw > 0 Then If Nz(DCount("barcode", "tabl2", "[barcode]='" & barcodeValue & "'"), 0) > 0 Then Me.Recordset.FindFirst "barcode='" & barcodeValue & "'" Me.Qtyplas = Me.Qtyplas + 1 Else DoCmd.GoToRecord , , acNewRec n = DLookup("[barcode]&'|'&[INAME]&'|'&[sal_price]&'|'&[Qtyplas]", "tabl1", "[barcode]='" & barcodeValue & "'") x = Split(n, "|") Me.barcode = x(0) Me.INAME = x(1) Me.sal_price = x(2) Me.Qtyplas = x(3) End If End If Me.txtsave = Null Me.txtsave.SetFocus CleanUp: Application.Echo True DoCmd.SetWarnings True Exit Sub ErrorHandler: MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical Resume CleanUp End Sub هذه بعض التغييرات والأسباب التي رأيتها ، ما لم يكن هناك حلول أفضل أخرى
  3. رغم أنني لا أشجعك بالإستمرار في النهج الذي تتبعه في مشاريعك ( التسميات العربية ) ، ولكن أنظر لهذه الفكرة البسيطة من خلال دالة تقوم بحساب رصيد الزبون السابقة من نفس الجدول بشرط اسم الزبون كالآتي :- Function SumByCustomer(CustomerName As Variant) As Currency Dim db As DAO.Database Dim rs As DAO.Recordset Dim SQL As String Dim Total As Currency If IsNull(CustomerName) Or Trim(CustomerName & "") = "" Then SumByCustomer = 0 Exit Function End If Set db = CurrentDb SQL = "SELECT Sum([المجموع بالدينار]) AS TotalSum " & _ "FROM [اطراف قائمة البيع] " & _ "WHERE [اسم الزبون3] = '" & Replace(CustomerName, "'", "''") & "'" Set rs = db.OpenRecordset(SQL) If Not rs.EOF Then Total = Nz(rs!TotalSum, 0) Else Total = 0 End If rs.Close Set rs = Nothing Set db = Nothing SumByCustomer = Total End Function وهذا مرفق بسيط للفكرة ، ففي نموذج "قائمة البيع" ستلاحظ مربعي نص ، الأخضر للذمم السابقة ، والأحمر لمجموع الذمم السابقة مع مجموع الفاتورة الحالي . فأن كان هذا طلبك أخبرني بذلك . Ahmed_J.zip
  4. لم تتوضح لي التفاصيل تماماً ، ولكن تستطيع انشاء موضوع جديد كما أخبرتك سابقاً ، وتقوم بالإشارة الى المواضيع التي تريدها ، بحيث تشرح أفكارك شرحاً وافياً يساعد أي شخص يقدم لك حل على فهم الواضع بشكل أفضل ، مع دعم شرحك المفصل بملفات مرفقة للمصدر و الهدف . ونتمنى ان تجد حلاً يلبي احتياجاتك
  5. يسعدني نجاحك في تخطي المشكلة والاستدلال عليها وتلافيها بهذه السرعة العفو يا صديقي ويكفيني تقييمك على مشاركتي
  6. وعليكم السلام ورحمة الله وبركاته .. أخي العزيز @Ahmed_J ، الطرق والحلول ستعتمد اعتماد كلي على بناء استعلامات ( ومتأكد أنك تعلم ذلك ) ، وحتى تبني استعلامك لابد لأي شخص من معرفة أسماء الجداول والحقول ... إلخ . لذا فأرجو منك تكرماً بمساعدتنا بذلك . ومتأكد إننا سنجد الحل بمساعدتك 😇 .
  7. لتلافي الدخول في تفاصيل موضوع مختلف ، لم لا تقوم بفتح موضوع مستقل ، وارفق به مثال ملف اكسل وقاعدة البيانات ( الجدول الهدف )
  8. وعليكم السلام ورحمة الله وبركاته ,, هل هذه النتيجة صحيحة من المطلوب ؟ جرب هذا الاستعلام :- SELECT tbaa.* FROM tbaa INNER JOIN (SELECT MIN(id) AS MinID FROM tbaa GROUP BY ll) AS UniqueRecords ON tbaa.id = UniqueRecords.MinID; طبعاً يوجد أكثر من فكرة للقيام بالوطلوب ، والسابق هي فكرة حيث أن الاستعلام سيجلب أول سجل (حسب أصغر ID) من كل مجموعة قيم ll ، سواء كانت مكررة أو لا . أما اذا كنت تريد حسب أكبر ID فقط نستبدل بدلاً من Mini = Max كالتالي :- SELECT tbaa.* FROM tbaa INNER JOIN (SELECT MAX(id) AS MaxID FROM tbaa GROUP BY ll) AS UniqueRecords ON tbaa.id = UniqueRecords.MaxID; وكفكرة أخرى على سبيل المثال :- بواسطة استعلام باستخدام DISTINCT ON :- SELECT tbaa.ll, FIRST(tbaa.id) AS first_id, FIRST(tbaa.rr) AS first_rr, FIRST(tbaa.fax) AS first_fax, FIRST(tbaa.mo) AS first_mo FROM tbaa GROUP BY tbaa.ll; وهناك فكرة تعتمد على استعلامين اثنين أحدهما مبني على الآخر ، ولكني لا اعتقد انك قد ترغب باستعلامين ما دام الأمر يمكن تنفيذه باستعلام واحد بأكثر من شكل .
  9. انظر هذه الفكرة في نموذج واحد ، والتطبيق سيكون نفس المبدأ على باقي النماذج الفرعية Personnel_affairs.zip
  10. نعم تم الإتطلاع على الفكرة التي اقترحتها ، وكانت النتيجة كما أشرت =
  11. مداخلة لا تغني عن فكرة معلمنا @jjafferr بلا شك ، راجع هذا الموضوع :-
  12. كما أشرت إليك ، إما نموذج رئيسي مصدره جدولين + 2 نماذج فرعية ( وهي الفكرة التي أشجعها ) .. أو استعلام اضافة للقيم في 4 جداول بحيث تكون مربعات النص بدون مصدر بيانات لها ( وتشتمل فرعين ، إما استعلام يضيف السجلات في جدولين فقط - الغير موجودين في مصدر بسجلات النموذج ، أو استعلام يضم الحقول جميعها لجميع الجداول الـ 4 ) وهذه الفكرة لا أشجعها كما أسلف سابقاً .. يعني عدة حلول ولكن أفضلها النماذج الفرعية المرتبطة برقم الموظف ,
  13. ها ما تحدثت عنه في هذه المشاركة :-
  14. العفو يا صديقي .. انا لم اقدم شيئاً مقارنة مع ما قدمه معلمنا @ابوخليل جزاه الله كل الخير لما أفادني فيه من معلومات
  15. وإياكم يا صديقي 🤗.. هنا يبدو أن المشروع ضخم جداً بناءً على كلامك 😅 .
  16. أخي الكريم اعتذر عن التأخير ، ولكن نهاية الأسبوع تكون مزدحمة في العمل عندي للأسف ,, على كل حال ، في فكرة ادخال البيانات لـ 3 جداول غير الجدول الرئيسي طبعاً أمامك طريقين :- 1. باستخدام نماذج فرعية عدد 3 ويتم الربط بينها لإدخال البيانات لنفس الموظف . 2. باستخدام نموذج واحد يحتوي جميع الحقول التي تريدها ولكن باستعلام إضافة الى الجداول الـ 4 سوية وكل مربع نص الى حقله وجدوله . وهنا علي إخبارك بالفروقات فيما بينها :- إذا كان المشروع مستقر ولا يتطلب تغييرات كبيرة مستقبلاً ، فإن استخدام المربعات النصية غير المنضمة قد يكون مفيداً إذا كنا بحاجة إلى تصميم مرن أو واجهة مخصصة لهذه الغاية . أما إذا كنت تتوقع تغييرات مستمرة في هيكل البيانات أو تبحث عن طريقة أكثر تنظيماً وسهولة في الصيانة على المدى الطويل ، فالنماذج الفرعية هي الخيار الأفضل والأكثر أماناً . هنا لك حرية الإختيار .
  17. تم الخلط بين موضوع المادة وموضوع الصف .. تم تعديل المشاركة .. وللأسف تشتت أفكاري بين هنا وهناك اعتذر 😫
  18. في الواقع ما كنت قد فتحت المرفق لأنني كنت بعيد عن الكمبيوتر ، ولكن فعلاً قد رأيتها وقد راقت لي الفكرة ,, سؤالي ، هل فقط الصفوف الأول والثاني من تتبع لهذه السياسة في تحديد نسبة أيام الحضور ؟؟؟ أم سيكون هناك لكل صف نسبة مختلفة !!!! وهذا لا اعتقد انه وارد ، ولكن من باب الفضول في التمعن في فكرة النموذج
  19. تقصد في هذا النموذج ؟؟ أم في أي نموذج ؟؟؟
  20. فيما يلي ، مرحلة التعديل على الإستمارة التي وصلت اليها للصفوف الدنيا ( الأول و الثاني ) حالياً
  21. حال وصولي للكمبيوتر ان شاء الله في العمل سأقوم بالتطبيق على الملف وارفاقه
  22. بارك الله بكم معلمي الفاضل ,, هذا من فضل الله، ثم توجيهاتكم والتي أتعلم منها . ما شاء الله ، تبارك الرحمن ,, اختصرت جهد في الدالة Public Function funCountDays() Dim cntday As Integer cntday = Nz(DLookup("Darajh", "Tbl_materil_Detail", "mat_NO=15"), 0) funCountDays = (50 * cntday) / 100 End Function طبعاً هنا تم تقييد وتحديد النسبة المئوية = 50 ، ولم يتم منح الحرية لعدد أيام الحضور لكل عام ؟؟ أما أنا قد فاتني التركيز على هذه النقطة . وحتى ان المرفق الأخير أكثر شمولاً لكل الصفوف .. ابدعت .. وجزاك الله خيراً .. وإنني انتظر شكل و نتيجة النسبة التي ستعرض في نتيجة الحضور مع اعلم أنني في طور تقديم حل لمعالجة نقاط الضعف التي ذكرتها لي ، في تعديل لاحق حال الانتهاء منه ان شاء الله . ما لم يكن هناك أي مانع من تعديلاتي على مجمل الكود العام
  23. في محاولتي ، خرجت بهذه النتيجة بعد تجربة المرفق الأخير لأستاذي ابو خليل
×
×
  • اضف...

Important Information