ابوخليل قام بنشر الأربعاء at 05:06 قام بنشر الأربعاء at 05:06 السلام عليكم احبتي .. احاول جلب تاريخ من جدول tbl2 بما يماثله من جدول tbl1 داخل الاستعلام ولكنه لا يستجيب ايضا حاولت جلبه من خلال رسالة في النموذج ولكنه لا يستجيب حاولت مرارا وتكرارا .. عجيب جدا .. شروط الدالة صحيحة ، وايضا المكتبات صحيحة قد تكون المشكلة عندي فقط .. لذا اعرضه عليكم d8.rar
شايب قام بنشر الأربعاء at 09:04 قام بنشر الأربعاء at 09:04 24 دقائق مضت, AbuuAhmed said: قلة تركيز ماشاء الله يا ابا احمد فكرتي دائما عندما يكون هناك اكثر من معيار يكون سطر لكل معيار اسهل في المراجعة Dim i As Variant Dim strWhere As String strWhere = "[date2] = " & Format(Me.text1, "\#mm/dd/yyyy\#") strWhere = strWhere & " and [usr_id]='" & [text2] & "'" i = DLookup("[date2]", "[tbl2]", strWhere) MsgBox i الشايب 2
ابوخليل قام بنشر الأربعاء at 09:24 الكاتب قام بنشر الأربعاء at 09:24 منذ ساعه, AbuuAhmed said: قلة تركيز DLookup_01.accdb 432 kB · 3 downloads ههههه جبتها بالصميم أسأل الله حسن الخاتمة .. لكن سؤالي هي ان الحقول تاريخ .. وانت حولتها الى رقم .. مالسبب من امتناع جلبها كتاريخ .. مع اني كنت دوما استخدم ذاك التعبير ويعمل بشكل صحيح DLookup("[date2]", "[tbl2]", "[date2] =#" & Me.text1 & "# And [user_id] ='" & Me.text2 & "'") والحقول فعلا تاريخ وتنسيق الحقول واحد متشابه والآن اكتشفت صحة ملاحظتك بعدم التركيز .. فأزيدك من الشعر بيت .. ان اليوزر في الجدولين مختلف 49 دقائق مضت, شايب said: ماشاء الله يا ابا احمد فكرتي دائما عندما يكون هناك اكثر من معيار يكون سطر لكل معيار اسهل في المراجعة Dim i As Variant Dim strWhere As String strWhere = "[date2] = " & Format(Me.text1, "\#mm/dd/yyyy\#") strWhere = strWhere & " and [usr_id]='" & [text2] & "'" i = DLookup("[date2]", "[tbl2]", strWhere) MsgBox i الشايب اهلا باخوي الشايب هذه اين يكون مكانها في الاستعلام .. اعتقد يمكن عندما نحول هذه الاسطر الى دالة آمل كرما تشغيل الاستعلام بهذه وارفاقه .. 2
شايب قام بنشر الأربعاء at 15:13 قام بنشر الأربعاء at 15:13 5 ساعات مضت, ابوخليل said: هذه اين يكون مكانها في الاستعلام .. انا عملتها وفقا للمثال في النموذج وبالنسبة لي لا افضل استخدام اي من دوال المجال في الاستعلام لانها تجعل الاستعلام بطيء التنفيذ اذا كان عدد السجلات كبير ويمكن الاستغناء عنها باستخدام صلة بين الجدولين في الاستعلام هذا حسب فهمي للامر اما بالنسبة لاستخدامها في الاستعلام فان الطريقة الاسهل من تحويل الامر الى دالة عن طريق جمع الحقلين مع بعضهما والمعيارين ايضا مع بعض ليكون الامر Dim i i = DLookup("[date2]", "[tbl2]", "[date2]& [user_id]=#" & Me.text1 & "# &'" & Me.text2 & "'") MsgBox i او استخدام تعديل الاستاذ ابو احمد فهو الافضل الشايب 1
Moosak قام بنشر الأربعاء at 17:34 قام بنشر الأربعاء at 17:34 8 ساعات مضت, ابوخليل said: سؤالي هي ان الحقول تاريخ .. وانت حولتها الى رقم .. بالنسبة لي شخصيا بدأت أنهج هذا الأسلوب ( تحويل حقول التاريخ إلى أرقام في دوال المجال) .. تعطيك دقة في النتائج وتكفيك شر تنسيقات التواريخ .. 🙂 ملاحظة مهمة جدا إذا أردت تطبيق هذا المنهج : لو أردت تحويل حقل تاريخ إلى رقم يمكنك استخدام الدالة cLng هكذا -----> clng(dateField) ولكن لو أردت تحويل حقل تاريخ مع وقت استخدام الدالة cDbl هكذا -----> cDbl(dateField) وذلك لأن الوقت يتم تخزينه بعد الفاصلة عندما يتم تحويل التاريخ إلى رقم بهذه الصورة >> 1
منتصر الانسي قام بنشر الأربعاء at 18:07 قام بنشر الأربعاء at 18:07 8 ساعات مضت, ابوخليل said: والحقول فعلا تاريخ وتنسيق الحقول واحد متشابه اخي الفاضل @ابوخليل حقول التاريخ أساساً هي حقول رقمية يكون الجزء الصحيح منها هو التاريخ (اليوم يساوي 1 صحيح) والكسور تمثل الوقت (الثانية تساوي 1 من 10000 تقريبا) مثلما ذكر الأخ @شايب 2 ساعات مضت, شايب said: بالنسبة لي لا افضل استخدام اي من دوال المجال في الاستعلام لانها تجعل الاستعلام بطيء التنفيذ اذا كان عدد السجلات كبير هذا صحيح ليس للأسباب المذكورة فقط وإنما لأنك ننفذ دوال VBA مع محرك البيانات ولغة SQL 2 ساعات مضت, شايب said: ويمكن الاستغناء عنها باستخدام صلة بين الجدولين في الاستعلام وهذا ايضاً صحيح ولكن النتائج عادة ستقتصر على السجلات التي يوجد مايقابلها في الجدول الأخر الحل الأفضل من وجهة نظري هو إستخدام الإستعلامات الفرعية وهي سهلة جداَ أرفق لكم مثال الأخ ابو خليل وقد قمت بعمل حل له بإستخدام استعلام فرعي وقمت بإضافة بعض الأشياء لتوضيح سبب المشكلة وكذا لمعرفة القيمة الرقمية لأي للتاريخ والوقت مع تحياتي d8.rar 2
ابوخليل قام بنشر الأربعاء at 18:35 الكاتب قام بنشر الأربعاء at 18:35 26 دقائق مضت, منتصر الانسي said: أرفق لكم مثال الأخ ابو خليل وقد قمت بعمل حل له بإستخدام استعلام فرعي شكرا اخوي منتصر .. تم الاستبدال .. لتصبح اللغة واحدة انا اعرف ان دوال المجال لا يصلح توظيفها في الاستعلامات وكنت احذر منها ... الكثير الذين يشتكون من بطء الاستعلامات عند زيادة حجم البيانات والسبب هذه الدوال ولكن الاستعلام الذي استخدمه خاص بشخص واحد لا تتجاوز سجلاته 30 سجلا ابدا 1
شايب قام بنشر الأربعاء at 18:35 قام بنشر الأربعاء at 18:35 27 دقائق مضت, منتصر الانسي said: وهذا ايضاً صحيح ولكن النتائج عادة ستقتصر على السجلات التي يوجد مايقابلها في الجدول الأخر لان هذا الي انا فهمته 3 ساعات مضت, شايب said: هذا حسب فهمي للامر وقد اشرن الى ذلك الشايب 1
منتصر الانسي قام بنشر الأربعاء at 18:55 قام بنشر الأربعاء at 18:55 14 دقائق مضت, شايب said: لان هذا الي انا فهمته انا لم اقصد ان ماقلته غير صحيح بل قصدت في حال اذا تطلب الأمر إظهار جميع السجلات وخاصة عندما تكون العلاقات معقدة خصوصا إذا شملت أكثر من حقل واحد ولكن في 90% وأكثر من الحالات فكما تفضلت فإن استخدام صلة بين الجدولين في الاستعلام هي الحل الأفضل تحياتي
AbuuAhmed قام بنشر الأربعاء at 18:59 قام بنشر الأربعاء at 18:59 13 ساعات مضت, ابوخليل said: حاولت مرارا وتكرارا .. عجيب جدا .. شروط الدالة صحيحة ، وايضا المكتبات صحيحة مشكلتك في هذه الجملة فيه غلطتين، الأولى And خارج نص الجملة، والأخرى في اسم الحقل ناقص حرف. الخطأ "#" And "[usr_id] ='" التصحيح "# And [user_id] ='"
ابوخليل قام بنشر الأربعاء at 19:15 الكاتب قام بنشر الأربعاء at 19:15 3 دقائق مضت, AbuuAhmed said: مشكلتك في هذه الجملة فيه غلطتين، الأولى And خارج نص الجملة، والأخرى في اسم الحقل ناقص حرف. الخطأ "#" And "[usr_id] ='" التصحيح "# And [user_id] ='" لم اترك سبيلا او طريقا الا سلكته .. ساعات .. وانا ابدل واعدل وازيد وانقص استنجدت باسعافات اخونا @Moosak كنت محتفظا به لوقت الازمات .. ولا خرجت بنتيجة .. يبقى جامد ولا يرجع شيئا .. لذا عرضته هنا .. قلت ربما الخلل في جهازي .. استفسار يابو احمد لا هنت : ذكرت في موضوعنا الذي قبل هذا انك ابتعدت عن عمليات حذف بيانات الجداول .. لتأثيرها على قاعدة البيانات بهذا النص : (( تجنبت عمليات الحذف والإضافة للسجلات حتى لا تتضخم قاعدة البيانات مع الوقت )) حذف الجداول كاملة وبناءها من جديد اتوقع له تأثير اكبر ولكنك تتكلم عن الحذف للسجلات والاضافة اذا الجدول يشتمل على ترقيم تلقائي فالتضخم هذا مفهوم هل التضخم ينطبق على الجداول التي لا تحتوي على ترقيم تلقائي ولا مفاتيح ولا حقول فريدة ؟؟؟ وهل الضغط والاصلاح بين فترة واخرى مفيد .. ؟
AbuuAhmed قام بنشر الأربعاء at 19:50 قام بنشر الأربعاء at 19:50 32 دقائق مضت, ابوخليل said: هل التضخم ينطبق على الجداول التي لا تحتوي على ترقيم تلقائي ولا مفاتيح ولا حقول فريدة ؟؟؟ وهل الضغط والاصلاح بين فترة واخرى مفيد .. ؟ سلوك قاعدة بيانات الأكسس كل سجل يضاف سيأخذ مساحة من التخزين وهذا طبيعي ولكن غير الطبيعي أن المساحة ستبقى ولو حذفت السجل. وحل هذه المشكلة ستكون باستخدام "الضغط والإصلاح". ولكن هذه المشكلة لن تحدث مع قاعدة بيانات SQL فسلوكها مختلف بحيث تتخلص من مسحات السجلات المحذوفة أولا بأول أو تعيد استخدامها بدون عمليات الضغط. معلومات قديمة جدا وربما استجدت أمور أنا بعيد عنها. 1 1
AbuuAhmed قام بنشر الخميس at 01:23 قام بنشر الخميس at 01:23 5 ساعات مضت, AbuuAhmed said: ولكن هذه المشكلة لن تحدث مع قاعدة بيانات SQL فسلوكها مختلف بحيث تتخلص من مساحات السجلات المحذوفة أولا بأول أو تعيد استخدامها بدون عمليات الضغط. معلومات قديمة جدا وربما استجدت أمور أنا بعيد عنها. أعتذر فقد تكون خانتني الذاكرة .. وأخطأت في هذه الجزئية فالمقارنة هي لحجم تحزين السجل الواحد، فلو عندنا حقل نصي مثلا طوله 255 حرفا وحفظنا فيه كلمة بطول خمسة حروف فالأكسس سوف يستخدم مساحة 255 حرفا والـ SQL سوف يخزنها بحجم 5 حروف فقط. أي أن سجل الأكسس ثابت الحجم وسجل الـ SQL متغير الحجم.
ابوخليل قام بنشر الخميس at 01:35 الكاتب قام بنشر الخميس at 01:35 2 دقائق مضت, AbuuAhmed said: أعتذر فقد تكون خانتني الذاكرة .. وأخطأت في هذه الجزئية فالمقارنة هي لحجم تحزين السجل الواحد، فلو عندنا حقل نصي مثلا طوله 255 حرفا وحفظنا فيه كلمة بطول خمسة حروف فالأكسس سوف يستخدم مساحة 255 حرفا والـ SQL سوف يخزنها بحجم 5 حروف فقط. أي أن سجل الأكسس ثابت الحجم وسجل الـ SQL متغير الحجم. لا انسى هذه الجزئية فقد ناقشت فيها الاستاذ @jjafferr من مدة قد تكون سنوات حول تحديد حجم الحقل النصي او تركه كما هو .. لأني كنت احدد حجم الحقل تقريبيا او شرطا بان يكون حروف معدودة .. والذي فهمته منه حينها ان الحجم على مقدار عدد الحروف ،، وان تركها كما هي 255 لن يؤثر على الحجم .. من ذلك اليوم لم اتعرض لحجم الحقل النصي في عملي سواء كانت المدخلات حرف واحد او اكثر
AbuuAhmed قام بنشر الخميس at 02:31 قام بنشر الخميس at 02:31 نعم كلامك وكلام الأستاذ جعفر صحيح، وهذا لا يعني أنه لم يكن خلاف ما هو عليه الآن فقد يكون ما يكروسوفت طورت عملية التخزين. In MS Access, text fields store the exact length of the entered text, up to the defined field size. For Short Text fields (formerly Text), the maximum length is 255 characters, according to Microsoft Support. For Long Text fields (formerly Memo), the storage capacity is much larger, up to 2^30-1 bytes, but can be limited in Access web apps by setting a character limit according to Microsoft Support. Here's a more detailed breakdown: Short Text (formerly Text): The default size is 255 characters. according to DePaul University You can adjust the Field Size property to specify a shorter length (from 1 to 255). Access only stores the characters entered, not unused space.
ابو جودي قام بنشر الخميس at 04:57 قام بنشر الخميس at 04:57 السلام عليكم ورحمة الله تعالى وبركاته استاذى الجليل ومعلمى القدير و والدى الحبيب ممكن حضرتك تجرب الكود ده Dim db As DAO.Database Dim rs As DAO.Recordset Dim sql As String sql = "SELECT [date2] FROM tbl2 WHERE [date2] = #" & Format(Me.text1, "mm\/dd\/yyyy") & "# AND [usr_id] = '" & Me.text2 & "'" Debug.Print sql Set db = CurrentDb Set rs = db.OpenRecordset(sql) If Not rs.EOF Then MsgBox rs![date2] Else MsgBox "لم يتم العثور على بيانات" End If rs.Close Set rs = Nothing Set db = Nothing أو Dim i As Variant i = DLookup("[date2]", "tbl2", "[date2] = #" & Format(Me.text1, "mm\/dd\/yyyy") & "# AND [usr_id] = '" & Me.text2 & "'") If IsNull(i) Then MsgBox "لم يتم العثور على بيانات" Else MsgBox i End If
ابو جودي قام بنشر الخميس at 06:10 قام بنشر الخميس at 06:10 وانا باستخدم الكود ده فى وحده نمطية عامة Option Compare Database Option Explicit Public DebugMod As Boolean Public Function GenericDLookupPro( _ ByVal strFieldName As String, _ ByVal strTableName As String, _ ParamArray arrCriteria() As Variant) As Variant Dim strCriteria As String Dim lngIndex As Long Dim strField As String Dim strOperator As String Dim varValue As Variant Dim strOneCondition As String Dim db As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Dim intFieldType As Integer On Error GoTo ErrHandler Set db = CurrentDb ' تحقق من وجود الجدول أولًا If Not TableExists(strTableName, db) Then Err.Raise vbObjectError + 517, , "الجدول غير موجود: " & strTableName End If Set tdf = db.TableDefs(strTableName) ' تحقق من وجود الحقل المطلوب إرجاعه If Not FieldExists(strFieldName, tdf) Then Err.Raise vbObjectError + 518, , "الحقل غير موجود: " & strFieldName End If ' تأكد أن عدد عناصر المعايير من مضاعفات 3 If (UBound(arrCriteria) - lngIndex + 1) Mod 3 <> 0 Then Err.Raise vbObjectError + 514, , "يجب أن تكون المعايير على شكل ثلاثي: (الحقل، المعامل، القيمة)" End If Do While lngIndex <= UBound(arrCriteria) strField = CStr(arrCriteria(lngIndex)) If IsNull(arrCriteria(lngIndex + 1)) Then Err.Raise vbObjectError + 516, , "المعامل لا يمكن أن يكون Null" Else strOperator = Trim(UCase(CStr(arrCriteria(lngIndex + 1)))) End If varValue = arrCriteria(lngIndex + 2) ' التحقق من وجود الحقل If Not FieldExists(strField, tdf) Then Err.Raise vbObjectError + 519, , "الحقل '" & strField & "' غير موجود في الجدول '" & strTableName & "'" End If Set fld = tdf.Fields(strField) intFieldType = fld.Type ' بناء الشرط Select Case strOperator Case "IS NULL", "IS NOT NULL" strOneCondition = "[" & strField & "] " & strOperator Case "LIKE" strOneCondition = "[" & strField & "] LIKE '" & Replace(Nz(varValue, ""), "'", "''") & "'" Case "=", "<>", ">", "<", ">=", "<=" Select Case True Case IsNull(varValue) strOneCondition = "[" & strField & "] IS NULL" Case IsEmpty(varValue) Or varValue = "" strOneCondition = "[" & strField & "] = ''" Case intFieldType = dbText Or intFieldType = dbMemo Or intFieldType = dbGUID strOneCondition = "[" & strField & "] " & strOperator & " '" & Replace(CStr(varValue), "'", "''") & "'" Case intFieldType = dbDate strOneCondition = "[" & strField & "] " & strOperator & " #" & Format(CDate(varValue), "mm\/dd\/yyyy") & "#" Case Else strOneCondition = "[" & strField & "] " & strOperator & " " & varValue End Select Case Else Err.Raise vbObjectError + 515, , "المعامل غير مدعوم: " & strOperator End Select ' دمج الشرط If Len(strCriteria) > 0 Then strCriteria = strCriteria & " AND " strCriteria = strCriteria & strOneCondition lngIndex = lngIndex + 3 Loop If DebugMod Then Debug.Print "DLookup Criteria: " & strCriteria GenericDLookupPro = Nz(DLookup(strFieldName, strTableName, strCriteria), "لم يتم العثور على بيانات") CleanExit: Set fld = Nothing Set tdf = Nothing Set db = Nothing Exit Function ErrHandler: If DebugMod Then Debug.Print "خطأ في GenericDLookupPro: " & Err.Description GenericDLookupPro = Null Resume CleanExit End Function Private Function TableExists(TableName As String, db As DAO.Database) As Boolean Dim tdf As DAO.TableDef On Error Resume Next Set tdf = db.TableDefs(TableName) TableExists = Not tdf Is Nothing On Error GoTo 0 End Function Private Function FieldExists(FieldName As String, tdf As DAO.TableDef) As Boolean Dim fld As DAO.Field On Error Resume Next Set fld = tdf.Fields(FieldName) FieldExists = Not fld Is Nothing On Error GoTo 0 End Function ممكن حضرتك تجربه ليتم الاستدعاء من خلاله بالشكل التالى DebugMod = True Dim varResult As Variant varResult = GenericDLookupPro("date2", "tbl2", "date2", "=", Me.text1, "usr_id", "=", Me.text2) MsgBox varResult مرونة تامة في كتابة المعايير بصيغة: (اسم الحقل، المعامل، القيمة) دعم كامل للمعاملات: =, <>, >, <, >=, <=, LIKE, IS NULL, IS NOT NULL تحقق تلقائي من وجود الجدول والحقل تحليل ذكي لنوع الحقل (نصي، تاريخ، رقمي...) وبناء الشرط المناسب تلقائيا آمن ضد القيم الفارغة (Null, Empty, "") تتبع اختياري للتنفيذ في نافذة Immediate باستخدام DebugMod عند الحاجة الى التتبع والطباعة 1
ابوخليل قام بنشر الخميس at 08:10 الكاتب قام بنشر الخميس at 08:10 1 ساعه مضت, ابو جودي said: وانا باستخدم الكود ده فى وحده نمطية عامة ماذا لو جئت متأخرا اكيد احمل في جعبتي الكثير لإثراء الموضوع ومكتبة المنتدى الف شكر باشمهندس
Moosak قام بنشر الخميس at 16:49 قام بنشر الخميس at 16:49 22 ساعات مضت, ابوخليل said: استنجدت باسعافات اخونا @Moosak كنت محتفظا به لوقت الازمات .. ولا خرجت بنتيجة .. يبقى جامد ولا يرجع شيئا .. لأجل هذه العبارة قمت بعمل تحديث على (الكاتب الذكي لدوال المجال) 😅🖐 قمت بإضافة خيارين للتعامل مع حقول التواريخ : (1) الخيار الأول : تحويلها إلى رقم من نوع Duble (2) الخيار الثاني : تنسيقه بالصيغة التالية : Format(varDate, "yyyy-mm-dd hh:nn:ss") وذلك لأنها الصيغة الأكثر توافقاً مع التنسيق القياسي (ISO) ستدخل على نفسي السرور إن تكرمت بتجربتها 👌 واجهة الأداة مع الخيارات الجديدة : 2nd_DomainFunctionsBuilder_V2.2.accdb 1 1
ابوخليل قام بنشر منذ 13 ساعات الكاتب قام بنشر منذ 13 ساعات 22 ساعات مضت, Moosak said: ستدخل على نفسي السرور إن تكرمت بتجربتها 👌 تكثر الحاجة الى اداتك الجميلة هذه .. مؤكد سأحتاج اليها واجربها سألغي جميع النسخ السابقة .. وابقي عليها وحدها عادة اذا واجهت مشكلة من هذا النوع اجلب نموذجك هذا الى المشروع .. وابقيه حتى نهاية العمل .. وادعو لك.. 1
jjafferr قام بنشر منذ 9 ساعات قام بنشر منذ 9 ساعات السلام عليكم مشاركتي لتوضيح الكثير من المعلومات الهامة في مشاركات الاساتذة اعلاه ، والتي تحتاج الى توضيح. رجاء النظر في حقول الجدول التالي: الاكسس يتعامل مع انواع الحقول بطريقته ، و يخبرنا بمجرد النظر الى تنسيق الحقل ، فيما اذا كان الحقل رقم او نص. النص تنسيقه الى اليسار ، بينما الرقم تنسيقه الى اليمين ، وعندما ننظر الى التاريخ ، فنلاحظ تنسيقه الى اليمين ، مما يعني انه رقم. . وبما ان استخدام Dlookup واخواتها من الاوامر التي نتفاداها في الاستعلام لأنها تبطئ الاستعلام ، فسوف نتخلص منها بإستعمال استعلام ، يدمج ملاحظات جميع الاساتذه في المشاركات اعلاه. . نجهز استعلام لكل جدول ، وهذه نتائج حقول استعلام الجدول الاول ، ورجاء ملاحظة ايهم نص وايهم رقم . D1_Double : تم تحويل التاريخ الى رقم ، D1_#D : استعملنا التنسيق \#mm/dd/yyyy\# في اعدادات الحقل ، وتعامل معه الاكسس كرقم ، D1_Format : استعملنا التنسيق yyyy-mm-dd hh:nn:ss في اعدادات الحقل ، وتعامل معه الاكسس كرقم ، D1_Format2 : استعملنا نفس التنسيق اعلاه ، ولكن في الحقل مباشرة ، فتعامل الاكسس معه كنص (الاكسس يحول اي قيمة في الدال Format الى نص) . الامر Dlookup اعلاه فيه ربط بين جدولين ، وبالحقولين date و user_id اقتباس e_Date: DLookUp("[date2]","[tbl2]","[date2] =#" & [date1] & "#" And "[usr_id] ='" & [user_id] & "'") الان نستبدل الامر Dlookup بالاستعلامين الذين عملناهم اعلاه ، ونربطهم بالحقلين (انا عملت استعلام منفصل لكل نوع ، وقمت بربط الحقول على اساس تنسيقها اعلاه) . . والنتيجة . اما اذا اردنا الحصول على جميع بيانات الجدول 1 ، ونرى تواريخ الجدول 2 بمحاذاته . والنتيجة . وهنا ومع اننا حصلنا على النتائج ، إلا اننا لا نستطيع تعديل بيانات الحقول ، وعن طريق تغيير اعدادات الاستعلام ، يمكننا تعديل بيانات الحقول. (ملاحظة: اذا استعملت هذا الاستعلام كمصدر لبيانات نموذج ، فيجب ان تعدل في اعدادات النموذج كما عملنا في الاستعلام) . 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.