بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 04/03/20 in مشاركات
-
السلام عليكم ورحمة الله وبركاته أهديكم برنامج لقراءة حركات الكلمة أي قراءة تشكيل الحروف . مثلاً كلمة ( الرَّحْمَنِ ) يقرأ البرنامج حركاتها هكذا ( شدة ، فتحة ، الصفر المستدير ، فتحة ، كسرة ) ولا أخفيكم أن أحد الأخوة الزملاء المهتمين بالقرآن الكريم في منتدانا الحبيب طلب مني ذلك على الخاص فأردت أن شارككم . البرنامج قابل للتطوير إن وجد أخطاء . ولا تنسونا من دعائكم ،، Read_HarakatV20_1.zip5 points
-
جزاكم الله خيرا اخوانى واساتذتى @ابو البشر و @محمد ابوعبد الله ومنورين المنتدى بالتوفيق اخوانى3 points
-
وعليكم السلام ورحمة الله وبركاته قبل اضافة الحقول الى النموذج تحتاج الى ضبط الجداول وعمل علاقات فيما بينها بطريقة صحيحة مثال سريع ومختصر للفكرة جدول الاباء : كود الاب + اسم الاب جدول الابناء : كود الابن + اسم الابن + كود الاب ( حقل غريب ) جدول الاحفاد : كود الحفيد + اسم الحفيد + كود الابن ( حقل غريب ) بعد تصميم الجداول بهذه الطريقة نقوم بعمل علاقات فيما بينها كود الاب في جدول الاباء مع كود الاب في جدول الابناء ( علاقة رأس باطراف ) كود الابن في جدول الابناء مع كود الابن في جدول الاحفاد ( علاقة رأس باطراف ) بهذه الطريقة يمكن وضع الحقول التي احتاجها في النموذج بدون مشاكل باذن الله تحياتي3 points
-
وعلكيم السلام ورحمة الله وبركاته برجاء مراجعة المرفق الاستعلام kan3 ارجو ان يكون هو المطلوب K_1_3.rar تحياتي3 points
-
اخي الفاضل محمد انا كان ردي على كود الاستاذ جعفر Dim myWhere As String myWhere = "login='" & Me.Texte1 & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & Me.Texte3 & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe Debug.Print myWhere If DCount("*", "test1", myWhere) = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If ولم اجرب التعديلات الاخيرة في رد الاستاذ جعفر لكونك وجدت ان الحل مناسب لك وهذا هو المطلوب اما بخصوص الرد الاخير للاستاذ جعفر فهوا الحل المناسب Dim u, p As String u = Replace(Me.Texte1, "'", "_") p = Replace(Me.Texte3, "'", "_") تقبل من اخيك اطيب ايات التقدير والاحترام3 points
-
الحمد لله ان الحل نفع معك علما باني قد تجاوزنة بالامر a' or 't'='t واعدت المحاولة بزيادة المسافة وايضا تم تجاوز كلمة المرور3 points
-
هذة ثغرة للاستعلامات البنيوية تمكن مستخدمها من الدخول على قواعد البيانات في حالات معينة وخطرها ليس فقط بامكانية تسجيل الدخول وانما يمكن تنفيذ اوامر sql مثل DROP TABLE وغيرها من الاوامر يتم الدخول باستخدام a' or 't'='t ' or '1'='1 ' or 1='1 هل هي مقتصرة على قواعد البيانات الحقيقة يمكن استخدامها مع تطبيقات php التي تستخدم قواعد البيانات ولكن التوسع في مثل هذه الامور اجده غير نافع في حالتك اخي جرب في كودك الاصلي ان تغيير تنسيق حقل الباس الى رقم عام ستجد ان الثغرة لن تعمل مع ذلك من الافضل ان تستخدم الكود الذي وضعه الاستاذ الفاضل @jjafferr If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") > 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If هذا والله اعلم3 points
-
وعليكم السلام 🙂 انا ما فهمت السؤال ، ولكن وجدت خطأ في الكود 🙂 وعلشان تعرف وين الخطأ ، دائما استعين بـ Debug.print ، وفي حالتك : Debug.Print "login='" & Me.Texte1 & "'" & "and passe='" & Me.Texte3 & "'" والنتيجة login='mmm'and passe='bb' . وتلاحظ انه ما في مسافة قبل and لهذا السبب ، الكود بعد التعديل يصير : Dim rs As dao.Recordset Set rs = CurrentDb.OpenRecordset("select * from test1", dbOpenDynaset) ' If Not rs.EOF Then rs.MoveFirst Debug.Print "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'" rs.FindFirst ("login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") If rs.NoMatch = True Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If rs.close Set rs = Nothing . وتستطيع ان تستعمل كود اخف : If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") > 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If . ولكن هذين الكودين يعتمدون على المعيار ، لذلك اعطيك طريقتي في عمل المعيار ، واللي يسهل عليك : . فيكون الكود في حالتك : Dim myWhere As String myWhere = "login='" & Me.Texte1 & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & Me.Texte3 & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe rs.FindFirst myWhere او If DCount("*", "test1", myWhere) > 0 Then جعفر3 points
-
استاذنا الفاضل @ابا جودى ليست المشكلة في استخدام Long Integer ولكن المشكلة انه استخدم Long Integer لعدد كبير جدا من الحقول مع عدم وجود داعي لذلك وهذا سؤثر سلباً على قاعدة البيانات وعلى حجمها فتنسيق Long Integer يحجز في الذاكرة 2,147,483,648 2,147,483,647 وهو سوف يسجل درجات مواد وهو بحاجة اقصى الى 6 او 7 ارقام فقط والله اعلم تحياتي2 points
-
2 points
-
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) تحياتي2 points
-
ملاحطة أخي الكريم ....... ماذا لو تساوت مدرستان في عدد الطلاب والنسبة ...... المفرض هناك اول واول مكرر مثلا وهكذا .....2 points
-
استغفر االه انت معلمنا ونحن مجرد طلاب علم وقد وعدت سابقا بان اشرح كود الوارد اولا صادر اولا وهذا جزء من ذاك الكود لذا اسمحلي ان افتح موضوع جديد لشرح كود الوارد اولا صادر اولا او اخيرا ولان جهاز الكمبيوتر لدي بطيء بعض الشيء ولكي لا بفصل النت ويضيع ما اكتب ساكتب بعدة مشاركات ان شاء الله2 points
-
يمكننا بهذه الطريقة التغلب على هذه الحركات في اسم المستخدم او كلمة السر ، بحيث نستبدل اشارة ' بـ _ ونقارن الكلمات بالجدول : Dim u, p As String u = Replace(Me.Texte1, "'", "_") p = Replace(Me.Texte3, "'", "_") والآن جربها على اي من الطرق التي اقترحتها : Dim rs As dao.Recordset Dim u, p As String u = Replace(Me.Texte1, "'", "_") p = Replace(Me.Texte3, "'", "_") ' Set rs = CurrentDb.OpenRecordset("select * from test1", dbOpenDynaset) ' If Not rs.EOF Then rs.MoveFirst ' Debug.Print "login='" & u & "'" & " and passe='" & p & "'" ' rs.FindFirst ("login='" & u & "'" & " and passe='" & p & "'") ' If rs.NoMatch = True Then ' MsgBox "????" ' Else ' DoCmd.OpenForm "test2", acNormal ' DoCmd.Close acForm, Me.Name, acSaveNo ' End If ' ' Set rs = Nothing ' If DCount("*", "test1", "login='" & u & "'" & " and passe='" & p & "'") = 0 Then ' MsgBox "????" ' Else ' DoCmd.OpenForm "test2", acNormal ' DoCmd.Close acForm, Me.Name, acSaveNo ' End If Dim myWhere As String myWhere = "login='" & u & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & p & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe Debug.Print myWhere ' rs.FindFirst myWhere ' ' او If DCount("*", "test1", myWhere) = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If . جعفر2 points
-
2 points
-
شكرا جزيلا اخوي خالد 🙂 يا ريت اخوي محمد (rey360) اعطيتنا هذه التفاصيل من البداية 🙂 على العموم ، انا ارفقت لك هذا الكود في مشاركاتي السابقة ، فرجاء تجربه : Dim myWhere As String myWhere = "login='" & Me.Texte1 & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & Me.Texte3 & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe Debug.Print myWhere If DCount("*", "test1", myWhere) = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If جعفر2 points
-
منور اخى محمد @حلبي وعافانا الله واياكم وجميع المسلمين ان شاء الله برحمته جزاهم الله خيرا اخوانى واساتذتى2 points
-
انشاء الاستعلام وقت الحاجة بالكود وحذفه بعد الانتهاء من عمله بالكود كذلك قطعا افضل ولكن التعديل بتلك الطريقه لن يكون يسيرا على الجميع ان امكن ذلك فبها ونعم2 points
-
السلام عليكم احببت ان اخدمك واستخدمت طريقة التكلفة في اعمار الذمم وكانت النتيجة 24000سجل في اقل من ثواني معدودة طلعت النتيجة https://drive.google.com/file/d/1HWuQXyYFpT2KXRGS2dYlYhFRIbFUm53Z/view?usp=sharing السلام عليكم احببت ان اخدمك واستخدمت طريقة التكلفة في اعمار الذمم وكانت النتيجة 24000سجل في اقل من ثواني معدودة طلعت النتيجة https://drive.google.com/file/d/1HWuQXyYFpT2KXRGS2dYlYhFRIbFUm53Z/view?usp=sharing2 points
-
شكرا جزيلا 🙂 انا ارد على السؤال اثناء تناول الغداء ، فمعذور فالمعادلة الصحيحة تكون : If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") = 0 Then جعفر2 points
-
الكثير من العادلات تقوم بهذا الشيء بالاضافة الى ما ذكره الأخ الرائد 77 هذا المعادلة (Ctrl+Shift+Enter) =SUM(IF(LEN(F6:F16)<>0,1,0)) واذا لم تعمل معك استبدل الفاصلة بفاصلة منقوطة لتبدو هكذا =SUM(IF(LEN(F6:F16)<>0;1;0))2 points
-
أستاذ جعفر أعتقد هذا السطر يساوي 0 و ليس أكبر من 02 points
-
تفضل =COUNTA(F6:F16)-COUNTIF(F6:F16;"") و اذا اردت الخلايا التي تحتوي على قيم نصية فقط =COUNTIF(F6:F16;"?*") ورقة عمل Microsoft Excel جديد __.xlsx2 points
-
السلام عليكم مشاركة مع استاذنا ابا جودى اتفضل اخي اتمنى يكون المطلوب تحياتي الحاق مشروط.rar2 points
-
2 points
-
تفضل Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 2113 Then Response = acDataErrContinue me.undo msgbox "ادخل البطاقة مرة اخرى" me.ID.setfocus End If End Sub . ولكني لازلت اقول بأنه ممكن فيه طريقة افضل من هذه ، تلك التي يتسلسل فيها دخول البيانات من البطاقة !! لأنك بهذه الطريقة تضطر تصيد الاخطاء واحدة خلف الاخرى وووو ، بينما مثلا : لما تُدخل البطاقة في الجهاز ، يجب ان يكون التركيز على حقل رقم البطاقة ، وآخر حقل يتم ادخاله هو تاريخ الانتهاء ، ومنها ينتقل التركيز للحقل التالي ، هنا ، وعلى حدث "بعد التحديث" للحقل تاريخ الانتهاء ، يمكنك ان تظهر رسالة: هل تريد حفظ البيانات ، نعم ، لا : Dim Msg, Style, Title, Response Msg = "هل تريد حفظ البيانات ?" & vbcrlf & _ "نعم: احفظ البيانات" & vbcrlf & _ "لا : لا تحفظ البيانات" Style = vbYesNo + vbCritical + vbDefaultButton1 ' Define buttons. Title = "تم ادخال البيانات، ولكنها لم تُحفظ بعد" ' Define title. ' context. ' Display message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' User chose Yes. docmd.runcommand accmdsaverecord ' احفظ السجل me.id.setfocus 'وانتقل الى حقل ID مرة اخرى استعدادا لإدخال بيانات بطاقة جديدة Else ' User chose No. me.undo ' Perform some action. me.id.setfocus 'وانتقل الى حقل ID مرة اخرى استعدادا لإدخال بيانات بطاقة جديدة End If . الميزة في ظهور الرسالة هو ، انه لا يسمح لك عمل اي شيء آخر في السجل ، إلا بعد ان تستجيب للرسالة ، مما يسهل عليك ولا تحتاج الى بقية الكود ولا ولا 🙂 Private Sub Form_Error(DataErr As Integer, Response As Integer) Dim x As Integer x = DataErr If x > 0 Then ' Response = acDataErrContinue 'ÞÏ áÇ ÊÍÊÇÌ Çáì åÐÇ ÇáÓØÑ Me.Undo End If End Sub هو بمثابة هذا الكود لأن تقريبا جميع الاخطاء ارقامها موجبه Private Sub Form_Error(DataErr As Integer, Response As Integer) Response = acDataErrContinue Me.Undo End Sub جعفر2 points
-
وبذلك نرتكب مخالفة لقوانين المنتدى لمجرد التفكير حتى فى إجابة السؤال الثانى فصلا وكرما وليس امرا افتح موضوع جديد كما اننى اعتذر للتأخير فى الرد بسبب سوء الانترنت اتابع من الجوال وكن يعلم الله مشقة ذلك تعب بالقراءة وشاشة صغيرة وتحميل المرفقات للجوال ولاانتقال بها للحاسوب للاطلاع والتعديل ثم العودة بها للجوال لارفعها على المنتدى رجاء التمس لى العذر ان تاخرت عليكم بالرد1 point
-
1 point
-
تفضل اخي الكريم Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) If ID = 4 Then ID.LeftMargin = 3000 End If End Sub تحياتي1 point
-
للاسف لم تظبط معى ان شاء الله احد اخواننا واساتذتنا يساعدنا تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق1 point
-
اضافة لما اشار اليه الاستاذ @محمد ابوعبد الله ماهي العلاقة بين هذا الحقل من جدول 2 مع سجلات النموذج المبني على جدول 1 هل ترغب في اظهار قيمة الحقل وفقا لمعايير محددة او فقط قيمة الحقل هل ترغب في عرض اول سجل او اخر سجل او مجموع مثلا او فاتورة بيع الفاتورة الاخير اجمالي قيمة الفواتير الخ من الافضل الاطلاع على موضوع الاستاذ محمد طاهر1 point
-
السلام عليكم 🙂 ليش ما تحبون الوحدات النمطية ، سهلة ولذيذة 🙂 بدل هذا الحقل UnionUnit: IIf([units]="جرام","كيلو جرام",IIf([units]="كيلو جرام","كيلو جرام",IIf([units]="قرص","قرص"))) استعمل units2: G_to_K_u([units],[wzn]) وهاي الوحدة النمطية ماله Public Function G_to_K_u(u As String, w As Double) As String 'convert Gram to Kilogram 'units If u = "جرام" Then G_to_K_u = "كيلو جرام" Else G_to_K_u = u End If End Function . وبدل هذا الحقل UnionMeasure: IIf([units]="جرام",Format([wzn]/1000,"#,##0.000"),IIf([Units]="كيلو جرام",Format([wzn],"#,##0.000"),IIf([units]="قرص",[wzn]))) استعمل wzn2: G_to_K_w([units],[wzn]) وهاي الوحدة النمطية ماله Public Function G_to_K_w(u As String, w As Double) As Double 'convert Gram to Kilogram 'wzn If u = "جرام" Then G_to_K_w = w / 1000 Else G_to_K_w = w End If End Function . جعفر 1202.Qs For Weight (UP2).mdb.zip1 point
-
السلام عليكم 🙂 اخواني ، الجميع يساعد في المنتدى بوقته وبدون مقابل ، وعندنا مثل يقول: حبة الزبيب ما تشبّع ، ولكنها تحلّي الفم 🙂 فرجاء خلونا نشجع الاعضاء في العطاء 🙂 لما تحصل على رد له قيمة ، فتشجيعا للعضو الذي يساعدك ، اخبر العضو بأنك مُعجب برده ، هكذا : . . ولما تحصل على اجابة لسؤال موضوعك ، فرجاء اختيار افضل اجابة ، هكذا (حتى مستقبلا يسهل معرفة الاجابة الصحيحة) : . شكرا 🙂 جعفر ومع الاعتذار لأخي احمد لإستخدام اسمه في المثال 🙂1 point
-
جزاكم الله خيرا 🙏 شكرا لك سيدي الكريم 🌹 لوتشرح يكون تفضلا وتكرما منكم سيدى يعنى دائماً وابدا اعمل حساب طلاب العلم امثالى والذين ينتظرون العلم بلهفة مشتاق1 point
-
أستاذ kha9009lid الطريقتين يمكن اختراقهما بعدما عدلة كتابة كما في الصورة أدناه If DCount("*", "test1", "login='" & Me.Texte1 & "'" & " and passe='" & Me.Texte3 & "'") = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If Dim myWhere As String myWhere = "login='" & Me.Texte1 & "'" myWhere = myWhere & " and" '<اهم شيء هو ترك مسافة في البداية قبل and myWhere = myWhere & " passe='" & Me.Texte3 & "'" '<اهم شيء هو ترك مسافة في البداية قبل passe Debug.Print myWhere If DCount("*", "test1", myWhere) = 0 Then MsgBox "????" Else DoCmd.OpenForm "test2", acNormal DoCmd.Close acForm, Me.Name, acSaveNo End If الا أنا الطريقة الاخيرة للاستاذ jjafferr لا يمكن اخترقها بهذه الكيفية1 point
-
وعليكم السلام اخى محمد راجع الرابط التالى لعلك تجد بها ما تريد ان شاء الله وان لم يكن فوضح لنا بارك الله فيك بالتوفيق ان شاء الله1 point
-
أستاذ jjafferr الطريقة شغالة و تم اغلاق الثغرة شكرا لك1 point
-
1 point
-
1 point
-
وعليكم السلام اخى واستاذى محمد عصام @ابا جودى انظر للاستعلام QAboJody هل هذا ما تريد ؟ Qs For Weight.mdb1 point
-
لا حاجة الى هذه الشروط المتكررة من IF يكفي ادراج جدول بالأسعار واستعمال الدالة VLOOKUP لهذا الغرض في العامود I نطرح قيمة الكسب اما في العمود J نطرح عدد ثابت 50 (لا أعرف ايهما تريد) انظر الى الملف Moufafaa.xls1 point
-
1 point
-
تفضل 🙂 Private Sub B_Code_AfterUpdate() If DCount("*", "المستخدمين", "[المعرف]=" & [Forms]![الدخول]![B_Code]) > 0 Then Dim SplitUp() As String Dim StrMyLookup As String StrMyLookup = DLookup("[الصلاحية] & '|' & [اضافة] & '|' & [حذف] & '|' & [تعديل] & '|' & [كلمة السر] & '|' & [اسم المستخدم]", "المستخدمين", "[المعرف]=" & [Forms]![الدخول]![B_Code]) SplitUp = Split(StrMyLookup, "|") Me.الصلاحية = SplitUp(0) Me.اضافة = SplitUp(1) Me.حذف = SplitUp(2) Me.تعديل = SplitUp(3) Me.كلمة_السر = SplitUp(4) Me.اسم_المستخدم = SplitUp(5) Else Exit Sub End If End Sub جعفر 1198.مستخدم.accdb.zip1 point
-
السلام عليكم اخي اريد منك خدمه اريد اضافه الفلتره حسب عدد الاشهر مثال // كشف اخر6 شهور بشرط انه ما يظهر الا الاشهر المتعلقه برقم وعند عدم وجود التاريخ يظهر رساله بدلك والشهر الي مش موجود او السنه يتم استبعاده من البحث ارجو ان اكون وصلت الفكره ولك جزيل الشكر1 point
-
1 point
-
تفضل مشاركة الملفات على الشبكة و إعطاء الاذونات للمستخدمين1 point
-
السلام عليكم هذا خطأ برمجي فادح - من وجهة نظري القاصرة- لا يمكن أن يتاح خاصة فى البرمجيات المحاسبية صلاحية لحذف السجلات - وقد تعلمنا من ضمن المبادىء المحاسبية أن الكشط فى دفاتر اليومية جريمة. فان الخطأ المحاسبي لا يعالج بالكشط وإنما بما يسمى قيد تصحيح (وهو عبارة عن قيد عكسى للقيد الخطأ) وعموما هناك حيلة يمكن التعرف من خلالها على عملية الحذف إن كانت تمت بفعل فاعل أم مشكلة بالشبكة عند ارسال البيانات يمكن ان يتم وضع حقل بجدول البيانات التى يتم الحذف منها بالعادة اسمه محذوف ونوعه نعم/لا فعند حذف سجل يأخذ القيمة نعم - فيكون الحذف من الخارج أما السجل سيكون موجود بالفعل ويمكن استعادته من خلال جعل القيمة بالحقل المشار اليه الى لا فإن كان الخطأ بالشبكة وان البيانات تفقد بسبب ضعف الاتصال مثلا لن يتم ارسال البيانات أصلا - أما ان كان يتم الحذف من قبل المستخدم فستكون البيانات موجودة ويمكن استعادتها أيضا. أما أن كانت المشكلة ضعف الاتصال أو فقده أحيانا : لإأقترح أن يكون هناك جدول مؤقت بقاعدة بيانات الواجهة للبيانات التى يتم ارسالها بشكل يومى ويتم ارسالها مرة واحدة بنهاية اليوم مثلا لقاعدة بيانات الجداول.1 point
-
السلام عليكم ورحمة الله وبركاته الإخوة الكرام قمت بعمل هذا الملف وكما ترون فإنه يوجد متصفح(microsoft web browser ) داخل الملف وهذا المتصفح مربوط بخرائط جوجل . والمشكلة أنه كان يعرض في البداية الخرائط ولكن ظهرت مشكلة في المتصفح تقول (يبدو أنك تستخدم متصفحًا غير متوافق) فهل بالإمكان تحديث هذا المتصفح أو إيجاد حل للمشكلة. أرجوا منكم المساعدة بها الملف ضروري . وجزاكم الله كل خير Moh1.rar1 point
-
أخي الكريم يبدو أن الأداة Microsoft Web Bworser لا تعمل في الإصدارات الحديثة هذا والله أعلم1 point
-
1 point