اذهب الي المحتوي
أوفيسنا

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

  1. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      9

    • Posts

      12,157


  2. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      9

    • Posts

      6,814


  3. Moosak

    Moosak

    أوفيسنا


    • نقاط

      5

    • Posts

      1,993


  4. safaa salem5

    safaa salem5

    04 عضو فضي


    • نقاط

      4

    • Posts

      565


Popular Content

Showing content with the highest reputation on 31 ديس, 2023 in all areas

  1. كل عام وأعضاء الجروب بخير
    2 points
  2. هههههه .... بدأ جدنا @ابوخليل يتحركش بينا .. لا يهمك استاذ @Moosak ... دائم الاستاذ يزعق على الطالب
    2 points
  3. الايقونة هذي تمثل الاستاذ موسى وهو يزعق للاستاذ ناقل ... ههههه وانا لا اؤيد هذه المنافسة ولا احكم فيها
    2 points
  4. مع ان حاجتي في الوقت الحاضر تقتصر على ORDER BY ومن دون شرح الفروقات فقد وفيت وكفيت فعملك الاخير هذا لا ينتطح فيه كبشان FROM WHERE GROUP BY HAVING ORDER BY; والاستاذ موسى يفصل على قدر الحاجة يعني ما فيه اسراف
    2 points
  5. ما شاء الله لا قوة الا بالله .. اكتمل العقد وانطبق علي المثل : اذا تريده يحتار خليه يختار حقيقة اجاباتكم تفتح الشهية للاستمرار بطرح الاسئلة بارك الله فيكم وأحسن اليكم ووهبكم الذرية الصالحة ورزقكم من حيث لا تحتسبون
    2 points
  6. مشاركتى مع الاستاذ @Moosak Sub ExtractTableNameFromRowSource(cbo As ComboBox) ' Check if RowSource is not empty If cbo.rowSource = "" Then MsgBox "RowSource is empty", vbExclamation, "Warning" Exit Sub End If ' Extract table name from RowSource Dim tableName As String tableName = GetTableNameFromRowSource(cbo.rowSource) ' Remove trailing semicolon if exists If Right(tableName, 1) = ";" Then tableName = Left(tableName, Len(tableName) - 1) End If ' Display the table name without additional message MsgBox tableName, vbInformation, "Table Information" End Sub Function GetTableNameFromRowSource(rowSource As String) As String ' Find the part that starts with "FROM" in RowSource Dim fromIndex As Integer fromIndex = InStr(1, rowSource, "FROM ", vbTextCompare) ' Make sure the word "FROM" is in RowSource If fromIndex = 0 Then MsgBox "RowSource does not contain the word 'FROM'", vbExclamation, "Warning" Exit Function End If ' Extract the part of the text that contains the table name after "FROM" Dim tableNamePart As String tableNamePart = Mid(rowSource, fromIndex + Len("FROM ")) ' Find the position of the first space or semicolon after the table name Dim delimiterIndex As Integer delimiterIndex = InStr(1, tableNamePart, " ") ' Check for semicolon and remove it Dim semicolonIndex As Integer semicolonIndex = InStr(1, tableNamePart, ";") ' Check for "ORDER BY" and remove it Dim orderByIndex As Integer orderByIndex = InStr(1, tableNamePart, "ORDER BY", vbTextCompare) If delimiterIndex > 0 Then ' If a space is found, extract the part before it GetTableNameFromRowSource = Trim(Left(tableNamePart, delimiterIndex - 1)) ElseIf orderByIndex > 0 Then ' If "ORDER BY" is found, extract the part before it GetTableNameFromRowSource = Trim(Left(tableNamePart, orderByIndex - 1)) End If End Function المرفق .. DatabaseUp8.rar
    2 points
  7. هاك الجواب يا سيدي 🙂 : Public Function GetTableNameFromComboBox(cbo As ComboBox) As String On Error Resume Next Dim strTableName As String, x As Integer, y As String Dim ctl As Control Set ctl = cbo If Not ctl.RowSourceType = "" And Not ctl.RowSource Like "SELECT*" Then Exit Function End If If ctl.RowSourceType = "Table/Query" Then strTableName = Mid(ctl.RowSource, InStr(ctl.RowSource, "FROM ") + 5) For x = 1 To Len(strTableName) If Mid(strTableName, x, 1) = ";" Or Mid(strTableName, x, 1) = " " Then GoTo NextStep y = y & Mid(strTableName, x, 1) Next NextStep: strTableName = y ElseIf ctl.RowSourceType = "Value List" Then strTableName = "Value List" End If GetTableNameFromComboBox = strTableName End Function DataUp1.rar
    2 points
  8. تفضل معلمي الفاضل ، مشاركتي الجانبية --------------------------- استأذنك استاذي foksh في التعديل لاضافة الدالة هنا من اجل تكون قريبة لطلاب العلم Public Function GetTableNameFromComboBox(cbo As ComboBox) As String On Error Resume Next Dim strTableName As String Dim ctl As Control Set ctl = cbo If Not ctl.RowSourceType = "" And Not ctl.RowSource Like "SELECT*" Then Exit Function End If If ctl.RowSourceType = "Table/Query" Then Dim queryParts As Variant queryParts = Split(ctl.RowSource, "FROM ") If UBound(queryParts) > 0 Then strTableName = queryParts(1) strTableName = Left(strTableName, InStr(strTableName, ";") - 1) If InStr(strTableName, "ORDER BY") > 0 Then strTableName = Left(strTableName, InStr(strTableName, "ORDER BY") - 1) End If End If ElseIf ctl.RowSourceType = "Value List" Then strTableName = "Value List" End If GetTableNameFromComboBox = Trim(strTableName) End Function DataUp1.accdb
    2 points
  9. السلام عليكم ورحمة الله تعالى وبركاته نظرا للطلب والتساؤلات الكثيرة حول الموضوع او نقاط فرعيه منه قاصدا من ذلك أن يكون الموضوع شاملا ومرجعا للراغبين فى ذلك والدراسبن اليكم بناء القاعدة والذى اتمنى على الله تعالى ان يبدأ البناء وينتهى بشكل احترافى بقدر الإمكان وسوف نبدأ من الصفر تباعا ان شاء الله سوف يتم تحديث الموضوع تباعا الموضوع بأمر الله سوف اضع له الخطوط العريضة طبقا للمؤسسة التى اعمل بها لاننى أصلا سوف اقوم بقاعدة البيانات لمؤسستى وبقدر الإمكان سوف أضع فى الحسبان ان يكون التصميم عام بقدر الإمكان ليتناسب ويتماشى مع الجميع ومع رغباتهم بقدر الإمكان اهلا بكل من يريد المشاركة فى ادراة الموضوع والافكار والتعديل او الاضافة و ...... مبدئيا خلونا نتفق وقتى ضيق فى الفترة المقبلة لما انا مقدم عليه فلذلك ارجو الاعتذار مقدما ان لم التفت الى اى تساؤلات والتى وإن حدث سوف يتم تأجيلها حتى ينتهى مشروع اعداد التطبيق لمؤسستى تماما ان شاء الله بسم الله وعلى بركة الله بداية المشروع اول شئ تصيد وتسجيل الاخطاء بجدول وده وظيفته تسجيل الحطأ باسم الحدث أو الدالة المستخدمة فى الكود عند تنفيذ امر ما ورقم الخطا وصفه للمساعدة مستقبلا فى الوقوف على اماكن الاخطاء لعمل الصيانة اللازمة طبعا تم التطرق اليه فى هذا الموضوع: ويمكنكم الذهاب اليه والمتابعة من هنا طيب حلو جدا جدا وعلشان انا هبدأ بالأكواد ملاحظات هامة جدا جدا جدا جدا لبداية صحيحة واحترافيه : كتابة كود احترافي تتطلب ممارسات جيدة واتباع مبادئ برمجية صحيحة. فيما يلي بعض النصائح التي يمكن أن تساعدك في كتابة كود احترافي: توضيح الكود: استخدم تعليقات لشرح الجزء العلوي من الكود وللأمور المعقدة. اختر أسماء مفيدة وواضحة للمتغيرات والدوال تدل على وظائفها التى تمت كتابتها من اجلها. التنظيم: استخدم الهندسة المعمارية لتنظيم البرنامج إلى وحدات صغيرة وقابلة لإعادة الاستخدام. قم بتقسيم البرنامج إلى وحدات ووظائف مستقلة. الأداء: ابتعد عن الأكواد المكررة وقدّم الأكواد القابلة لإعادة الاستخدام في وحدات. حافظ على الأداء بتجنب العمليات الزائدة غير الضرورية. اختبار الوحدات: قم بكتابة اختبارات للتأكد من أن وحدات الكود الخاصة بك تعمل كما هو متوقع. الأمان: تحقق دائمًا من صحة البيانات الواردة والخارجة من الدوال. تفادى استخدام الأكواد المعرضة لثغرات أمان. تحسين الأداء: استخدم الهندسة العكسية لتحسين الأداء. ابحث عن فرص لتحسين الكفاءة والسرعة. استخدام التعليمات البرمجية النظيفة: ابتعد عن استخدام المتغيرات العالمية عندما لا تكون ضرورية. تجنب الأكواد التي تعتمد على التبديلات الطويلة. توثيق الكود: وفر توثيقًا جيدًا للكود ليسهل على المطورين الآخرين أو نفسك فهم كيف يعمل البرنامج. متابعة المعايير: اتبع معايير البرمجة المتعارف عليها . التحسين المستمر: كن مستعدًا لتحسين الكود الخاص بك بناءً على التعلم وتغييرات متطلبات المشروع. الالتزام بتلك المبادئ يمكن أن يساعدك في كتابة كود أكثر احترافية وقابل للصيانة. حلو الكلام وكل ده هيبان بقدر المستطاع فى التعليمات البرمجية التى سوف تتم تباعا يمكنك استخدام البادئات التالية لتسمية العناصر والكائنات بشكل منظم ويجعل الشيفرة أكثر وضوحًا. البادئات تعتمد على النوع أو الدور الذي تقوم به العناصر: وعلى سبيل المثال وليس الحصر المتغيرات: int للأعداد الصحيحة. dbl للأعداد العشرية. str للنصوص. bool للقيم البولية اى True , False أو Yes , No . Dim intCounter As Integer Dim dblAmount As Double Dim strName As String Dim boolIsValid As Boolean المصفوفات: arr للمصفوفات. Dim arrNames() As String الدوال: Function للدوال التي تعيد قيمة. Sub للإجراءات (دوال بدون إرجاع قيمة). Function CalculateTotal() As Double Sub DisplayMessage() الكائنات: frm للنماذج (Forms). rpt للتقارير (Reports). tbl للجداول (Tables). qry للاستعلامات (Queries). cls للكائنات أو الفئات لتعريف الكلاسات (Classes). bas وحدات الشيفرة- الوحدات النمطية (Modules). tbl للجداول (Tables). qry للاستعلامات (Queries). Dim frmCustomer As Form Dim rptSales As Report Dim tblData As TableDef Dim qryFilteredData As QueryDef الثوابت: c للثوابت. Const cMaxValue As Integer = 100 المتغيرات العامة: g للمتغيرات العامة. Public gCounter As Integer المتغيرات المؤقتة: temp للمتغيرات المؤقتة. Dim tempValue As Integer التعليقات: REM لتعليقات الشيفرة. REM هذا تعليق لشرح الشيفرة الأشكال والعناصر الرسومية: btn للأزرار (Buttons). lbl للتسميات (Labels). txt لحقول النص (Textboxes). chk لمربعات الاختيار (Checkboxes). القوائم والمراقبين: cmb لقائمة الاختيار (Comboboxes). lst لقوائم الاختيار (Listboxes). cb لمراقبات الصندوق (Checkboxes). الكائنات الأخرى: app لكائن التطبيق (Application). cnn لكائن الاتصال (Connection). doc لكائن المستند (Document). الحقول والأعمدة: fld لحقول البيانات (Fields). col لعمود البيانات (Column).
    1 point
  10. طيب وهذه فوكيره ثغنونه لو كان مصدر التحرير والسرد استعلام خارجى DataUp3.rar
    1 point
  11. كل عام وأنت بخير أختي صفاء 🙂 🌷
    1 point
  12. ولا انا لا اؤيدها هههههههههههه انا طويلب علم مسكين
    1 point
  13. الحبيب والرفيق الجميل @ابو جودي 😊 دخلتني في منافسة أنا غير مستعد لها .. وجئتني على حين غرة 😂 لااااااااااا .. وبعد أنت الحكم !!! 😜 ولكن أيش رايك تعمل لنا منافسة شريفة وتفتح موضوع منفصل يكون فيه تحدي معين .. ومدة تنفيذ محددة ( علشان يمدينا نذاكر كويس 😁 ) ويكون عمنا @ابوخليل هو الحكم 😎؟؟ قلت أيييييييييييه ؟؟ 😏
    1 point
  14. يعلم الله كم احب انا الاستاذ @Moosak ولكن اهز الورد ظللت اهز و اهز واهز ولكن مثل ما ينحكى يا جبل ما يهزك ريح
    1 point
  15. انا بشكر اللى اتعاملت معاهم وساعدونى الاساتذه الكبار أكن ليهم كل احترام ولكن للاسف مكنش ليا تعامل معاهم وعموما انا هعدلها
    1 point
  16. وحتى تزيد الحيره اعتمدت فى هذا الكود على تعريف متغير نصى ليتعامل مه الكلمات المحجوزة keywords = "FROM;WHERE;GROUP BY;HAVING;ORDER BY;" والتعديلات كاملة تكون Sub ExtractTableNameFromRowSource(cbo As ComboBox) ' Check if RowSource is not empty If cbo.rowSource = "" Then MsgBox "RowSource is empty", vbExclamation, "Warning" Exit Sub End If ' Extract table name from RowSource Dim tableName As String tableName = GetTableNameFromRowSource(cbo.rowSource) ' Remove trailing semicolon if exists If Right(tableName, 1) = ";" Then tableName = Left(tableName, Len(tableName) - 1) End If ' Display the table name without additional message MsgBox tableName, vbInformation, "Table Information" End Sub Function GetTableNameFromRowSource(rowSource As String) As String ' Define reserved keywords Dim keywords As String keywords = "FROM;WHERE;GROUP BY;HAVING;ORDER BY;" ' Find the part that starts with "FROM" in RowSource Dim fromIndex As Integer fromIndex = InStr(1, rowSource, "FROM ", vbTextCompare) ' Make sure the word "FROM" is in RowSource If fromIndex = 0 Then MsgBox "RowSource does not contain the word 'FROM'", vbExclamation, "Warning" Exit Function End If ' Extract the part of the text that contains the table name after "FROM" Dim tableNamePart As String tableNamePart = Mid(rowSource, fromIndex + Len("FROM ")) ' Check for reserved keywords and remove them Dim keywordIndex As Integer keywordIndex = InStr(1, tableNamePart, keywords, vbTextCompare) ' Find the position of the first space, semicolon, or keyword after the table name Dim delimiterIndex As Integer delimiterIndex = IIf(keywordIndex > 0, keywordIndex, _ IIf(InStr(1, tableNamePart, " ") > 0, InStr(1, tableNamePart, " "), _ IIf(InStr(1, tableNamePart, ";") > 0, InStr(1, tableNamePart, ";"), Len(tableNamePart) + 1))) ' If a space, semicolon, or keyword is found, extract the part before it GetTableNameFromRowSource = Trim(Left(tableNamePart, delimiterIndex - 1)) End Function طيب ما الفروق بين فكرة استاذ موسى وافكاارى المعقدة الطريقتان تقومان بالمهمة المطلوبة ولكن بطرق مختلفة. الافضلية تعتمد على احتياجات البرنامج الخاص بك وتفضيلاتك الشخصية. إليك بعض الملاحظات: الكفاءة والأداء: فكرة الاستاذ @Moosak (GetTableNameFromComboBox) تستخدم تعبيرات شرطية لفحص نوع RowSourceType وتقوم بتفحص الـ "FROM" وتقوم بإزالة الأحرف الزائدة. فكرتى (GetTableNameFromRowSource) تحتوي على عدد قليل من الخطوات وتقوم بفحص كلمة FROM في الاستعلام واستخراج الجدول المرتبط بها. كما تقوم بإزالة أي مفتاح آخر (مثل "ORDER BY") وباقى الكلمات المجدوزة..... الخ نفس الكفاءة ونفس الاداء القابلية للقراءة والصيانة: فكرة الاستاذ @Moosak قد تكون أقل وضوحًا بسبب الاستخدام المكثف للتعبيرات الشرطية. بعكس فكرتى تكون أكثر وضوحًا في فهم الخطوات بسبب استخدام التعليقات والتسميات . المرونة وإعادة الاستخدام: فكرة الاستاذ @Moosak تقوم بكل شيء في نطاق واحد دون استخدام دوال فرعية فكرتى تحتوي على دالة فرعية (GetTableNameFromRowSource) يمكن استخدامها بشكل مستقل لأغراض أخرى إذا لزم الأمر . يعنى ممكن تكون أفكارى معقدة وقت كتابة الكود ولكن أحاول أن أكون ضاحب نظرة مستقبلية عند محاولة الانتفاع منه . وفى الاخير يا والدى الحبيب من الجيد أن تختار الدالة التي تلبي أفضل احتياجات مشروعك وتفضيلاتك الشخصية . ولكن انا لو مكانك اعبى المكتبة بمرفق الاستاذ @Moosak لانه الاجمل
    1 point
  17. ۈعـَلـْيگمّ السَلٱمٌ -ۈرحـْمّـٌة ٱللـّہ ﯙبُرگـّاتہ انا ممكن انفذ لك طلبك بالضبط لكن مش حيكون ظريف ممكن ترفق قاعدة بيانات فيها النموذج الرئيسى بالازرار فقط بدون اى اكواد علشان اكون فاهم شكل النموذج ايه وممكن اقول لك على فكرة افضل
    1 point
  18. هات كل ما عندكم استاذى الجليل ومعلمى القدير و والدى الحبيب نتضرع فقط الى الله عزوجل ان يجعلنا عند حسن ظنكم وان لا يحعلنا نقصر معكم فمهما قدم اليكم كل طلاب العلم ما يملكون لن يوفيكم هذا حقكم مثقال ذرة
    1 point
  19. بما انك لم تقم بنشر الكود بالكامل لنتمكن من تحديد عنصر التغيير لديك و على حسب تخميني انك تستخدم يوزرفورم اليك نمودج للحل يمكنك تطويعه على حسب احتياجاتك وكما سبق الدكر انه يوجد صعوبة لانشاء الكود الصحيح ما دمت لم تقم برفع ملف يتضمن طلبك بشكل اوضح لنفترض انك تقوم باختبار البيانات عن طريق Combobox1 '''''''''''''''طريقة رقم 1'''''''''''''''''''' Private Sub ComboBox1_Change() For bgg = 1 To 17 If Application.WorksheetFunction.VLookup(Me.ComboBox1.Text, Range("B:E"), 4, 0) = "نعم" Then Me("CheckBox" & bgg).Caption = True Else Me("CheckBox" & bgg).Caption = False End If Next End Sub ''''''''''''''طريقة رقم 2'''''''''''''''''''' 'Private Sub ComboBox1_Change() 'Dim bgg As Control, réf As String, col As Range 'Set WS = Sheet1: Set col = WS.Range("B2:E" & WS.[B65000].End(xlUp).Row) 'For Each bgg In Me.Controls 'réf = Me.ComboBox1.Text 'If Application.WorksheetFunction.VLookup(réf, col, 4, False) = "نعم" Then ' If TypeName(bgg) = "CheckBox" Then bgg.Caption = True ' Else ' If TypeName(bgg) = "CheckBox" Then bgg.Caption = False 'End If 'Next 'End Sub ''''''''''''''طريقة رقم 3'''''''''''''''''''' 'For Each bgg In UserForm1.Controls 'If TypeName(bgg) = "CheckBox" Then 'If Application.WorksheetFunction.VLookup(Me.ComboBox1.Text, Range("B:E"), 4, 0) = "نعم" Then bgg.Caption = True Else bgg.Caption = False 'End If 'Next bgg '''تحديد العناصر''''''طريقة رقم 4'''''''''''''''''''' 'Dim bgg As Control 'For Each bgg In Me.Controls 'If Application.WorksheetFunction.VLookup(Me.ComboBox1.Text, Range("B:E"), 2, 0) = "نعم" Then ' If TypeName(bgg) = "CheckBox" Then bgg.Value = True ' Else ' If TypeName(bgg) = "CheckBox" Then bgg.Value = False 'End If 'Next '''التحقق مع تلوين القيمة ''''''طريقة رقم 5'''''''''''''''''''' Private Sub ComboBox1_Change() Dim LR& Set ws = Sheet1 With ws LR = .Cells(.Rows.Count, "B").End(xlUp).Row For bgg = 1 To 17 If Application.WorksheetFunction.VLookup(Me.ComboBox1.Text, Range("B:E"), 4, 0) = "نعم" Then Me("CheckBox" & bgg).Caption = True Else Me("CheckBox" & bgg).Caption = False End If Next For i = 2 To LR .Range("E" & i).Interior.Color = xlNone If .Range("B" & i).Value = Me.ComboBox1.Value And .Range("E" & i).Value = "نعم" Then .Range("E" & i).Interior.Color = vbYellow End If Next i End With End Sub اليك ملف حاولت تنفيد الفكرة عليه لتتمكن من تعديلها بما يناسبك CONTROLS F_VLookup.xlsm
    1 point
  20. تم الوصول الى الخلل السبب وجود فرز في هذه الاستعلامات order by وكان الكود يضيف هذه الزيادة الى الاسم ثم عمدت الى الاستفادة من الدالتين كليهما العلامة المنقوطة كانت تظهر في دالة الاستاذ foksh فعملت خلطة خاصة بين الكودين وخرجت بهذه النتيجة المحكمة : Public Function GetTableNameFromComboBox(cbo As ComboBox) As String On Error Resume Next Dim strTableName As String Dim ctl As Control Set ctl = cbo If Not ctl.RowSourceType = "" And Not ctl.RowSource Like "SELECT*" Then Exit Function End If If ctl.RowSourceType = "Table/Query" Then strTableName = Mid(ctl.RowSource, InStr(ctl.RowSource, "FROM ") + 5) ' يتم استخراج الجزء بعد الكلمة "FROM" strTableName = Left(strTableName, InStr(strTableName, ";") - 1) ' يتم استخراج الجزء قبل الفاصلة المنقوطة ElseIf ctl.RowSourceType = "Value List" Then strTableName = "Value List" End If ' استخرج اسم الجدول من الجملة SQL GetTableNameFromComboBox = strTableName End Function الفضل لله ثم لكم احبتي والاستدعاء : GetTableNameFromComboBox(ComboBoxName)
    1 point
  21. اكتشفت ان السبب من مربعات التحرير نفسها ... بعضها يعطي نتيجة والبعض الآخر يعطي قيمة الاستعلام ما زلت احاول اكتشاف الفرق ..
    1 point
  22. تأكدت (اما) الأولى ... أسأل الله حسن الختام شكرا احبتي لم اتوقع النتيجة بهذه السرعة .. فجزاكم الله خير الجزاء بالنسبة للحلين فهما يشتركان في فكرة وطريقة استخراج واحدة آمل ان تعفوني من اختيار افضل اجابة ... فكل واحدة فريدة بذاتها ، والاختيار يحدده المكان الذي تستخدم فيه كود الاستاذ موسى جاء بالمختصر المفيد وكود الاستاذ foksh اخذ بالاحتياطات المحتملة اكرر شكري لكم .. بارك الله فيكم
    1 point
  23. معلمي الفاضل وأستاذنا القدير أبو خليل ، بداية ما زلت في قمة الشباب وثانياً يسعدني مشاركتك هذا الموضوع DatabaseUp8.accdb دائماً سبااااااق في الحلول أستاذنا @Moosak
    1 point
  24. أسأل الله العظيم لك طول العمر مع حسن العمل مع سلامة البدن يارب 🙂 تفضل عمي @ابوخليل استخدمت هذه الدالة لاستخراج اسم الجدول من جملة ال SQL : Function ExtractTableNameFromSQL(strSQL As String) As String Dim strTableName As String ' استخرج اسم الجدول من الجملة SQL strTableName = Mid(strSQL, InStr(strSQL, "FROM ") + 5) ' يتم استخراج الجزء بعد الكلمة "FROM" strTableName = Left(strTableName, InStr(strTableName, ";") - 1) ' يتم استخراج الجزء قبل الفاصلة المنقوطة ' اعرض اسم الجدول ExtractTableNameFromSQL = strTableName End Function DatabaseUp8.rar
    1 point
  25. اهنيكم بالسنة الجديدة عسى ان تكون عام في الخير والرحمة والامن لجميع الناس واهني الادارة على هذا المجهود واهني المشرفين والمسؤولين على الاقسام واهني كل الزملاء الاعضاء اخوكم سعيد
    1 point
  26. Copy of مسلسل فاتورة على حسب نوع الفاتورة.xlsm
    1 point
  27. أرى أن جبهات أخرى فتحت .. 😅 .. الفرار .. الفرار لا تستعجلوا الحكم 😅😎✋🏻
    0 points
×
×
  • اضف...

Important Information