بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
3260 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
127
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
وكتوضيح ومشاركة مع أستاذي @ابوخليل .. من المتعارف عليه في تعدد أعمدة الكومبوبوكس ( مربع التحرير والسرد ) أن الـ :- Column(0) تشير إلى العمود الأول و الـ Column(1) تشير الى العمود الثاني ,,,, وهكذا .
-
وعليكم السلام ورحمة الله وبركاته .. هناك عدة أسباب بعد النظر الى طريقة كتابة الكود .. أذكر منها :- عمليات التحديث المتكررة : الكود يقوم بـ 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 هذه بعض التغييرات والأسباب التي رأيتها ، ما لم يكن هناك حلول أفضل أخرى
-
رغم أنني لا أشجعك بالإستمرار في النهج الذي تتبعه في مشاريعك ( التسميات العربية ) ، ولكن أنظر لهذه الفكرة البسيطة من خلال دالة تقوم بحساب رصيد الزبون السابقة من نفس الجدول بشرط اسم الزبون كالآتي :- 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
-
وعليكم السلام ورحمة الله وبركاته .. أخي العزيز @Ahmed_J ، الطرق والحلول ستعتمد اعتماد كلي على بناء استعلامات ( ومتأكد أنك تعلم ذلك ) ، وحتى تبني استعلامك لابد لأي شخص من معرفة أسماء الجداول والحقول ... إلخ . لذا فأرجو منك تكرماً بمساعدتنا بذلك . ومتأكد إننا سنجد الحل بمساعدتك 😇 .
-
وعليكم السلام ورحمة الله وبركاته ,, هل هذه النتيجة صحيحة من المطلوب ؟ جرب هذا الاستعلام :- 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; وهناك فكرة تعتمد على استعلامين اثنين أحدهما مبني على الآخر ، ولكني لا اعتقد انك قد ترغب باستعلامين ما دام الأمر يمكن تنفيذه باستعلام واحد بأكثر من شكل .
- 1 reply
-
- 1
-
-
انظر هذه الفكرة في نموذج واحد ، والتطبيق سيكون نفس المبدأ على باقي النماذج الفرعية Personnel_affairs.zip
-
نعم تم الإتطلاع على الفكرة التي اقترحتها ، وكانت النتيجة كما أشرت =
-
كما أشرت إليك ، إما نموذج رئيسي مصدره جدولين + 2 نماذج فرعية ( وهي الفكرة التي أشجعها ) .. أو استعلام اضافة للقيم في 4 جداول بحيث تكون مربعات النص بدون مصدر بيانات لها ( وتشتمل فرعين ، إما استعلام يضيف السجلات في جدولين فقط - الغير موجودين في مصدر بسجلات النموذج ، أو استعلام يضم الحقول جميعها لجميع الجداول الـ 4 ) وهذه الفكرة لا أشجعها كما أسلف سابقاً .. يعني عدة حلول ولكن أفضلها النماذج الفرعية المرتبطة برقم الموظف ,
-
ها ما تحدثت عنه في هذه المشاركة :-
-
العفو يا صديقي .. انا لم اقدم شيئاً مقارنة مع ما قدمه معلمنا @ابوخليل جزاه الله كل الخير لما أفادني فيه من معلومات
-
وإياكم يا صديقي 🤗.. هنا يبدو أن المشروع ضخم جداً بناءً على كلامك 😅 .
-
أخي الكريم اعتذر عن التأخير ، ولكن نهاية الأسبوع تكون مزدحمة في العمل عندي للأسف ,, على كل حال ، في فكرة ادخال البيانات لـ 3 جداول غير الجدول الرئيسي طبعاً أمامك طريقين :- 1. باستخدام نماذج فرعية عدد 3 ويتم الربط بينها لإدخال البيانات لنفس الموظف . 2. باستخدام نموذج واحد يحتوي جميع الحقول التي تريدها ولكن باستعلام إضافة الى الجداول الـ 4 سوية وكل مربع نص الى حقله وجدوله . وهنا علي إخبارك بالفروقات فيما بينها :- إذا كان المشروع مستقر ولا يتطلب تغييرات كبيرة مستقبلاً ، فإن استخدام المربعات النصية غير المنضمة قد يكون مفيداً إذا كنا بحاجة إلى تصميم مرن أو واجهة مخصصة لهذه الغاية . أما إذا كنت تتوقع تغييرات مستمرة في هيكل البيانات أو تبحث عن طريقة أكثر تنظيماً وسهولة في الصيانة على المدى الطويل ، فالنماذج الفرعية هي الخيار الأفضل والأكثر أماناً . هنا لك حرية الإختيار .
-
تم الخلط بين موضوع المادة وموضوع الصف .. تم تعديل المشاركة .. وللأسف تشتت أفكاري بين هنا وهناك اعتذر 😫
-
هههههه ذكرته فأتى
-
في الواقع ما كنت قد فتحت المرفق لأنني كنت بعيد عن الكمبيوتر ، ولكن فعلاً قد رأيتها وقد راقت لي الفكرة ,, سؤالي ، هل فقط الصفوف الأول والثاني من تتبع لهذه السياسة في تحديد نسبة أيام الحضور ؟؟؟ أم سيكون هناك لكل صف نسبة مختلفة !!!! وهذا لا اعتقد انه وارد ، ولكن من باب الفضول في التمعن في فكرة النموذج
-
-
-
حال وصولي للكمبيوتر ان شاء الله في العمل سأقوم بالتطبيق على الملف وارفاقه
-
بارك الله بكم معلمي الفاضل ,, هذا من فضل الله، ثم توجيهاتكم والتي أتعلم منها . ما شاء الله ، تبارك الرحمن ,, اختصرت جهد في الدالة 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 ، ولم يتم منح الحرية لعدد أيام الحضور لكل عام ؟؟ أما أنا قد فاتني التركيز على هذه النقطة . وحتى ان المرفق الأخير أكثر شمولاً لكل الصفوف .. ابدعت .. وجزاك الله خيراً .. وإنني انتظر شكل و نتيجة النسبة التي ستعرض في نتيجة الحضور مع اعلم أنني في طور تقديم حل لمعالجة نقاط الضعف التي ذكرتها لي ، في تعديل لاحق حال الانتهاء منه ان شاء الله . ما لم يكن هناك أي مانع من تعديلاتي على مجمل الكود العام
-
-