منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف أحمد مناع السبت مايو 05, 2012 2:51 pm

بسم الله الرحمن الرحيم



أخوانى الكرام أهلا وسهلا بك فى درس جديد من دورس هذا المنتدى ....اليوم إن شاء الله تعالى سنتحدث سويا عن كيفية ضغط و عمل نسخة أحتياطية لقاعدة بيانات أكسس المستخدمة فى مشروعك .......فهيا بنا



أولا : تصميم النوافذ


_ قم فتح مشروع جديد .....ثم قم بعمل الاتى :



_ قم بإنشاء نافذة النسخ الاحتياطى و ضع عليها عدد 4 مربعات نصوص وعدد 2 زر أمر وعدد واحد filelistbox كما فى الشكل التالى :



كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object 293190520



ويرجى ملاحظة أننى قمت بضبط مربعات النصوص التى تعرض معلومات عن قاعدة البيانات على النحو الاتى :



txtDatabasename : مربع نص لعرض أسم قاعدة البيانات المستخدمة



txtPath : مربع نص لعرض مسار قاعدة البيانات



txtCreateDate :مربع نص لعرض تاريخ إنشاء قاعدة البيانات



txtSize : مربع نص لعرض حجم قاعدة البيانات .



_ قم بأنشاء نافذة أستيراد النسخة الاحتياطية و ضع عليها عدد واحد فيلكس جريد وعدد filelistbox وعدد 2 زر أمر كما فى الشكل التالى :



كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object 903022175





ثانيا :كتابة الاكواد البرمجية




- بداية قم بأستدعاء المكتبة Microsoft Jet And Replication Object 2.6 Library


وذلك عن طريق " project" ثم أختيار الامر reference



1_ كتابة أكواد نموذج النسخ الاحتياطى .....



_فى قسم التصريحات نقوم بتعريف متغرين الاول ليحمل المكتبة Jet And Replication Object و ليكن je و الثانى من نوع String ليحمل أسم قاعدة بيانات المشروع وليكن DBName....وذلك عن طريق الكود التالى :



الكود:
Dim je    As New JRO.JetEngine
 Dim DBName As String




- فى حدث تحميل النافذة Form_Load نكتب الكود التالى :



الكود:


Private Sub Form_Load()

 DBName = "pj.mdb"
 If Dir(App.Path & "\Backup", vbDirectory) = "" Then _
  MkDir App.Path & "\Backup"

  File1.Path = App.Path & "\Backup"

 If Dir(App.Path & "" & DBName) = "" Then _
    Exit Sub

    txtDatabasename = DBName
    txtPath = App.Path
    txtCreateDate = FileDateTime(App.Path & "" & DBName)
    txtSize = FileLen(App.Path & "" & DBName) & " بايت"
'
End Sub

 





شرح الكود :



السطر الاول : قمنا بجعل المتغير DBName يحمل أسم قاعدة البيانات pj.mdb



السطر الثانى : أستخدمنا جملة الشرط if للتأكد من أن مجلد Backup موجود فى نفس مجلد البرنامج .....لذلك أستخدمنا الامر DIR و الذى يستخدم فى معرفة صحة مسار معين ..ثم وضعنا المسار بأستخدام الدالة App.Path ...فإن لم يكن موجود ينتقل للسطر الثالث .



السطر الثالث : قم بإنشاء المجلد Backup فى مسار البرنامج ...ويرجى ملاحظة أننا أستخدمنا الامر MkDir وهو الخاص بإنشاء المجلد فى المسار المراد App.Path .



السطر الرابع : جعلنا مسار FILE يساوى مسار مجلد النسخ الاحتياطى Backup ...



السطر الخامس و السادس : أستخدمنا جملة الشرط IF للتأكد من أن قاعدة البيانات موجودة و الا الخروج من الاجراء.



السطر السابع وحتى العاشر :هى جعل مربعات النصوص الاربعة تعرض معلومات عن أسم قاعدة البيانات و المسار الموجودة فية و تاريخ الانشاء و حجم قاعدة البيانات ....ويجب ملاحظة أننا قد أستخدمنا الدالة FileDateTime و التى تعطى معلومات عن وقت وتاريخ أنشاء أى ملف ...كما أننا أستخدمنا الدالة FileLen و التى تعرض حجم الملف .





_ برمجة زر "تنفيذ عملية النسخ ".....بداية نقوم تعريف المتغيرات التالية عند الضغط على الزر ...وذلك بأستخادم الكود التالى :



الكود:


 Dim Filename As String, i As Integer, inteFilename As Variant
 Dim Numeric  As Integer, bFilename As String





قمنا بالاعلان عن عدد 5 متغيرات كما سبق 2 من نوع String و عدد 2 من نوع Integer و متغير واحد من نوع Variant ....وسيتم شرحها عند أستخدام تلك المتغيرات ...



- أول كود سيتم كتابتة فى هذا الزر بعد الاعلان عن المتغيرات السابقة هو التأكد من وجود قاعدة البيانات وإلا يتم الخروج من الاجراء...وذلك كما يلى :



الكود:


 

 If Dir(App.Path & "" & DBName) = "" Then Exit Sub




ثم بعد ذلك نقوم بكتابة الكود التالى :



كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object 913366562



شرح الكود السابق :



السطر الاول : أستخدمنا جملة الشرط IF للتأكد من أن مجلد النسخ الاحتياطى لايوجد به أى نسخ أخرى و ذلك عن طريق الامر File1.ListCount = 0 ...وطبعا قد أخبرنا البرنامج أنه عند بداية تحميل النافذة يجعل مسار File1 يساوى مسار مجدل النسخ Backup ....وبالتالى فإن File1.ListCount تساوى صفر معنى ذلك أنه لا يوجد أى نسخ أحتياطية أخرى ....ومن ثم فإن حدث ذلك فلينتقل الى السطر الثانى ,,,,,,,,,,,,,



السطر الثانى : جعلنا المتغير Je _والذى قد أعلانا عنه فى قسم التصريحات بأنه يساوى JRO.JetEngine وهو المزود الخاص بكائنات النسخ المتماثل _ يقوم بضغط قاعدة البيانات و نسخها و ذلك عن طريق الامر CompactDatabase ثم وضعنا مسار قاعدة البيانات بين علامتى تنصيص كما يلى :



"Data Source=" & App.Path & "" & DBName & ";"



بعد ذلك وضعنا فاصلة , ثم بعد ذلك وضعنا أيضا المسار الذى سيتم نسخ قاعدة البيانات فية و ايضا تحديد أمتداد قاعدة البيانات التى سيتم نسخها ...وأنا فى هذا المثال أردت نسخ قاعدة البيانات على هيئة ملف Backup



السطر الثالث : ما زلنا فى جملة الشرط if ...فلنفترض أن هناك نسخ موجودة بالفعل من قاعدة البيانات فى مجلد النسخ Backup ...ويحمل نفس الاسم ...فى تلك الحالة أنتقل للسطر الرابع



السطر الرابع : قمنا بأستخدام المتغير Filename الذى قد أعلانا عنه من قبل و جعلناه يساوى عدد عناصر File1 ناقص واحد ....



ومن السطر الخامس حتى العاشر : قمنا بعمل حلقة تكرار لحساب عدد النسخ الاحتياطية ووضع رقم لكل نسخة ...فبدئنا حلقة التكرار من 1 حتى عدد حروف القيمة المخزنة فى المتغير Filename وذلك عن طريق الدالة Len والتى تقوم بحساب طول النص ...ويرجى ملاحظة أننا أستخدمنا المتغير i الذى قد صرحنا عنه من قبل .



ثم بعد ذلك وضعنا المطلوب تنفيذة فى حقلة التكرار تلك ....و أول سطر تم وضعة فى حلقة التكرار هو جعل المتغير inteFilename يساوى القيمة المخزنة فى Filename لكن بعد حذف أخر حرف منه وذلك بأستخادم الدالة Mid والتى تعيد عددا من الأحرف قدره length بدءا من حرف معين هو i، في سلسلة نصية string ...فمثلا عندى متغير يسمى m يحتوى على النص (ahmed) ...ثم قمت بأستخدام الكود التالى :



Label1.Caption = Mid(m, 1, 3) ...فإن النتيجة ستكون ahm ..معنى ذلك أننى قلت للدالة Mid أبقى فقط على 3 حروف من النص (ahmed) مع بدء العد من الحرف رقم 1 وهو فى مثالنا هذا يساوى (a)...أما أن كتبت الكود على يلى :



L.Caption = Mid(m, 2, 3)...فأن النتيجة ستكون hme ...وذلك لان الدالة بدأت العد من الحرف رقم (2)ثم بقت على 3 حروف



بعد ذلك أستخدمنا جملة شرط مركبة للتأكد من أن المتغير inteFilename لا يحتوى على "." فإن حدث ذلك ....نستخدم جملة شرط أخرى مع الدالة IsNumeric لمعرفة ما إذا كان المتغير inteFilename يدل على عدد أم لا فإذا كان يمكن التعامل معه كعدد فإن المتغير Numeric يساوى قيمته بالاضافة الى قيمة المتغير inteFilename غير ذلك ...._أى أن المتغير لا يمكن التعامل معه كعدد_ أجعل المتغير Numeric يساوى (صفر)مع أستخدام جملة شرط أخرى لجعل المتغير bFilename يساوى النسخة الاحتياطية الاولى Backup1.bak ....غير ذلك أجعل المتغير Numeric يساوى قيمتة + 1 مع تغير قيمة المتغير bFilename



بعد كل ذلك أمرنا المتغير je و الذى يعبر المزود JRO.JetEngine بضغط و أصلاح وعمل نسخة أحتياطية بأستخدام الامر CompactDatabase مع وضع مسار قاعدة البيانات بين علامتى تنصيص ....





2_ كتابة أكواد نموذج أستيراد النسخة الاحتياطية .....



_نقوم بكتابة الكود التالى فى حدث تحميل النافذة



الكود:



    File1.Path = App.Path & "\Backup"
    File1.Refresh
'
    MSFlexGrid1.Clear
    MSFlexGrid1.Rows = 1
    MSFlexGrid1.Cols = 3
    MSFlexGrid1.TextMatrix(0, 0) = "C?? C????"
    MSFlexGrid1.TextMatrix(0, 1) = "C???? ( EC?E )"
    MSFlexGrid1.TextMatrix(0, 2) = "EC??I C???OC?"
    MSFlexGrid1.ColAlignment(0) = 2
    MSFlexGrid1.ColAlignment(1) = 2
    MSFlexGrid1.ColAlignment(2) = 2
    MSFlexGrid1.FixedAlignment(0) = 3
    MSFlexGrid1.FixedAlignment(1) = 3
    MSFlexGrid1.FixedAlignment(2) = 3
    MSFlexGrid1.ColWidth(0) = 3500
    MSFlexGrid1.ColWidth(1) = 1500
    MSFlexGrid1.ColWidth(2) = 2500
'
 For i = 0 To File1.ListCount - 1
      MSFlexGrid1.Rows = i + 2
      MSFlexGrid1.TextMatrix(i + 1, 0) = File1.List(i)
      MSFlexGrid1.TextMatrix(i + 1, 1) = FileLen(App.Path & "\Backup" & File1.List(i))
      MSFlexGrid1.TextMatrix(i + 1, 2) = FileDateTime(App.Path & "\Backup" & File1.List(i))
 Next i
'
 If File1.ListCount = 0 Then Command1.Enabled = False

 





شرح الكود السابق :



السطر الاول :قمنا بجعل مسار File1 يساوى المسار الموجود فية مجلد النسخ Backup

السطر الثانى :تنشيط عناصر File1 عن طريق الامر Refresh

ومن السطر الثالث حتى السابع عشر ...هو تنسيق أداة عرض البيانات FlexGrid ....فقمنا بمسح محتوياتها عن طريق الامر Clear و حددنا عدد الصفوف و الاعمدة ثم وضعنا عنواين الاعمدة ....الخ



ويجب ملاحظة أن الخاصية [TextMatrix] تأخذ قيمتين لتعريف الصف الحالي المراد اضافة النص اليه وهي من اليسار لليمين (الاول لرقم صف الخلية المراد ادخال النص فيها ، والثاني لادخال رقم عمود الخلية المراد ادخال النص فيها.فهذا يعني أن الصف 0 والعمود 0 سيكون فيه النص "أسم الملف " وهكذا بالنسبة للباقى .



أما من بداية السطر الثامن عشر : قمنا بعمل حلقة تكرار لجعل عدد أعمدة FlexGrid تساوى عدد النسخ الاحتياطية الموجودة فى مجلد النسخ الاحتياطى و ايضا تم الحصول على أسم النسخة الاحتياطية و حجمها و تاريخ الانشاء ووضعها فى أداة عرض البيانات FlexGrid



أما السطر الاخير .أستخدمنا جملة الشرط if للتأكد من وجود عناصر فى مجلد النسخ من عدمة ...وفى حالة عدم وجودة جعلنا زر الامر الخاص بأستيراد النسخة الاحتياطية غير متاح .





_ زر أستيراد النسخة الاحتياطية .....نقوم بكتابة الكود التالى



الكود:


 Dim gFilename As String
    gFilename = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0)
'
 
 If Dir(App.Path & "\pj.mdb") <> "" Then _
    Kill App.Path & "\pj.mdb"
'
    FileCopy App.Path & "\Backup" & gFilename, App.Path & "\pj.mdb"
'
    Kill App.Path & "\Backup" & gFilename
'
        MsgBox "تم أستيراد النسخة بنجاح ", vbInformation + vbMsgBoxRight + vbMsgBoxRtlReading, "النسخ الاحتياطى"

 





شكر الكود ...



السطر الاول و الثانى : قمنا بالاعلان عن المتغير gFilename بأنه من النوع النصى ثم جعلنا يساوى MSFlexGrid1.TextMatrix



السطر الثالث :أستخدمنا جملة شرط للتأكد أن قاعدة البيانات موجودة ....وأن كانت كذلك نقوم حذفها وذلك عن طريق الامر Kill مع وضع المسار و اسم قاعدة البيانات ...



السطر الرابع : قمنا بنسخ النسخة الاحتياطية و المخزنة فى المتغير gFilename الى المسار الموجود فية برنامجنا ...



السطر الخامس : مسح القيمة المخزنة فى المتغير gFilename





و فى النهاية أرجوا أن أكون قد وفقت فى الشرح و اليكم الان المشروع فى المرفقات ...
المرفقات
كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Attachment
Backup.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(60 Ko) عدد مرات التنزيل 393

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف elnawbasy الأربعاء أكتوبر 17, 2012 7:03 am

شكرا على هذا المجهود الخرافى
أسال الله أن يوفقكم ويزيد من اعمالكم
ايهاب مليحه
elnawbasy
elnawbasy
.
.

تاريخ التسجيل : 29/04/2012
المساهمات : 1
النقاط : 1
التقيم : 0
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف khasd الثلاثاء يناير 22, 2013 11:13 am

اي نعم مجهود لا يقارن ولكن تظهر مشكلة عندما تريد ان تقوم باسترجاع قاعدة البيانات كما هو مبين في الصورة كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object 353436481
فما الحل اذن؟
khasd
khasd
....
....

تاريخ التسجيل : 23/05/2012
المساهمات : 57
النقاط : 102
التقيم : 1
الدولة : المغرب
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف tryold الخميس مايو 16, 2013 12:26 am

اولا شكرا لك على مجهودك استاذنا أحمد والله يوفقك





بالنسبة للخطأ اللي حصل عندك اختي الكريمه هو عباره عن :



Runtime Error 70 : Permission Denied" Occurs When Attempting to Invoke the Methods of a Secure MTS Object from a VB Application
وهذا الرابط من MicroSofft يحل المشكلة





[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]





تحياتي

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ


ليس من اخترق جهاز اصبح هكر

وليس من كتب كود اصبح مبرمج

وليس من كسر برنامج صار خيبير كسر

ولكن من تواضع لله رفعة

tryold
tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 47
التقيم : 2
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty المرفقات لا تعمل

مُساهمة من طرف ? الجمعة نوفمبر 08, 2013 3:58 pm


المرفقات لا تعمل أخي لماذا ممكن لو سمحت تعيد وضعها بعد اذنكSurprised 
Anonymous
?
زائر


الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف end.sub الإثنين فبراير 03, 2014 9:10 am

? كتب:
المرفقات لا تعمل أخي لماذا ممكن لو سمحت تعيد وضعها بعد اذنكSurprised 

المرفقات لا يمكنك التحميل منها لانك زائر فقط ....قم بالتسجيل للحصول على عضوية كاملة و حينئذ تستطيع تحميل اى مرفق

تحياتى لك
end.sub
end.sub
.....
.....

تاريخ التسجيل : 15/08/2013
المساهمات : 70
النقاط : 132
التقيم : 10
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف hima1986 الجمعة أكتوبر 10, 2014 3:25 pm

مشكور جداً على الجهد الكبير
hima1986
hima1986
.
.

تاريخ التسجيل : 10/10/2014
المساهمات : 1
النقاط : 1
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف Araby الإثنين مايو 07, 2018 8:54 pm

جزاك الله أخي العزيزعلى هادا المثال الرالئع  
هل من الممكن تغيير مسار قاعد البيانات إلى \C:\Database وجعل النسخة الاحتياطية كدالك في نفس المسار
مع ألف شكرا.
Araby
Araby
..
..

تاريخ التسجيل : 16/03/2016
المساهمات : 22
النقاط : 50
التقيم : 0
الدولة : المغرب
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف vbcoder الأحد نوفمبر 18, 2018 6:23 pm

جزاكم الله خيرا على مجهودكم 
vbcoder
vbcoder
....
....

تاريخ التسجيل : 18/11/2018
المساهمات : 51
النقاط : 81
التقيم : 4
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Empty رد: كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object

مُساهمة من طرف Amran السبت مايو 25, 2019 9:06 pm

كيفية ضغط و إصلاح و عمل نسخة أحتياطية Backup  من قاعدة بيانات أكسس بأستخدام مكتبة Microsoft Jet And Replication Object Libraries\Picturesالسلام عليكم
بعد فك الظغط طلع هاكذ ايش الحل اين البرنامج كامل
Amran
Amran
.
.

تاريخ التسجيل : 24/05/2019
المساهمات : 1
النقاط : 1
التقيم : 0
الدولة : اليمن
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى