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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    183

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

  1. إليك هذا التعديل اخي الكريم :- Private Sub C8_AfterUpdate() Me.s1 = Null Me.s2 = Null Me.s3 = Null Me.s4 = Null Select Case Me.C8.ListIndex Case 0 Me.s1 = "X" Case 1 Me.s2 = "X" Case 2 Me.s3 = "X" Case 3 Me.s4 = "X" End Select End Sub
  2. حسناً.. سألقي نظرة على الملف حال وصولي للكمبيوتر 🤗
  3. ما شاء الله عليك ،، ابدعت بتحوير الفكرة للمطلوب الذي تريده . بهذا تستطيع اغلاق الموضوع باختيار أفضل إجابة 😇 .
  4. وعليكم السلام ورحمة الله وبركاته .. أولاً يجب تنبيهك الى ضرورة حذف المسافة الزائدة من الاختيار الرابع من الكومبوبوكس C8 الآن في حدث بعد التحديث ، استعمل الكود التالي :- Private Sub C8_AfterUpdate() Me.s1 = False Me.s2 = False Me.s3 = False Me.s4 = False Select Case Me.C8.Value Case "سكن اجتماعي" Me.s1 = True Case "سكن أقارب" Me.s2 = True Case "سكن مؤجر" Me.s3 = True Case "محل غير قابل للسكن (مستودع، فوضوي، قبو)" Me.s4 = True End Select End Sub حيث استخدمت الدالة Case بدلاً من الجمل الشرطية If وطبعاً يوجد حل آخر بعيد عن تحديد القيم النصية من الكومبوبوكس ( وخصوصاً أنها باللغة العربية ) ، بحيث نستخدم الـ Index أو فهرس الكومبوبوكس نفسه كالتالي :- Private Sub C8_AfterUpdate() Me.s1 = False Me.s2 = False Me.s3 = False Me.s4 = False Select Case Me.C8.ListIndex Case 0 Me.s1 = True Case 1 Me.s2 = True Case 2 Me.s3 = True Case 3 Me.s4 = True End Select End Sub وهذا أيضاً حل ثالث :- Private Sub C8_AfterUpdate() Me.s1 = (Me.C8.Value = "سكن اجتماعي") Me.s2 = (Me.C8.Value = "سكن أقارب") Me.s3 = (Me.C8.Value = "سكن مؤجر") Me.s4 = (Me.C8.Value = "محل غير قابل للسكن (مستودع، فوضوي، قبو)") End Sub IF.accdb
  5. وهذه فكرة كما أشرت لك بتغيير نوع مربع نص Gender إلى مربع تحرير وسرد حيث سيكون له الحدث بعد التحديث = Private Sub Gender_AfterUpdate() If Me.Gender.Value = "ذكر" Then Me.الديانه.RowSource = "مسلم;مسيحي" Me.الديانه.Value = "مسلم" Me.الحالة_الاجتماعية.RowSource = "متزوج;أعزب;مطلق;أرمل" Me.الحالة_الاجتماعية.Value = "متزوج" ElseIf Me.Gender.Value = "أنثى" Then Me.الديانه.RowSource = "مسلمة;مسيحية" Me.الديانه.Value = "مسلمة" Me.الحالة_الاجتماعية.RowSource = "متزوجة;آنسة;مطلقة;أرملة" Me.الحالة_الاجتماعية.Value = "متزوجة" End If End Sub بيانات المدرسين (1).mdb
  6. حاول التعديل بحيث يكون مربع النص المخصص للإدخال في النموذج الرئيسي بدلاً من الفرعي وإجراء تعديلاتك على هيكلة الكود بحيث يتعامل مع نموذج فرعي
  7. حسناً الآن لتلافي عدم تمكنك من الدخول الى وضع التصميم ولا اعلم السبب ( إلا اذا كنت قد منعت مفتاح الـ Shift ) . عليك ما يلي :- 1. انشاء قاعدة بيانات جديدة فارغة . 2. استيراد جميع العناصر المكونة لمشروعك من قاعدة البيانات التي لم تستطع الدخول لها في وضع التصميم . 3. التأكد من جميع المكتبات التي كانت هناك في المصدرالتالف بإضافتها الى القاعدة الجديدة .
  8. وعليكم السلام ورحمة الله وبركاته ,, اعتقد ان هناك نقطة تفصل بين المنطق والتطبيق .. المنطق ان يتم جعل مربع النص = مربع تحرير وسرد يحتوي قيمتين ( ذكر ، أنثى ) بحيث اذا كان ذكر يتم عرض القيم الذكورية في مربعي التحرير والسرد ( الحالة الاجتماعية و الديانه ) والعكس عندما تكون قيمة كومبوبوكس النوع = أنثى . التطبيق اذا كان هذا النموذج الموضح في الصورة هو فقط لإدخال البيانات فلا اعتقد انك تحتاج تعقيد في منطق التصميم لأن البيانات والقيم سيتم ادخالها بشكل يدوي من قبل الموظف ، صحيح ؟؟
  9. أخي الكريم @hanan_ms ، أولا اسمح لي بأن يكون تعليقي أول تعليق في موضوعك هذا .. رغم أنيي أحاول جاهداً تفسير معظم الجمل التي تكون في مواضيعك ، إلا أنها ليست بشيء مقارنة مع كمية التداخل والمتاهات والدهاليز التي تعتمدها في تصاميم نماذجك ... دعني أبسط لك الأمر ، في أسلوب مسلسلات الكرتون والقنوات الفاضائية التي تخص الأطفال إن كانت غنائية أو كرتونية ، يكون هناك دراسة لعقل الطفل بحيث ان الطفل الطبيعي وللفت انتباهه الى التلفاز يتم انشاء نمط معين يحاكي العقل البشري ( بغض النظر عن العمر ) للفت الإنتباه له بأساليب تقنية علمية واضحة وبسيطة ( تخيل انها كلها في نهايتها كانت بسيطة ) والهدف شد انتباه الطفل لها . الرابط في كلامي واسلوبك في التصميم هو الفرق فيما بينهامن حيث التشتيت الكبير الذي تصنعه في تصاميمك ,, خذ كلامي برجابة صدر ولا تستاء من كلماتي . فوالله ما هي الا نصيحة أخوية ليست إلا وليس لي فيها غاية سوى أن أدلك على طريق التبسيط في التصميم لإيصال فكرتك بسلاسة وليس بسلاسل ( فرق كبير بينهما ) وشكراً لك على حسن استماعك وقراءتك إن كنت قد وصلت لهذه الجملة .
  10. اذاً الأمر بسيط أخي الكريم .. أولاً ادخل الى التقرير في وضع التصميم ، وقم بتغيير الخط كخطوة أولى لضمان أن المشكلة ليست في آكسيس ثانياً اذا اشتغلت معك قاعدة البيانات بشكلها الطبيعي السابق ، تأكد أولاً من أخذ نسخة احتياطية منها ، ثم إزالة الخط الذي تم اضافته . قد يكون هناك مشكلة في بنية الخط وعدم توافقه مع واجهة معظم التطبيقات كما حصل معك . ثالثاً في حال عدم نجاح أي من هذه الخطوات ، قم بتجربة استخدام الخط مرة أخرى في التقرير ، من ثم ضغط وإصلاح قاعدة البيانات . كلها مجرد احتمالات ما دام الأمر يمنعك من رفع الخط و قاعدة البيانات . أيضاً كخطوة استفسارية .. هل الخط يتم تثبيته من خلال أكواد VBA أو ليس لهذا الموضوع اي وجود في مشروعك ؟؟
  11. وعليكم السلام ورحمة الله وبركاته .. على ما أسلف به أستاي ومعلمي الأستاذ أبو خليل .. ما توضح لي هو أنك تريد تنظيم امتحانات لطلاب في مرحلتين :- الاختبار الشفوي : يقسم الطلاب لمجموعات في جلسات صباحية ومسائية . اختبار اللياقة : يجمع الطلاب من مجموعات شفوية مختلفة في جلسات أكبر . في المرحلة الأولى : كفكرة سنحاول التقسيم للاختبار الشفوي بحيث نأخذ كل صف دراسي على حدة ، ثم نقسم طلاب الصف لمجموعات ( كل مجموعة 20-25 طالب حسب حجم القاعة ) → على سبيل المثال طبعاً ؛ ثم نوزع المجموعات بين الفترتين الصباحية والمسائية . على سبيل المثال :- الصف الثالث ( 275 طالب ) → 12 مجموعة ( 6 صباحاً ، 6 مساءً ) أما في المرحلة الثانية = التوزيع لاختبار اللياقة ، سنأخذ المجموعات الشفوية الجاهزة وندمجها لتكوين مجموعات لياقة أكبر ( 70 صباحاً ، 60 مساءً ) . قد نأخذ جزء من مجموعة شفوية ونضيفها لمجموعة لياقة ، على سبيل المثال :- مجموعة شفوي 1 ( 22 طالب ) + مجموعة 2 ( 22 طالب ) + مجموعة 3 ( 22 طالب ) + ( 4 طلاب ) من مجموعة 4 = 70 طالب ( جلسة لياقة صباحية ) هذا ما توضح لي كفكرة من خلال سياق التوضيح الذي أوضحه أخونا @أحمد عمروف .
  12. سؤال يطرح نفسه ,, هل البرنامج ما زال بصيغة Accdb ؟؟
  13. لم افهم المطلوب بشكل واضح ... فسر من خلال مثال كي تتوضح الصورة والفكرة التي في ذهنك
  14. وكتوضيح ومشاركة مع أستاذي @ابوخليل .. من المتعارف عليه في تعدد أعمدة الكومبوبوكس ( مربع التحرير والسرد ) أن الـ :- Column(0) تشير إلى العمود الأول و الـ Column(1) تشير الى العمود الثاني ,,,, وهكذا .
  15. وعليكم السلام ورحمة الله وبركاته .. هناك عدة أسباب بعد النظر الى طريقة كتابة الكود .. أذكر منها :- عمليات التحديث المتكررة : الكود يقوم بـ 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 هذه بعض التغييرات والأسباب التي رأيتها ، ما لم يكن هناك حلول أفضل أخرى
  16. رغم أنني لا أشجعك بالإستمرار في النهج الذي تتبعه في مشاريعك ( التسميات العربية ) ، ولكن أنظر لهذه الفكرة البسيطة من خلال دالة تقوم بحساب رصيد الزبون السابقة من نفس الجدول بشرط اسم الزبون كالآتي :- 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
  17. لم تتوضح لي التفاصيل تماماً ، ولكن تستطيع انشاء موضوع جديد كما أخبرتك سابقاً ، وتقوم بالإشارة الى المواضيع التي تريدها ، بحيث تشرح أفكارك شرحاً وافياً يساعد أي شخص يقدم لك حل على فهم الواضع بشكل أفضل ، مع دعم شرحك المفصل بملفات مرفقة للمصدر و الهدف . ونتمنى ان تجد حلاً يلبي احتياجاتك
  18. يسعدني نجاحك في تخطي المشكلة والاستدلال عليها وتلافيها بهذه السرعة العفو يا صديقي ويكفيني تقييمك على مشاركتي
  19. وعليكم السلام ورحمة الله وبركاته .. أخي العزيز @Ahmed_J ، الطرق والحلول ستعتمد اعتماد كلي على بناء استعلامات ( ومتأكد أنك تعلم ذلك ) ، وحتى تبني استعلامك لابد لأي شخص من معرفة أسماء الجداول والحقول ... إلخ . لذا فأرجو منك تكرماً بمساعدتنا بذلك . ومتأكد إننا سنجد الحل بمساعدتك 😇 .
  20. لتلافي الدخول في تفاصيل موضوع مختلف ، لم لا تقوم بفتح موضوع مستقل ، وارفق به مثال ملف اكسل وقاعدة البيانات ( الجدول الهدف )
  21. وعليكم السلام ورحمة الله وبركاته ,, هل هذه النتيجة صحيحة من المطلوب ؟ جرب هذا الاستعلام :- 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; وهناك فكرة تعتمد على استعلامين اثنين أحدهما مبني على الآخر ، ولكني لا اعتقد انك قد ترغب باستعلامين ما دام الأمر يمكن تنفيذه باستعلام واحد بأكثر من شكل .
  22. انظر هذه الفكرة في نموذج واحد ، والتطبيق سيكون نفس المبدأ على باقي النماذج الفرعية Personnel_affairs.zip
  23. نعم تم الإتطلاع على الفكرة التي اقترحتها ، وكانت النتيجة كما أشرت =
  24. مداخلة لا تغني عن فكرة معلمنا @jjafferr بلا شك ، راجع هذا الموضوع :-
×
×
  • اضف...

Important Information