ابوخليل قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 السلام عليكم ورحمة الله اما ان الهمة ضعفت في البحث والمحاولة واما ان المسألة صعبة فعلا وعل كل حال .. اخوكم قارب السبعين وما زال يتعلم .. وما يجهله اكثر لذا احببت ان يشاركني اخوتي شحذا للهمم وتنشيطا للفكر المسألة في المرفق ادناه : يوجد نموذج يشتمل على مربعي تحرير ، وايضا جدولان عند النقر المزدوج على اي حقل تظهر رسالة اريد ان يظهر في هذه الرسالة : ((((((( اسم الجدول )))))))) الخاص بمصدر بيانات الصف لهذا المربع فقط .. هذا كل شيء DatabaseUp8.rar رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 أسأل الله العظيم لك طول العمر مع حسن العمل مع سلامة البدن يارب 🙂 تفضل عمي @ابوخليل استخدمت هذه الدالة لاستخراج اسم الجدول من جملة ال 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 2 1 رابط هذا التعليق شارك More sharing options...
Foksh قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 معلمي الفاضل وأستاذنا القدير أبو خليل ، بداية ما زلت في قمة الشباب وثانياً يسعدني مشاركتك هذا الموضوع DatabaseUp8.accdb 3 دقائق مضت, Moosak said: أسأل الله العظيم لك طول العمر مع حسن العمل مع سلامة البدن يارب 🙂 تفضل عمي @ابوخليل استخدمت هذه الدالة لاستخراج اسم الجدول من جملة ال 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 24.96 kB · 0 downloads دائماً سبااااااق في الحلول أستاذنا @Moosak 3 رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 30, 2023 الكاتب مشاركة قام بنشر ديسمبر 30, 2023 اقتباس اما ان الهمة ضعفت في البحث والمحاولة واما ان المسألة صعبة فعلا تأكدت (اما) الأولى ... أسأل الله حسن الختام شكرا احبتي لم اتوقع النتيجة بهذه السرعة .. فجزاكم الله خير الجزاء بالنسبة للحلين فهما يشتركان في فكرة وطريقة استخراج واحدة آمل ان تعفوني من اختيار افضل اجابة ... فكل واحدة فريدة بذاتها ، والاختيار يحدده المكان الذي تستخدم فيه كود الاستاذ موسى جاء بالمختصر المفيد وكود الاستاذ foksh اخذ بالاحتياطات المحتملة اكرر شكري لكم .. بارك الله فيكم 2 1 رابط هذا التعليق شارك More sharing options...
ناقل قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 52 دقائق مضت, ابوخليل said: كود الاستاذ موسى جاء بالمختصر المفيد وكود الاستاذ foksh اخذ بالاحتياطات المحتملة باقي احتمال واحد لو تم ادراجه في الحسبان لاكتملت الاحتمالات وهي ماذا لو كان مصدر بيانات الكمبو جدول وليس استعلام ؟؟ رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 49 دقائق مضت, ناقل said: باقي احتمال واحد لو تم ادراجه في الحسبان لاكتملت الاحتمالات وهي ماذا لو كان مصدر بيانات الكمبو جدول وليس استعلام ؟؟ الكود الحالي يخدم القضية الحالية بعينها 🙂 أيضا ماذا لو كان مصدر الاستعلام جدولين أو أكثر ؟!! وماذا لو كان هناك شروط في جملة الاستعلام where ؟!! وماذا لو .... وماذا لو .... ؟؟؟؟؟ هناك احتمالات كثيرة .... 😁 وكل مشكلة ولها حل .. 🙂 2 رابط هذا التعليق شارك More sharing options...
ناقل قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 9 دقائق مضت, Moosak said: الكود الحالي يخدم القضية الحالية بعينها 🙂 أيضا ماذا لو كان مصدر الاستعلام جدولين أو أكثر ؟!! وماذا لو كان هناك شروط في جملة الاستعلام where ؟!! وماذا لو .... وماذا لو .... ؟؟؟؟؟ هناك احتمالات كثيرة .... 😁 وكل مشكلة ولها حل .. 🙂 نعم صحيح ..... ⚘ 1 رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 30, 2023 الكاتب مشاركة قام بنشر ديسمبر 30, 2023 مررت الدالة في عملية دوران على ثلاث حقول .. والغريب ان النتيجة 1 من 3 اي انها اعطت قيمة صحيحة في واحدة وباقي القيم تعطي النتيجة جملة sql مازلت احاول .. ان لم اصل الى نتيجة سوف اضع المثال المناسب رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 30, 2023 الكاتب مشاركة قام بنشر ديسمبر 30, 2023 اكتشفت ان السبب من مربعات التحرير نفسها ... بعضها يعطي نتيجة والبعض الآخر يعطي قيمة الاستعلام ما زلت احاول اكتشاف الفرق .. 1 رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 30, 2023 الكاتب مشاركة قام بنشر ديسمبر 30, 2023 تم الوصول الى الخلل السبب وجود فرز في هذه الاستعلامات 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) 3 رابط هذا التعليق شارك More sharing options...
Foksh قام بنشر ديسمبر 30, 2023 مشاركة قام بنشر ديسمبر 30, 2023 1 ساعه مضت, ابوخليل said: فعملت خلطة في لهجتنا الاردنية يقولوا :- لما الخلِّيط يُخلُط .. إنسى الموضوع 😂 استاذنا ومعلمنا الجليل قدها وقدود ، ما شاء الله عليك 🤗 رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 31, 2023 الكاتب مشاركة قام بنشر ديسمبر 31, 2023 لم اعمل شيئا فقط ترتيب ولكن المهم اني بدأت النزول في سلم الآية الكريمة : "" وَمِنكُم مَّن يُرَدُّ إِلَىٰ أَرْذَلِ الْعُمُرِ لِكَيْ لَا يَعْلَمَ بَعْدَ عِلْمٍ شَيْئًا "" رابط هذا التعليق شارك More sharing options...
ابو جودي قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 بالنسبة لى سأحقق المطلوب بهذة الدالة Sub GetTableName(cbo As ComboBox) ' Check if the query is empty If cbo.RowSource = "" Then MsgBox "No specific query for this combo box", vbExclamation, "Warning" Exit Sub End If ' Check if the query contains the word "FROM" If InStr(1, cbo.RowSource, "FROM ", vbTextCompare) = 0 Then MsgBox "The query does not contain the word 'FROM'", vbExclamation, "Warning" Exit Sub End If ' Check if the query contains a comma before the word "FROM" Dim fromIndex As Integer fromIndex = InStr(1, cbo.RowSource, "FROM ", vbTextCompare) If InStr(1, Mid(cbo.RowSource, 1, fromIndex - 1), ";") > 0 Then MsgBox "Invalid query, it contains a comma before 'FROM'", vbExclamation, "Warning" Exit Sub End If ' Get the full text of the query Dim queryText As String queryText = cbo.RowSource ' Find the position of "FROM" in the query Dim startIndex As Integer startIndex = InStr(1, queryText, "FROM ", vbTextCompare) + Len("FROM ") ' Find the position of the semicolon after the table name Dim endIndex As Integer endIndex = InStr(startIndex, queryText, ";") ' Get the table name Dim tableName As String tableName = Mid(queryText, startIndex, endIndex - startIndex) ' Remove extra spaces tableName = Trim(tableName) MsgBox "Table Name: " & tableName, vbInformation, "Table Information" End Sub رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 31, 2023 الكاتب مشاركة قام بنشر ديسمبر 31, 2023 36 دقائق مضت, ابو جودي said: بالنسبة لى سأحقق المطلوب بهذة الدالة الف هلا استاذ محمد دالة متكاملة جميلة بما ان ثلاثة من الخبراء الافاضل شاركوا في الحل .. لذا بقي نقطة او تكة بسيطة وهي عندما يكون الاستعلام مفروز فالكود يجلب اسم الجدول ونوع الفرز في المرفق ادناه نموذجين وضعت فيهما الدالاات اعلاه المطلوب اختيار اي واحد من النماذج والتعديل عليه بحيث يظهر اسم الجدول فقط DataUp1.rar رابط هذا التعليق شارك More sharing options...
Foksh قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 تفضل معلمي الفاضل ، مشاركتي الجانبية --------------------------- استأذنك استاذي 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 1 1 رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 22 دقائق مضت, ابوخليل said: المطلوب اختيار اي واحد من النماذج والتعديل عليه بحيث يظهر اسم الجدول فقط هاك الجواب يا سيدي 🙂 : 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 1 1 رابط هذا التعليق شارك More sharing options...
ابو جودي قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 مشاركتى مع الاستاذ @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 1 1 رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 31, 2023 الكاتب مشاركة قام بنشر ديسمبر 31, 2023 ما شاء الله لا قوة الا بالله .. اكتمل العقد وانطبق علي المثل : اذا تريده يحتار خليه يختار حقيقة اجاباتكم تفتح الشهية للاستمرار بطرح الاسئلة بارك الله فيكم وأحسن اليكم ووهبكم الذرية الصالحة ورزقكم من حيث لا تحتسبون 2 رابط هذا التعليق شارك More sharing options...
ابو جودي قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 7 دقائق مضت, ابوخليل said: حقيقة اجاباتكم تفتح الشهية للاستمرار بطرح الاسئلة هات كل ما عندكم استاذى الجليل ومعلمى القدير و والدى الحبيب نتضرع فقط الى الله عزوجل ان يجعلنا عند حسن ظنكم وان لا يحعلنا نقصر معكم فمهما قدم اليكم كل طلاب العلم ما يملكون لن يوفيكم هذا حقكم مثقال ذرة 1 رابط هذا التعليق شارك More sharing options...
ابو جودي قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 1 ساعه مضت, ابوخليل said: وانطبق علي المثل : اذا تريده يحتار خليه يختار وحتى تزيد الحيره اعتمدت فى هذا الكود على تعريف متغير نصى ليتعامل مه الكلمات المحجوزة 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 رابط هذا التعليق شارك More sharing options...
ابوخليل قام بنشر ديسمبر 31, 2023 الكاتب مشاركة قام بنشر ديسمبر 31, 2023 59 دقائق مضت, ابو جودي said: وحتى تزيد الحيره اعتمدت فى هذا الكود على تعريف متغير نصى ليتعامل مه الكلمات المحجوزة keywords = "FROM;WHERE;GROUP BY;HAVING;ORDER BY;" وفى الاخير يا والدى الحبيب من الجيد أن تختار الدالة التي تلبي أفضل احتياجات مشروعك وتفضيلاتك الشخصية . مع ان حاجتي في الوقت الحاضر تقتصر على ORDER BY ومن دون شرح الفروقات فقد وفيت وكفيت فعملك الاخير هذا لا ينتطح فيه كبشان FROM WHERE GROUP BY HAVING ORDER BY; والاستاذ موسى يفصل على قدر الحاجة يعني ما فيه اسراف 23 ساعات مضت, Moosak said: الكود الحالي يخدم القضية الحالية بعينها 🙂 أيضا ماذا لو كان مصدر الاستعلام جدولين أو أكثر ؟!! وماذا لو كان هناك شروط في جملة الاستعلام where ؟!! وماذا لو .... وماذا لو .... ؟؟؟؟؟ هناك احتمالات كثيرة .... 😁 وكل مشكلة ولها حل .. 🙂 1 1 رابط هذا التعليق شارك More sharing options...
ابو جودي قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 20 دقائق مضت, ابوخليل said: والاستاذ موسى يفصل على قدر الحاجة يعني ما فيه اسراف في 30/12/2023 at 18:04, Moosak said: يعلم الله كم احب انا الاستاذ @Moosak ولكن اهز الورد ظللت اهز و اهز واهز ولكن مثل ما ينحكى يا جبل ما يهزك ريح 1 رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 منذ ساعه, ابو جودي said: وحتى تزيد الحيره اعتمدت فى هذا الكود على تعريف متغير نصى ليتعامل مه الكلمات المحجوزة 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 رابط هذا التعليق شارك More sharing options...
ابو جودي قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 7 دقائق مضت, Moosak said: الحبيب والرفيق الجميل @ابو جودي 😊 دخلتني في منافسة أنا غير مستعد لها .. وجئتني على حين غرة 😂 لااااااااااا .. وبعد أنت الحكم !!! 😜 ولكن أيش رايك تعمل لنا منافسة شريفة وتفتح موضوع منفصل يكون فيه تحدي معين .. ومدة تنفيذ محددة ( علشان يمدينا نذاكر كويس 😁 ) ويكون عمنا @ابوخليل هو الحكم 😎؟؟ قلت أيييييييييييه ؟؟ 😏 هههههههههه لسه احكى يا جبل ما يهزك ريح ولكن يبدو .. هههههههههههههههههههههههههههههه ...... والله اشتجنا انا بس لاقيتك ساكت قلت فى نفسى لا اسكت الله لك حسا يا استاذ @Moosak وكان لازم ولابد وحتما نهز الورد يا ورد بس جت على راسى استاذى الجليل ومعملى القدير و والدى الحبيب الاستاذ @ابوخليل تصدر لك ودافع عنك وزعق لى رابط هذا التعليق شارك More sharing options...
Moosak قام بنشر ديسمبر 31, 2023 مشاركة قام بنشر ديسمبر 31, 2023 10 دقائق مضت, ابو جودي said: هههههههههه لسه احكى يا جبل ما يهزك ريح ولكن هههههههههههههههههههههههههههههه ...... والله اشتجنا أما أنا الفكرة ضربت في راسي وسنبدأها إن شاء الله .. خليك مستعد 😏💪🏻 رابط هذا التعليق شارك More sharing options...
الردود الموصى بها
من فضلك سجل دخول لتتمكن من التعليق
ستتمكن من اضافه تعليقات بعد التسجيل
سجل دخولك الان