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

نجوم المشاركات

  1. أ / محمد صالح

    أ / محمد صالح

    أوفيسنا


    • نقاط

      7

    • Posts

      4,431


  2. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      6

    • Posts

      9,814


  3. مسفر

    مسفر

    الخبراء


    • نقاط

      4

    • Posts

      365


  4. د.كاف يار

    د.كاف يار

    الخبراء


    • نقاط

      4

    • Posts

      1,681


Popular Content

Showing content with the highest reputation on 10 يول, 2021 in all areas

  1. ليس هنالك أحد أعلم من الثاني جميعنا متعلمون فلن ولن يصل أحد إلى العلم الكامل فهنالك ما يعجز عنه الإنسان لكن المحاولة دائما يتعلم منها الإنسان وأعلم انه لا يوجد طريق واحد للوصول إلى ما نريد بل هنالك عدة طرق فما دام الطريق يوصلك لما تريد فهو المهم أشكر لك إطراءك لي رغم أنني لا أحب هذه الأمور فالهدف فقط أن يصل العضو إلى ما يريد من سؤاله سواء من مسفر أو غير مسفر أشكرك مرة اخرى وأتمنى لك التوفيق وان يفتح الله لك أبواب الرزق والخير
    4 points
  2. من وجهة نظري المتواضعة لن نستفيد لان هذه الدالة لها طريقة في العمل حيث ترجع قيمة حقل واحد او عدة حقول * في نفس السجل بناء على المعايير المحددة DLookup( expr, domain, [criteria] ) expr = الحقل المطلوب ارجاع قيمته domain = المجال قد يكون جدول او استعلام criteria = المعيار وهو اختياري ويكتب بشكل مختلف وفقا لنوع الحقل بينما between and نستخدمها للحصول على سجلات محددة ببداية ونهاية قد تكون النتيجة سجل واحد او اكثر او لا سجلات وفقا للنطاق المحدد من الى وحتى لو قمنا بعملها ويكون لدينا عدة سجلات تحقق معيار الدالة ستقوم بارجع القيمة الاولى لذا اذا اردنا الحصول على قيمة صحيحة نستخدم معيار فريد وبناء عليه اشرح فكرتك والنتيجة التي تريدها فقد تجد حل اكثر فاعليه تحياتي ــــــــــــ * - يوجد شرح في الموقع لاستخدامها لعدة حقول بواسطة الاستاذ @jjafferr
    2 points
  3. حديث خطأ تفضل هذا التعديل NewData22.zip
    2 points
  4. السلام عليكم ورحمة الله وبركاته وبعد سنين من العمل في كود الأكسس ، لازلت الى الأمس القريب كنت اعاني من عدم حصولي على النتائج المطلوبة من الجدول (بدون مجموعة محاولات) ، اذا كان المعيار هو حقل تاريخ الى ان حصلت على الكود التالي ، والذي اصبح التعامل فيه مع التاريخ سهلا انا احفظ هذه الوحدة النمطية بإسم fDateFormat: Function DateFormat(varDate As Variant) As String 'Purpose: Return a delimited string in the date format used natively by JET SQL. 'Argument: A date/time value. 'Note: Returns just the date format if the argument has no time component, ' or a date/time format if it does. 'Author: Allen Browne. allen@allenbrowne.com, June 2006. ' 'calling the Function: DateFormat(The_Date_Field) 'a = dlookup("[some field]","some table","[id]=" & me.id & " And [Date_Field]=" & DateFormat(The_Date_Field)) ' If IsDate(varDate) Then If DateValue(varDate) = varDate Then DateFormat = Format$(varDate, "\#mm\/dd\/yyyy\#") Else DateFormat = Format$(varDate, "\#mm\/dd\/yyyy hh\:nn\:ss\#") End If End If End Function وطريقة استعمال الكود كالأمثلة التالية: a = dlookup("[some field]","some table","[id]=" & me.id & " And [Date_Field]=" & DateFormat(The_Date_Field)) او ("Select DISTINCT cen, [Date] From TTTT Where [Date]=" & DateFormat(Me.Idate)) او عدة طرق اخرى اليكم مثالين في البرنامج المرفق ، كيف ان الدالة DateFormat تعطيني نتائج صحيحة مباشرة ، بينما استخدام الطريقة التقليدية للتاريخ لا تعطيني النتيجة مباشرة: الجدول يحتوي على تاريخين ، 1-5-2015 و 2-5-2015 ، وهنا سنقوم بالتجربة على التاريخ 1-5-2015 (ويمكنكم استخدام التاريخ التاثي 2-5-2015) ، وللتأكد من نتائجنا ، عملنا استعلامين : و استخدام الكود في Recordset 1. مع استعمال الدالة DateFormate Set rst = CurrentDb.OpenRecordset("Select DISTINCT cen, [Date] From tbl_T Where [Date]=" & DateFormat(Me.idate)) rst.MoveLast: rst.MoveFirst RC1 = rst.RecordCount والنتيجة صحيحة ، كما تدل عليه نتيجة الاستعلام في الاسفل: 2. مع عدم استعمال الدالة DateFromat ، وانما استخدام الطريقة التقليدية للتاريخ: Set rst = CurrentDb.OpenRecordset("Select DISTINCT cen, [Date] From tbl_T Where [Date]=#" & Me.idate & "#") rst.MoveLast: rst.MoveFirst RC2 = rst.RecordCount والنتيجة خطأ ، كما تدل عليه نتيجة الاستعلام في الاسفل: استخدام الدالة Dcount 3. مع استعمال الدالة DateFormat RC3 = DCount("*", "tbl_T", "[Date]=" & DateFormat(Me.idate)) والنتيجة صحيحة ، كما تدل عليه نتيجة الاستعلام في الاسفل: 4. مع عدم استعمال الدالة DateFormat ، ، وانما استخدام الطريقة التقليدية للتاريخ: RC4 = DCount("*", "tbl_T", "[Date]=#" & Me.idate & "#") والنتيجة خطأ ، كما تدل عليه نتيجة الاستعلام في الاسفل: جعفر 84.DateFormat_Examples.mdb.zip
    2 points
  5. أستاذي الفاضل محمد صالح الله يبارك في حضرتك وجزاك الله خيرا احسنت استاذي الفاضل تم التطبيق ونجحت العملية بشكل ممتاز :وبقي عندي طلب ولو اتعبت حضرتك يا طيب طلبي هو كيف يكون الجمع التراكمي حسب الشرط الذي ذكرته أعلاه من الشيت الاول والشيت الثاني والشيت الثالث ممنون منك يا طيب اي انه لو كان هذا الشخص موجود في الشيت الاول وموجود في الشيت الثاني وموجود في الشيت الثالث ولديه تسويقات في الشيتات الثلاثة كيف الجمع الجمع التراكمي لكميته المسوقة حسب رقم هويته
    1 point
  6. جرب كده ( شغال تمام) الملف بالمرفقات رسالة.accdb
    1 point
  7. فعلا لم افهم من الوهلة الاولى اعذرني انا فهمي على قدي طيب ممكن نعمل الامر Me.total2 = DSum("[Total]", "tbl_1", "[Date_of_invoice] between #" & Format([Forms]![frm_2]![st], "mm/dd/yyyy") & "# and #" & Format([Forms]![frm_2]![en], "mm/dd/yyyy") & "#") مرفق ملف للتجربة لعله المطلوب test2.accdb
    1 point
  8. اخي العزيز هذا الموقع للتعلم وطرح المشاكل ومناقشتها ...فلاداعي للتأسف ... وانا اضم صوتي معك بان يعطينا احد الاخوة خطوات العمل على شكل نقاط ونكون له من الشاكرين
    1 point
  9. اجعل مصدر سجلات النموذج استعلام وضع فيه معيار الفلترة Between Nz([forms]![frm_2]![st];"01/01/1900") And Nz([forms]![frm_2]![en];"01/01/2100") في النموذج اضف مربعي نص للتاريخ من الى اضف مربع نص ثالث واجعل قيمته تساوي =Nz(DSum("[Total]";"q_1");0) هذه الطريقة الاسهل وبدون الحاجة لمعيار الدالة dsum مرفق مثال بسيط test.accdb
    1 point
  10. معذرة لم اكن افهم قصدك لكنني ركزت على رسالة الخطأ من الاستعلام
    1 point
  11. السلام عليكم 1- قم بتغيير Data Type لحقل (باركود الموظف بالعربي) الى Number ثم اعمل علاقة بينه وبين ID في جدول EnEX 2- حقل الباركود غير موجود في استعلام CHIK فقم بأضافته 3- حينما يكون حقل EnDate2 و حقل ExDate2 فارغين فانه يعطيك خطأ اذا ادخلت اكثر من سجل جرب ماذكرته ووافني بالنتيجة
    1 point
  12. صدقت استاذي الفاضل محمد صالح --- فعدم الصبر على التعلم من مشاركات الاساتذة الخبراء هي مشكلتنا الكبرى الف شكر على المشاركة التى شفت ووصفت الدواء واوضحت الدواء
    1 point
  13. تفضل التعديل كما أمل حذف الصور حفاطا على خصوصية اصحابها شكرا لتفهمك Main.mdb
    1 point
  14. تفضل :::: انت ليش عامل استعلامين :::: المشكلة عندك مافي علاقه بين الاستعلامين الموجودين في النموذج عملت لك استعلام واحد يعتمد عليه النموذج ... مرفق.accdb
    1 point
  15. يفضل البدء في البرنامج بنفسك وإذا احتجت لنقطة أو اثنين ستجد المساعدة لكن الواضح لي أنه لا يوجد برنامج وتريد من الآخرين إنشاؤه من الصفر وهذا صعب في باب المساعدات المجانية
    1 point
  16. الصور الثلاث لا تفيد في الوصول لسبب المشكلة ففي الصورة الأولى معنى الرسالة أن الاكسل لا يجد الكائن أو المكتبة البرمجية (لقد استعملت اسما لعنصر غير موجود أو خطأ إملائي في اسم الكائن الذي لا يظهر في الصورة) لذلك كما أخبر الأستاذ عبد الله يفضل إرفاق ملفك أو جزء منه يوضح المشكلة وبإذن الله نتوصل للحل
    1 point
  17. اخي ابوالحسن 🙂 حياك الله 🙂 ورجاء لا تنسى قوانين المنتدى ، وكما اخبرتك سابقا ، سؤال لكل موضوع ، وليس برنامج لكل موضوع 🙂
    1 point
  18. لي الشرف 🙂 وحياك الله 🙂 جعفر
    1 point
  19. بصراحة شفرة في قمة الروعة يعني مشكلة التاريخ بهذي الطريقة انتهت نهائيا و يعامل التاريخ كأنه رقم شكرا لك اخي الكبير @jjafferr اتفضل التعديل يابو الحسن 555NewData2.zip
    1 point
  20. المعادلة كويسة الله يعطيك العافية بس استفسار فينا حسب الرقم والتاريخ انت خليتها حسب الرقم فقط بكرر شكري
    1 point
  21. كل هذا ممكن بالكود ... اضافة نماذج . تقارير . استعلام . حقل في جدول . وحدات نمطيه ... الخ ...
    1 point
  22. اما بالنسبة لي : اولا : افترض اني استلمت جهاز العميل ؟ مالذي اريد تحديثه في البرنامج ..... اسجل التحديثات المطلوبة ثانيا : اترجم ذلك على شكل اكواد في برنامج صغير للقيام يتلك المهمة ..... يعني اصنع برنامج يقوم باحداث تلك التحديثات عندما ارسلة للعميل عن طريق البريد تلقائيا بدون تدخل من العميل بجرد تشغيله يقوم بالمهمة ... بذلك اكون قد حدثت برنامج العميل تلقائيا عن طريق هذا البرنامج الصغير ..... ولكن وقبل كل شيئ يقوم البرنامج باخذ نسخة احتياطية قبل التنفيذ وحفظها في جهاز العميل حتى يسهل العودة اليه في حال حدوث مشاكل لا سمح الله .... وطبعا العميل ايضا قد اخذ نسخة احتياطية لعملة من قبل .... هذه طريقتي .....
    1 point
  23. اعملها نفس الطريقة السابقة ..... حاول ... لان المحاولة هي سر التعلم .... يجب ان تحاول مرة وعشرة .... ثم اطرح ما يشكلك هنا .... تجب من لدية معلومة سوف يفيدك ولن يبخل عليك عندها لن تنسى المعلومة ... تحياتي لك ..
    1 point
  24. وعليكم السلام ورحمة الله وبركاته كيف حالك استاذ خيري حسب فهمى لطلبك ارفق لك هذا الملف اظافة الى طلبات اخرى من مشاركة اخرى https://www.officena.net/ib/topic/109798-نرنيب-الطلبة-حسب-المدرسة-ككل-وحسب-الفصل/ تحياتي SA.xlsm
    1 point
  25. أسأل الله في هذه الساعات المباركات أن ييسر أمرك لكل خير ويفرج همك وغمك ويبارك في علمك وعملك ومالك وأهلك وولدك،، وأن يجعل ما تقدمه من علم شفيعا لك في الدنيا والآخرة ونسأل الله أن يعم بهذا كل المشرفين الفضلاء وكل من قرأ وأجاد وأفاد...
    1 point
  26. ارفق الملف لتحديد سبب المشكلة
    1 point
  27. سبحان الله الموضوع قديم جدا ، عجبا .. كيف تخاطب صاحب موضوع كتبه من اكثر من 16 سنة
    1 point
  28. أثناء حماية شيت الحل review --> protect sheet يمكنك تحديد اختيار use auto filter للسماح باستخدام التصفية التلقائية رغم وجود الحماية
    1 point
  29. وعليكم السلام ورحمة الله وبركاته قم بتقسيم قاعدة البيانات الى قاعدة بيانات بها الجداول فقط ( الخلفية ) والاخرى التي بها الايتعلامات والنماذج والتقارير والوحدات النمطية ( الامامية ) وبعد عمل ربط بين القاعدتين يمكن التعديل في قاعدة البيانات الامامية وارسالها الى العميل تحياتي
    1 point
  30. اسمحوا لي بالتداخل معكم اخي وحبيبي ابو ابراهيم .. اسمح لي بقفل الموضوع صاحب الموضوع معروف لدينا ، وضع فوقها اكثر من نقطة يكفي انه لم يرد على الاخ مسفر
    1 point
  31. حسب فهمي للمطلوب وعذرا إذا اختلف يمكنك وضع هذه المعادلة في الخلية D2 =IFERROR(IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)=1,D1+1,D1),1) إن شاء الله تكون هي المطلوب
    1 point
  32. الحمدلله 🙂 طريقة التخطيط والتنفيذ : 1. اجعل الحقل/مربع النص كاملا للرقم ، واحذف الهوامش الاضافية لجميع الحقول: . 2. كان واضح ان المطلوب هو ان عرض مربع النص يجب ان يتماشى مع عدد الارقام فيه ، وعرض الارقام بالنسبة للارقام الانجليزية ثابت لجميع الارقام ، وبعد تحليل النتيجة في الصورة ، كعدد ارقام ، وعرض مربع النص : ، اتضح ان كل حرف محتاج الى 145.5 تويب Twip (وحدة قياس الاكسس) ، وبتقنين الرقم وبعد عدة تجارب توصلت الى الرقم 140 ، لذلك ، اذا استعملت خط Font آخر ، او الخط بحجم اكبر/اصغر ، فيجب عليك تغيير هذه القيمة ، بالتجارب 😁 اذن ، عرض كل حقل يحتاج الى معرفة عدد الارقام ف الحقل ضرب 140 ، للحصول على هذا الرقم لكل حقل (هذه معادلتك) ، جعلنا القيمة في المتغير fld_value عليه يصبح عرض كل مربع (وعلشان نعرف عدد الارقام في الحقل ، نستخدم الدالة Len ، ويجب تحويل الرقم الى نص CStr ، للحول على النتيجة الصحيحة للدالة) : . وفي آخر سطر من المعادلات اعلاه ، جمعنا محموع عرض هذه المربعات في المتغير width_Added ، . 3. العرض المتوفر هو width_Avail : عرض التقرير - هامش اليمين لبكرة الطابعة - هامش اليسار لبكرة الطابعة : . 4. اذن في عملنا اعلاه ، عرض جميع مربعات النص يكون صحيح ، ويحتوي على الرقم كاملا فيه ، بالعرض (الضيق) الذي يناسب الرقم ، ولكنه لا علاقة له بالعرض الحقيقي الموجود في التقرير ، لذا ، سنلاحظ انه ترك مسافة فارغة زائدة عن حاجة المربعات ، 5. هنا قمت انت بحساب عدد الحقول التي سيتم عرضها في التقرير ، الحقول التي مجموعها اكبر من صفر ، وفي المتغير fICnt : . 6. المعادلة التالية تقوم باخذ عرض التقرير ، ناقصا مجموع عرص المربعات ، فيعطينا المسافة الفارغة الزائدة عن حاجة المربعات : فنقوم بتوزيعها بالتساوي بعدد الحقول ، فيصبح نصيب كل مربع : . 7. اذن عرض المربع النهائي سيصبح: عرض المربع الحقيقي (رقم#2 اعلاه) + القيمة المضافة / الاضافية (رقم #6 اعلاه) : . . جعفر
    1 point
  33. السلام عليكم ورحمة الله استعمل الزر "Actualiser" للفترة... إحصاء.xlsm
    1 point
  34. تفضل يا سيدي 🙂 . وهذا الجزء من الكود الذي تم تعديله: Me.FilterOn = True Me.Filter = "[yer] = " & MyYear & " and [num] ='" & MyNumnf & "' and [nu] ='" & MyMntj & "' and [NameEmb] ='" & MyMonth & "' and [jh] ='" & MyNoa & "'" ' يتم حساب عدد الحقول التي بها أرقام For i = 1 To 74 fld_value = DSum("fld" & i, "tbl", "[yer] = " & MyYear & " and [num] ='" & MyNumnf & "' and [nu] ='" & MyMntj & "' and [NameEmb] ='" & MyMonth & "' and [jh] ='" & MyNoa & "'") If fld_value > 0 Then 'Debug.Print fld_value 'If DSum("fld" & i, "tbl", "[Name1]='" & Myfilter & "'") > 0 Then flCnt = 1 + flCnt 'إظهار الحقول غير الفارغة Me("fld" & i & "").visible = True Me("lbl" & i & "").visible = True Me("s" & i & "").visible = True ' حساب عرض كل حقل Me("fld" & i & "").Width = Len(CStr(fld_value)) * 145.5 Me("LBL" & i & "").Width = Len(CStr(fld_value)) * 145.5 Me("s" & i & "").Width = Len(CStr(fld_value)) * 145.5 End If Next i If flCnt = 0 Then MsgBox "لا توجد حقول بها قيمة", , "خطأ" DoCmd.CancelEvent Exit Sub End If ' حساب عرض كل حقل 'For i = 1 To 74 'Me("fld" & i & "").Width = Me.Name1.Left / flCnt 'Me("LBL" & i & "").Width = Me.Name1.Left / flCnt 'Me("s" & i & "").Width = Me.Name1.Left / flCnt 'Next i ' إعادة توزيع الحقول غير الفارغة For i = 74 To 1 Step -1 Me("fld" & i & "").Left = WidthFld Me("lbl" & i & "").Left = WidthFld Me("s" & i & "").Left = WidthFld If Me("fld" & i & "").visible Then 'WidthFld = Me("fld" & i & "").Width + WidthFld WidthFld = Me("s" & i & "").Width + WidthFld End If Next i جعفر مطابقة موجودات2.zip
    1 point
  35. السلام عليكم اخي العزيز تذهب الى ورقة الخصائص ومن تنسيق في الاسفل تختار قابل للنمو --- نعم والشرح في الصورة المرفقة تحياتي
    1 point
  36. جرب هذه المعادلة في D2 =INDEX(codes!B$2:B$30, MATCH(INT(MID(B2, 8, 2)), codes!A$2:A$30,0)) بالتوفيق
    1 point
  37. السلام عليكم ورحمة الله غير العبارة Dim ahmed As Range الى Dim ahmed As long و سيعمل معك الكود
    1 point
  38. السلام عليكم جميعا مرفق ملف يحتوي على كود لتصدير جميع أو جزء من أوراق العمل إلى ملف PDF واحد ، أرجو الفائدة للجميع مع خالص احترامي و تقديري export_to_PDF.rar
    1 point
  39. أخوتي الأعزاء في المرفق أربعة جداول ، للموظفين و الادارات و الاقسام والجنسيات ( من وحي طلب الأخ a_aliser85 ) ومن حاجات عامة غالبة ، وهي المرحلة الأولى و الأساسية. وحتى نبدأ بالفحص أرسلنا الجداول لتتحلى ببعض السجلات لغايات الحراك المتوقع في المشروع ، وقد كنت افترضت بعض الأساسيات وقمت بانشاء مجموعة من العلاقات الضابطة بين الجداول ( والتي لا احبها ) وان كانت مرحلية وضرورية عند بعض المناهج البرمجية ، فصعب على الأخ العزيز ، مواكبة الامر ، فطلب مني تجهيز نموذج لادخال المعلومات ( قفزة مرحلية رهيبة ) من دراسة وتحليل وانشاء علائق جدولية الى النماذج مباشرة ،، ( لا بأس ) ، بدأت بنموذج افتراضي تخيلي سريع فأخفقت ومن السرعة ووضعت اسم الجدول الافتراضي Table1 في أحد الكودات بدل اسم الجدول الاصلي tblEmployees ، فحدثت مشكلة معه ، أوقفت العمل خلال اليومين الماضيين ، لأفكر كيف اريد ان اكمل المسيرة . وجدت أنني لن أستطيع أن أغير منهجي وطريقة تفكيري و أسلوب عملي ، حين يتطلب الأمر مني تجهيز أي تطبيق أحاول أن انجزه حسب الأصول (فيما أعرف) أراعي ما أعرف في الجداول ، لا أحب استخدام المعالج ، أراعي نسقي في النماذج كوني أرتاح لجمالية النماذج و إختيار الألوان التي أرى فيها الهدوء و الراحة ، وأظن أنني لن أتغير لأي سبب ....وأظن أنني لن أجد تفاعلا وتجاوبا كما اتمني لذا قررت أن أستمر كما بدأت أطرح ما لدي و اتفاعل مع نفسي ومع من يحاورني ..... وأستمر الى أن يشاء الله ..... في المرفق أربعة نماذج نموذج رئيسي للموظفين ومعلوماتهم الرئيسية الأولية ، ونموذج لصيانة جدول الادارات ، ونموذج لصيانة جدول الأقسام ، ونموذج لصيانة جدول الجنسيات ، وهذه الثلاثة الأخيرة مرتبطة بالنموذج الرئيسي ، وتعمل عند الحاجة اليها لاضافة ما يتعلق بها أثناء تسجيل معلومات الموظف ، وحال الخروج من أي منها تتحدث معلومات الحقل المعني في النموذج الرئيسي مباشرة باستخدام Forms!frmAddNew![strNationality_ID].Requery في المرفق شريط أزرار مجسم – تفاعلي - تقليدي ( عندي ) يعمل بالتعاون مع الوحدة النمطية BTN SUBS ، ويوفر لنا معلومات عن الرقم الوظيفي و عدد السجلات ، ويخدم الوصول للسجل الأول و الأخير و السجل التالي و السابق ، ومنه نطلب إضافة (موظف) جديد يساعد عمله صندوق رسائل لتأكيد الرغبة بالإضافة ، وأخيرا زر الإغلاق. هذا وسأقوم في المشاركة التالية بإضافة سجلات متكاملة في الجداول الرئيسية ، كي نتمكن من التطبيق عليها ، وتساهم معنا في التأكد من صحه تجوالنا في المشروع. ولي رجاء عند الإخوة حال الرغبة في المشاركة وإضافة نسخة من المرفق ، تغيير إسم المرفق حتى لا يحصل تضارب في النسخ لدي الجميع ، وحتى نتمكن من تمييز المرفقات . هذا دليل مستخدم أولي User Manual ، تراكمه سيكون بإذن الله جزء من التطبيق كملفات مساعدة Help Files . وبأدناه صور توضيحية مساعدة. وللحديث و التطبيق بقية .... والله من وراء القصد ... .......... تم تعديل المرفق ........ NA_EmpProj_2A.rar
    1 point
  40. ثمانية مطلوبات !!!!!! ....... وكل واحد منهم يحتاج الكثير من العمل !!!!! الهدف الأساسي للمنتدى هو تبادل الخبرات ومساعدة كل منا للآخر فيما لا يستطيع عمله وليس في أن يصمم أحدنا للآخر برنامجا كاملا (فما مقابل الوقت والجهد المبذول في تصميم وبرمجة الملف؟؟!!) فالأفضل هو قراءة الموضوعات التي يتعلم منها الإنسان تصميم برنامجه بنفسه وإذا عجز عن نقطة أو اثنين على الأكثر يعرضها ساعتها سيجد الجميع يساعده
    0 points
×
×
  • اضف...

Important Information