
Hawiii
03 عضو مميز-
Posts
209 -
تاريخ الانضمام
-
تاريخ اخر زياره
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Hawiii
-
أعمل على إصدار جديد بخيارات جديدة سأطرحه في موضوع جديد قريبا إن شاء الله.
-
ممكن توضح لي أيش هو شريط المهام 🙂 ، أنا الحقيقة أضيع مع المسميات العربية ارفع لي صورة وأشر لي على شريط المهام.
-
المثال يتكون من حرفين كبيرين لاتيني/انجليزي ورقم ويمكن تحديد طول الرقم بين 1 و 5 أعداد ويمكن تحديد بداية الأرقام لكل حرف بصفر أو واحد ويمكن كذلك اختيار فاصل بين الحروف والأرقام. والمثال يمكنه جلب الرمز السابق والرمز التالي. Hawiii-Coding-02.accdb
-
نسخة منقحة أبجد_هوز_هاوي_2.mdb
-
الكود بعد التصحيح Function NextCode(ByVal PrevCode As Variant) As String Dim fL As String Dim sL As String Dim No As Byte 'Validation ---------------------------------- NextCode = "" PrevCode = Trim(Nz(PrevCode, "")) If PrevCode = "" Then NextCode = "AA01" Exit Function End If If Len(PrevCode) <> 4 Then Exit Function If Not IsNumeric(Right(PrevCode, 2)) Then Exit Function fL = Mid(PrevCode, 1, 1) sL = Mid(PrevCode, 2, 1) No = Mid(PrevCode, 3, 2) If Not fL Like "[A-Z]" Then Exit Function If Not sL Like "[A-Z]" Then Exit Function 'Start Coding ---------------------------------- If No < 99 Then No = No + 1 NextCode = fL & sL & Format(No, "00") Exit Function End If If sL < "Z" Then No = 1 sL = Chr(Asc(sL) + 1) NextCode = fL & sL & Format(No, "00") Exit Function End If If fL < "Z" Then No = 1 sL = "A" fL = Chr(Asc(fL) + 1) NextCode = fL & sL & Format(No, "00") 'Exit Function End If End Function Sub TestNext() Dim rst As Recordset Dim Seq As Long Dim NewCode As String DoCmd.RunSQL "Delete * from Table1;" Set rst = CurrentDb.OpenRecordset("Table1", dbOpenDynaset) NewCode = "" With rst For Seq = 1 To 100000 NewCode = NextCode(NewCode) .AddNew !Seq = Seq !Code = NewCode .Update If NewCode = "ZZ99" Then Exit For Next Seq End With rst.Close MsgBox "Done" End Sub
-
أنا لا أعرف مطلبك بالضبط ، فإذا مطلبك فقط هو حلقات تكرارية من البداية إلى النهاية دفعة واحدة وتحفظ في جدول فعليك بمثال أخينا @husamwahab فهو مثال ممتاز. عن مثالي: مثالي هو دالة تولد كود جديد للسجل التالي بناء على الكود الحالي أو المعطى. وأستطيع أن أصنع لك آخر للسجل السابق بحيث تستطيع التقليب بني الأكواد دون الحاجة لتخزينها ودون أن تضطر أن تبدأ من أصغر/أول كود في السلسلة. ويمكنك كذلك استعراض كامل السلسلة بعمل إجراء إضافي. إذا رغبت في فكرتي فأخبرني كيف تريد المثال ، هل تريد نموذج "فورم" يأخذ منك أحد الأكواد ثم يظهر لك الكود السابق والكود الحالي؟ وأرجع وأؤكد عليك في حالة رغبتك فقط إضافة كامل السلسلة في جدول فعليك بمثال حسام. أنتظر ردك.
-
جرب هذا الكود: Function NextCode(PrevCode As String) As String Dim fL As String Dim sL As String Dim No As Byte 'Validation NextCode = PrevCode If Len(PrevCode) <> 4 Then Exit Function If Not IsNumeric(Right(PrevCode, 2)) Then Exit Function fL = Mid(PrevCode, 1, 1) sL = Mid(PrevCode, 2, 1) No = Mid(PrevCode, 3, 2) If Not fL Like "[A-Z]" Then Exit Function If Not sL Like "[A-Z]" Then Exit Function 'Start Coding ---------------------------------- If No < 99 Then No = No + 1 NextCode = fL & sL & Format(No, "00") Exit Function End If If sL < "Z" Then No = 1 sL = Chr(Asc(sL) + 1) NextCode = fL & sL & Format(No, "00") Exit Function End If If fL < "Z" Then No = 1 fL = Chr(Asc(fL) + 1) NextCode = fL & sL & Format(No, "00") 'Exit Function End If End Function Sub test() Dim Seq As Integer Dim NewCode As String NewCode = "AA00" For Seq = 1 To 10000 NewCode = NextCode(NewCode) Debug.Print NewCode If NewCode = "ZZ99" Then Exit For Next Seq End Sub في حالة أن أردت الرقم يبدأ من صفر بدل السطرين من No = 1 إلى No = 0
-
حياك الله أبو عبدالله ، المحصلة الجديدة وحتى لا نكون ضحايا للمبتدئين سنضطر مع كل تعديل ذكر التعديلات بالتفصيل ليعرفوا حجم العمل المبذول ولن يعرفوا. في مشاركتي سأذكر التعديلات التي أتذكرها فأنا مصاب بكثرة النسيان. - تم حذف صناديق تحوي معادلات بعدد الحروف مرتين وتم حذفها منفردة أي صندوقا صندوقا حيث كان بعضها مخفيا خلف صندوق آخر وبعضها تم تصغيره بشكل لا يرى ، فكنت أختارها بالاسم بالتناوب وأكبر حجمها حتى أستطيع رؤيتها ثم حذفها. - تم تحويل صناديق قوائم إلى صناديق نص بعدد الحروف ، وكذلك منقردة حيث لا يمكن التحويل بشكل جماعي. - تم عمل فحص الإدخالات بحيث لا تقبل إلا حرفا واحدا وبشرط أن يكون من قائمة الحروف الأبجدية. - تم تصحيح حرف الألف في الجدول حيث كان بهمزة وقد ضيع علي وقتا ليس بالقليل لأنه الدالة كانت لا ترجع قيمته ولم يكن نظري يساعدني على رؤية الهمزة. - هذا ما أتذكره الآن غير التعديلات الشكلية حيث بعض الأرقام تظهر على سطرين وبعض التسميات تظهر مقطوعة. وأنا واثق أن أكثر السائلين لا يتنبهون للتعديلات ثم يسمح لهم بإهداء جهودنا المبذولة لمبرمج آخر وبتقييم عمل المبرمجين/الأساتذة وتحديد "أفضل إجابة" وهو قاصر على فهم أبسط التعامل مع اللغة ، وأنا أنصح الإدارة بحذف هذا الإجراء أو بتبديل التسمية/الحالة إلى "ناسبتني" أو "أخترتها" ، بدلا من "أفضل إجابة". يقول المثل : بين حانا ومانا ضاعت لحانا. وشكرا للجميع.
-
على كل قمت لك بالتعديلات التالية في مثالك: - تحويل صناديق التسمية إلى صناديق نص لاستخدام القيم العليا في فحص صناديق درجات الطالب. - تسمية صناديق درجات المواد ودرجات الطالب. - عمل فحص للقيم المدخلة لصناديق الطالب. - عمل دالة الجمع وإضافتها لأحداث بعد التعديل لصناديق درجات الطالب. -------------------------------- - إعادة تنسيق صناديق درجات الطالب. - تم التعديل على فحص المدخلات بناء على ملاحظتك التي تم حذفها من طلبك قبل الأخير. - تم تعديل نوع مجموع درجات الطالب في الكود بعد طلبك الأخير وبعد فحصي للمثال مرة أخرى وألغيت رفعها في آخر لحظة. إن شاء الله تكون الأمور واضحة ، يعني كل مافي المثال هو جهدي ماعدا تبديل نوع المتغير Total2.
-
كل من يقرأ ردي هذا يستغرب حيث لا علاقة له بمشاركتك ، وهذا لأنك عدلت على مشاركتك وألغيت ملاحظة فحص القيم ، وكان يجب أن تبقي على ملاحظتك الأولى وتزيد عليها ملاحظتك الجديدة بخصوص الكسور والتي لم تكن موجودة. والله المستعان.
-
عملت التعديل ولكن أخونا سبقني ووضع لك المثال. تريدني أرفعه مرة ثانية 🙂 مع أنه لاداعي للمجموع الأول تغيير النوع له أقصد Total1 أنا كنت ذاهب أنام ولما شفت رسالة ثانية تخص موضوع ثاني قلت خلني أقوم بالسريع وأعمل تعديل لك وتعديل للموضوع الثاني ، وهكذا حدث عدلت تنسيع الصناديق ونسيت التعديل على كود المجموع. وأشكر أخونا على تعديله وكان يكفي ينبهني أحسن من أنه يعدل علي.
-
🙂 سبقتني ممتاز
-
هذي المشكلة من عندك ، أبو عبدالله استطاع فتح ملفي وعدل على نموذجي وكل حاجة زي الفل. مرفع لكم الملف أخرى مضغوط أبجد_هوز_هاوي.rar
-
جرب الآن دالة_جمع.accdb
-
حاليا ضع القيمة صفر ، والليلة أن شاء الله أعمل لك التعديل
-
كما طلبت مع تعديلات في تحويل صناديق الدرجة القصوى من تسمية إلى نص ووضع تحقق من القيم المدخلة لدرجات الطالب بناء على الدرجة القصوى. دالة_جمع.accdb
-
لقد عملت نسخة من النموذج وعدلت عليه وتركت الأصل كما هو للمقارنة. أبجد_هوز.mdb
-
حاول اختيار هذه القيمة لهذه الخاصية كما هو في الصورة ، فستتخلص من التداخل في تحرير نفس السجل لأكثر من مستخدم.
-
هذا حل سيناسبك ويرضيك Data_Hawiii_01.accdb
-
هناك حل آخر ولكنه عند النقر المزدوج ستلحظ رمشة خفيقة - أولا قلل من عرض النموذج ، فعرض النموذج مبالغ فيه. - ثانيا فعل حدث Form_Resize ليكون بالشكل التالي: Private Sub Form_Resize() DoCmd.Maximize End Sub
-
للعلم فقط بما أنك حولت نوع الحقل إلى رقمي فلا داعي لدالة Int لا تستخدم أسماء عربية للجداول ولا للحقول ، وإذا كانت إنجليزيتك ضعيفة فاستخدم العربية بحروف انجليزية مثل السيارات تكتبها Sayyarat وللإحتراز ضع كل الأسماء العربية للجداول والحقول بين الأقواس المربعة [ ]