كل الانشطه
- الساعة الأخيرة
-
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
بالنسبة للدالة Hour بهذا الشكل IIf(Hour([chekin]) < 12, "الصباح", "المساء") هذا السطر لا يتأثر بالتنسيق الإقليمي للنظام طالما أن الحقل [chekin] يحتوي فعليا على قيمة من النوع Date/Time لماذا لا يتأثر؟ الدالة Hour(...) تعتمد على القيمة الداخلية للوقت المخزن في Access وليس على الشكل المعروض Access يخزن التاريخ/الوقت كقيمة رقمية مزدوجة (Double) الجزء الصحيح للتاريخ والجزء الكسري للوقت نظام العرض (12/24 ساعة – AM/PM) يخص شكل العرض فقط، بينما الدالة Hour() دائما ترجع رقم بين 0 و23 بغض النظر عن التنسيق ولكن ماذا لو كان نوع البيانات للحقل نص وليس تاريخ لابد من الاستخدام بالشطل التالى IIf(IsDate([chekin]) And Hour(CDate([chekin])) < 12, "الصباح", "المساء") -
استفسار بخصوص تكرار قيمة حقول فى استعلام تجميع
kanory replied to mostafa_27's topic in قسم الأكسيس Access
تفضل ...... EL-DATA- T.rar -
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
طيب ايه الفرق بين Public Function GetTimePeriod(ByVal varDateTime As Variant) As String Public Function GetPeriod(dt As Date) As String GetTimePeriod أكثر أمانا ومرونة لان الوسيط Variant بعكس الوسيط Date صارم التحقق من Null أو "" التحويل إلى تاريخ باستخدام CDate يدعم Null / نصوص صالحة للتحويل مناسب للاستخدام من النماذج / الحقول مباشرة -
mostafa_27 started following استفسار بخصوص تكرار قيمة حقول فى استعلام تجميع
-
السلام عليكم استفسار من فضلكم بخصوص تكرار قيمة حقول فى استعلام تجميع مرفق صورة و مرفق الملف EL-DATA- T.rar
-
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
جزيت خيرا اخي ناقل .. السطر يتحدث عن نفسه .. سوف اجربه انا حريص على عدم وجود ثغرات .. خاصة وان التاريخ عرضة للتغير بسبب تنسيقات وندوز ... عربي /انجليزي /ونظام 12 و 24 لذا اعتقد ان كلمة السر في كود ابي جودي هي هذا السطر : dtmTime = CDate(varDateTime) -
ممكن كده Public Function GetPeriod(dt As Date) As String If Hour(dt) < 12 Then GetPeriod = "الصباح" Else GetPeriod = "المساء" End If End Function
-
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
كلام حضرتك صح جدا جدا انا فقط افضل الكود فى وحدة نمطية لاستخدامه فى اى مكان وتوفيرا للعناء -
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
تمام باشمهندس .. جربتها الآن تعمل 100% الف شكر .. على الخدمات السريعة ما بين نشري للسؤال وحصولي على الاجابة 5 دقائق فقط دمت ذخرا لإخوانك ولمرتادي هذا المنتدى .. وكتب لك الأجر -
جرب هذه الدالة IIf(Hour([chekin]) < 12, "الصباح", "المساء") لم اجربها ...
-
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
لا نحن فى المساء والكود يعمل عندى بنجاح الدالة التي تعتمد على Hour() ترجع عددا صحيحا من 0 إلى 23 لذلك Hour(11:59) = 11 >>--> الصباح و Hour(12:00) = 12 >>--> المساء وللتجربة Public Sub Test_GetTimePeriod() Dim arrTimes As Variant Dim i As Long Dim dtmSample As Date Dim strResult As String arrTimes = Array( _ "00:00", _ "05:30", _ "11:59", _ "12:00", _ "12:05 AM", _ "12:05 PM", _ "12:01", _ "13:45", _ "17:00", _ "23:59" _ ) Debug.Print "-----------------------------" Debug.Print "الوقت" & vbTab & ">>->" & vbTab & "الفترة" Debug.Print "-----------------------------" For i = LBound(arrTimes) To UBound(arrTimes) dtmSample = TimeValue(arrTimes(i)) strResult = GetTimePeriod(dtmSample) Debug.Print Format(dtmSample, "hh:nn AM/PM") & vbTab & " >>-> " & vbTab & strResult Next i End Sub -
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابوخليل replied to ابوخليل's topic in قسم الأكسيس Access
اهلا ابا جودي اصغر من 12 = الصباح الساعة الآن 11:05 هل نحن في الصباح ؟ -
استخراج كلمتي : صباح ومساء بناء على AM و PM
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
وعليكم السلام طبعا ممكن من خلال الكود التالى Public Function GetTimePeriod(ByVal varDateTime As Variant) As String On Error GoTo ErrHandler If IsNull(varDateTime) Or varDateTime = "" Then GetTimePeriod = "" Exit Function End If Dim dtmTime As Date dtmTime = CDate(varDateTime) Dim lngHour As Long lngHour = Hour(dtmTime) If lngHour < 12 Then GetTimePeriod = "الصباح" Else GetTimePeriod = "المساء" End If Exit Function ErrHandler: GetTimePeriod = "" End Function وللاستدعاء GetTimePeriod([CheckIn]) -
دالة InStr من أهم وأقوى الدوال المستخدمة في التعامل مع السلاسل النصية تستخدم لتحديد موضع أول ظهور لسلسلة فرعية داخل سلسلة نصية أخرى يمكن الاعتماد عليها في التحقق من وجود رموز أو مقاطع نصية داخل محتوى مثل: التحقق من وجود امتداد ملف البحث عن كلمة في اسم ملف فحص تنسيقات أو كجزء من معالجة متقدمة للنصوص الشكل العام: InStr(Start, String1, String2 , Compare) شرح المعاملات: Start (اختياري): >>---> رقم الموضع الذي تبدأ منه عملية البحث في String1 (يبدأ من 1) String1: >>---> السلسلة الأساسية التي يتم البحث بداخلها String2: >>---> السلسلة الفرعية المطلوب العثور عليها Compare (اختياري): >>---> نوع المقارنة يمكن استخدام: vbBinaryCompare (افتراضي): مقارنة حساسة لحالة الأحرف vbTextCompare : مقارنة تتجاهل حالة الأحرف الناتج: ترجع الدالة رقم موضع أول تطابق (Starting from 1) أو 0 إذا لم يتم العثور على أي تطابق أمثلة توضيحية شاملة 1- اختبار حالات مختلفة للدالة InStr Dim strText As String Dim strSearch As String Dim intStart As Integer Dim intResult As Integer ' البحث عن أول ظهور للحرف "a" strText = "Mohesam" strSearch = "a" intStart = 1 intResult = InStr(intStart, strText, strSearch) 'M o h e s a m '1 2 3 4 5 6 7 Debug.Print "الحالة 1: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' البحث من موقع مختلف intStart = 4 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 2: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' البحث عن حرف غير موجود strSearch = "z" intStart = 1 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 3: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' البحث في نص فارغ strText = "" strSearch = "a" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 4: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' البحث عن كلمة داخل جملة strText = "Access VBA" strSearch = "VBA" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 5: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' البحث المتكرر لنفس الكلمة strText = "abcabcabc" strSearch = "abc" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 6: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' البحث من منتصف السلسلة intResult = InStr(5, strText, strSearch) Debug.Print "الحالة 7: InStr(5, """ & strText & """, """ & strSearch & """) = " & intResult ' البحث مع اختلاف حالة الأحرف strText = "TestCase" strSearch = "case" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 8: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult & " (Compare = Binary افتراضي)" ' استخدام vbTextCompare لتجاهل حالة الأحرف intResult = InStr(1, strText, strSearch, vbTextCompare) Debug.Print "الحالة 9: InStr(1, """ & strText & """, """ & strSearch & """, vbTextCompare) = " & intResult Public Sub TestInStrFunction() Dim strText As String Dim strSearch As String Dim intStart As Integer Dim intResult As Integer Debug.Print String(70, "=") Debug.Print "اختبار دالة InStr" Debug.Print String(70, "=") ' الحالة 1: البحث عن حرف موجود من البداية strText = "Mohesam" strSearch = "a" intStart = 1 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 1: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 2: البحث بعد الموضع الابتدائي intStart = 4 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 2: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 3: البحث عن حرف غير موجود strSearch = "z" intStart = 1 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 3: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 4: سلسلة فارغة strText = "" strSearch = "a" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 4: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 5: البحث عن كلمة كاملة strText = "Access VBA" strSearch = "VBA" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 5: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 6: البحث عن نفس الكلمة مكررة strText = "abcabcabc" strSearch = "abc" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 6: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 7: بدء البحث من منتصف النص intResult = InStr(5, strText, strSearch) Debug.Print "الحالة 7: InStr(5, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 8: حساس لحالة الأحرف strText = "TestCase" strSearch = "case" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 8: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult & " (Compare = Binary افتراضي)" ' الحالة 9: تجاهل حالة الأحرف باستخدام vbTextCompare intResult = InStr(1, strText, strSearch, vbTextCompare) Debug.Print "الحالة 9: InStr(1, """ & strText & """, """ & strSearch & """, vbTextCompare) = " & intResult End Sub 2- ملخص سريع مباشر للحالات Public Sub TestInStrCases() Debug.Print "==================================================" Debug.Print "اختبار دالة InStr" Debug.Print "==================================================" Debug.Print "الحالة 1: InStr(1, ""Mohesam"", ""a"") = "; InStr(1, "Mohesam", "a") Debug.Print "الحالة 2: InStr(4, ""Mohesam"", ""a"") = "; InStr(4, "Mohesam", "a") Debug.Print "الحالة 3: InStr(1, ""Mohesam"", ""z"") = "; InStr(1, "Mohesam", "z") Debug.Print "الحالة 4: InStr(1, """", ""a"") = "; InStr(1, "", "a") Debug.Print "الحالة 5: InStr(1, ""Access VBA"", ""VBA"") = "; InStr(1, "Access VBA", "VBA") Debug.Print "الحالة 6: InStr(1, ""abcabcabc"", ""abc"") = "; InStr(1, "abcabcabc", "abc") Debug.Print "الحالة 7: InStr(5, ""abcabcabc"", ""abc"") = "; InStr(5, "abcabcabc", "abc") Debug.Print "الحالة 8: InStr(1, ""TestCase"", ""case"") = "; InStr(1, "TestCase", "case") Debug.Print "الحالة 9: InStr(1, ""TestCase"", ""case"", vbTextCompare) = "; InStr(1, "TestCase", "case", vbTextCompare) Debug.Print "==================================================" End Sub استخدام احترافي البحث عن رموز داخل نص دالة InStr يمكن توظيفها داخل دوال أكثر تقدما للبحث عن مجموعة من الرموز داخل نص معين Public Function GetSymbolsInText(ByVal strText As String, ByVal arrSymbols As Variant, ByRef arrFound() As String) As Boolean Dim varSymbol As Variant Dim colFound As Collection Set colFound = New Collection ' البحث عن كل رمز في النص For Each varSymbol In arrSymbols If InStr(strText, varSymbol) > 0 Then On Error Resume Next ' لتجنب تكرار العناصر في المجموعة colFound.Add varSymbol, CStr(varSymbol) On Error GoTo 0 End If Next ' تجهيز النتائج النهائية If colFound.Count > 0 Then ReDim arrFound(0 To colFound.Count - 1) Dim i As Long For i = 1 To colFound.Count arrFound(i - 1) = colFound(i) Next i GetSymbolsInText = True Else ReDim arrFound(-1 To -1) GetSymbolsInText = False End If End Function تجربة هذه الدالة Public Sub TestGetSymbolsInText() Dim arrSymbols As Variant Dim arrFound() As String Dim bolFound As Boolean Dim strTest As String arrSymbols = Array(",", ";", "|", "/", "\", "-", "_") strTest = "Mohesam-2025/Report_Aug" ' تنفيذ البحث bolFound = GetSymbolsInText(strTest, arrSymbols, arrFound) ' عرض النتائج If bolFound Then Debug.Print "تم العثور على الرموز التالية:" Dim i As Long For i = LBound(arrFound) To UBound(arrFound) Debug.Print arrFound(i) Next i Else Debug.Print "لا يوجد أي رمز" End If End Sub Sub TestTextCompareBehavior() Dim str1 As String Dim str2 As String str1 = "Access" str2 = "access" ' المقارنة الثنائية (تراعي حالة الأحرف) ' - لن تنجح Debug.Print "BinaryCompare: "; InStr(1, str1, str2, vbBinaryCompare) ' المقارنة النصية (تتجاهل حالة الأحرف) ' - ستنجح Debug.Print "TextCompare: "; InStr(1, str1, str2, vbTextCompare) End Sub الكود السابق يوضح الفرق بين نمطي المقارنة في دالة InStr vbBinaryCompare: يقارن مع مراعاة حالة الأحرف (case-sensitive) vbTextCompare: يقارن بدون مراعاة حالة الأحرف (case-insensitive) النتيجة 0 في المقارنة الثنائية تعني أن "access" لم يتم العثور عليها داخل "Access" بسبب اختلاف حالة الحروف أما في TextCompare فتم العثور على "access" في بداية "Access" لأن الحالة تم تجاهلها المعامل الرابع في InStr InStr(Start, String1, String2 , Compare) إذا لم يتم تحديد CompareMethod فإن Access يستخدم الإعداد الافتراضي (غالبا vbBinaryCompare) لذلك ينصح دائما بتحديد نوع المقارنة صراحة لتفادي النتائج غير المتوقعة خاصة عند تجاهل حالة الأحرف الخلاصــــــــــة InStr تعيد موضع أول ظهور لسلسلة داخل سلسلة أخرى (يبدأ من 1) تعيد 0 إذا لم يتم العثور على تطابق يمكن تخصيص نوع المقارنة باستخدام المعامل الرابع مفيدة لبناء دوال متقدمة لمعالجة النصوص والرموز لتجاهل حالة الأحرف استخدم vbTextCompare لا تعتمد على القيمة الافتراضية في Compare حددها دائما لتفادي النتائج غير المتوقعة هناك دالة مكملة لـ InStr تسمى InStrRev تقوم بالبحث من نهاية النص إلى بدايته قد تكون مفيدة جدا في بعض الحالات (مثل البحث عن آخر امتداد أو آخر فاصل) InStr(1, "file.name.txt", ".") ' 5 InStrRev("file.name.txt", ".") ' 10 بكده الشرح انتهى ولتحقيق اكبر قدر ممكن من الاستفادة وفيما يخص النقطة التالية: مفيدة لبناء دوال متقدمة لمعالجة النصوص والرموز دى فكرة كود داخل وحدة نمطية عامة فى الاعتماد على كل من InStr , InStrRev اتركها لكم للاستمتاع بها Option Compare Database Option Explicit Public Enum TextCase AsIs = 0 ' كما هو Lower = 1 ' أحرف صغيرة Upper = 2 ' أحرف كبيرة Proper = 3 ' أول حرف كبير End Enum ' تعريفات الأنواع Public Enum FilePartType FileNameWithExtension ' اسم الملف مع الامتداد FileNameOnly ' اسم الملف بدون الامتداد FileExtensionOnly ' الامتداد بدون النقطة FileExtensionWithDot ' الامتداد مع النقطة FullFolderPath ' المسار الكامل للمجلد ContainingFolderName ' اسم المجلد الحاوي فقط RootDrive ' الجذر (مثل C:\ أو اسم السيرفر) VersionOnly ' الإصدار فقط (مثل v1.2) DateOnly ' التاريخ فقط (مثل 2025-07-17) FullUNCPath ' المسار الكامل بصيغة UNC FileURL ' المسار بصيغة URL FileNameWithoutVersionOrDate ' اسم الملف بدون الإصدار أو التاريخ ServerAndShare ' السيرفر والمشاركة من مسار UNC End Enum ' كائنات على مستوى الوحدة لتحسين الأداء Private objFSO As Object Private objRegEx As Object ' الدالة الرئيسية لاستخراج أجزاء المسار Public Function ExtractFilePartPro( _ ByVal strPath As String, _ Optional ByVal enmPart As FilePartType = FileNameWithExtension, _ Optional ByVal enuTextCase As TextCase = AsIs, _ Optional ByRef strVersion As String = "", _ Optional ByRef strDate As String = "", _ Optional ByRef strError As String = "" _ ) As String Dim strResult As String Dim lngPos As Long Dim strFileName As String Dim strFolder As String Dim strExt As String Dim strParent As String Dim colMatches As Object Dim vMatch As Variant ' تهيئة رسالة الخطأ إلى فارغة strError = "" ' إنشاء الكائنات إذا لم تكن موجودة If objFSO Is Nothing Then Set objFSO = CreateObject("Scripting.FileSystemObject") If objRegEx Is Nothing Then Set objRegEx = CreateObject("VBScript.RegExp") With objRegEx .Global = True .IgnoreCase = True ' نمط محسن لدعم إصدارات مع أحرف وتواريخ بصيغ مختلفة .Pattern = "(v[\d\.]+[a-zA-Z-]*)|((?:19|20)\d{2}[-_/]?\d{2}[-_/]?\d{2}|\d{8})" End With End If On Error GoTo ErrHandler ' تنظيف المسار strPath = Trim(strPath) ' التحقق من المسار الفارغ If strPath = "" Then strError = "المسار فارغ" ExtractFilePartPro = "" Exit Function End If ' استخراج اسم الملف If objFSO.FileExists(strPath) Or InStrRev(strPath, "\") > 0 Then strFileName = Mid(strPath, InStrRev(strPath, "\") + 1) Else strFileName = strPath End If ' استخراج المسار الكامل للمجلد strFolder = Left(strPath, Len(strPath) - Len(strFileName)) ' استخراج الامتداد (يدعم الامتدادات المركبة مثل .tar.gz) If InStr(strFileName, ".") > 0 Then lngPos = InStrRev(strFileName, ".") strExt = Mid(strFileName, lngPos) If LCase(strExt) = ".gz" And InStrRev(strFileName, ".tar.gz") > 0 Then strExt = ".tar.gz" End If Else strExt = "" End If ' استخراج اسم المجلد الحاوي If Right(strFolder, 1) = "\" Then strFolder = Left(strFolder, Len(strFolder) - 1) If InStrRev(strFolder, "\") > 0 Then strParent = Mid(strFolder, InStrRev(strFolder, "\") + 1) Else strParent = "" End If ' استخراج الإصدار والتاريخ باستخدام RegExp If objRegEx.Test(strFileName) Then Set colMatches = objRegEx.Execute(strFileName) For Each vMatch In colMatches If Left(LCase(vMatch), 1) = "v" Then strVersion = vMatch Else strDate = vMatch End If Next End If ' اختيار الجزء المطلوب Select Case enmPart Case FileNameWithExtension strResult = strFileName Case FileNameOnly If strExt <> "" Then strResult = Left(strFileName, Len(strFileName) - Len(strExt)) Else strResult = strFileName End If Case FileExtensionOnly If strExt <> "" Then strResult = Mid(strExt, 2) Case FileExtensionWithDot strResult = strExt Case FullFolderPath strResult = strFolder Case ContainingFolderName strResult = strParent Case RootDrive If Left(strPath, 2) = "\\" Then strResult = Split(strPath, "\")(2) ' اسم السيرفر فقط Else strResult = Left(strPath, 3) End If Case VersionOnly strResult = strVersion Case DateOnly strResult = strDate Case FullUNCPath strResult = strPath Case FileURL If Left(strPath, 2) = "\\" Then strResult = "file://" & Replace(strPath, "\", "/") Else strResult = "file:///" & Replace(strPath, "\", "/") End If Case FileNameWithoutVersionOrDate strResult = objRegEx.Replace(strFileName, "") Case ServerAndShare If Left(strPath, 2) = "\\" Then Dim arrParts As Variant arrParts = Split(strPath, "\") If UBound(arrParts) >= 3 Then strResult = "\\" & arrParts(2) & "\" & arrParts(3) Else strResult = "" End If Else strResult = "" End If End Select ' تنسيق النص حسب الخيار المحدد Select Case enuTextCase Case Lower strResult = LCase(strResult) Case Upper strResult = UCase(strResult) Case Proper strResult = StrConv(strResult, vbProperCase) Case Else ' AsIs, لا تغيير End Select ExtractFilePartPro = strResult ExitHere: Set colMatches = Nothing Exit Function ErrHandler: strError = "خطأ: " & Err.Description ExtractFilePartPro = "" Resume ExitHere End Function ' روتين اختبار موسع Public Sub TestEnhanced() Dim strPath As String Dim strUNCPath As String Dim strResPath As String Dim strRes As String Dim strVer As String Dim strDat As String Dim strError As String ' تعيين مسارات الاختبار strPath = "C:\Test\MyDataBase\Officena.Accdb" strUNCPath = "\\Server\Myhiba\Officena.Accdb" strResPath = "C:\Test\MyFile_v3.4_2025-07-17.tar.gz" Debug.Print String(70, "=") Debug.Print "اختبارات استخراج أجزاء المسار" Debug.Print String(70, "=") ' اختبار الأجزاء الأساسية Debug.Print "اختبار الأجزاء الأساسية" Debug.Print String(70, "-") Debug.Print " الاسم مع الامتداد : " & ExtractFilePartPro(strPath, FileNameWithExtension) Debug.Print " الاسم فقط : " & ExtractFilePartPro(strPath, FileNameOnly) Debug.Print " الامتداد فقط : " & ExtractFilePartPro(strPath, FileExtensionOnly) Debug.Print " الامتداد مع النقطة : " & ExtractFilePartPro(strPath, FileExtensionWithDot) Debug.Print " اسم المجلد الحاوي : " & ExtractFilePartPro(strPath, ContainingFolderName) Debug.Print " المسار بدون اسم الملف : " & ExtractFilePartPro(strPath, FullFolderPath) Debug.Print " الجذر : " & ExtractFilePartPro(strPath, RootDrive) Debug.Print " المسار بصيغة UNC : " & ExtractFilePartPro(strUNCPath, FullUNCPath) Debug.Print " المسار بصيغة URL : " & ExtractFilePartPro(strUNCPath, FileURL) Debug.Print String(70, "-") ' اختبار استخراج الإصدار والتاريخ strRes = ExtractFilePartPro(strResPath, FileNameOnly, AsIs, strVer, strDat) Debug.Print "اختبار استخراج الإصدار والتاريخ" Debug.Print " الاسم : " & strRes Debug.Print " الإصدار : " & strVer Debug.Print " التاريخ : " & strDat ' اختبار الخيارات الجديدة Debug.Print " FileNameWithoutVersionOrDate: " & ExtractFilePartPro(strResPath, FileNameWithoutVersionOrDate) Debug.Print " ServerAndShare : " & ExtractFilePartPro(strUNCPath, ServerAndShare) ' اختبار معالجة الأخطاء strRes = ExtractFilePartPro("", FileNameWithExtension, AsIs, , , strError) Debug.Print " Empty path result : " & strRes & ", Error: " & strError strRes = ExtractFilePartPro("C:\Invalid\Path", FileNameWithExtension, AsIs, , , strError) Debug.Print " Invalid path result : " & strRes & ", Error: " & strError ' اختبار تنسيق الحروف Debug.Print " Upper case : " & ExtractFilePartPro(strPath, FileNameWithExtension, Upper) Debug.Print "======================================================" End Sub
-
ابوخليل started following استخراج كلمتي : صباح ومساء بناء على AM و PM
-
السلام عليكم انا استخدم هذا السطر لاستخراج كلمة الصباح ... ومثله للمساء من التاريخ الكامل مراعيا تنسيقات المستخدم للتاريخ ان كان عربي او غيره IIf(Mid([chekin];20;1)="م" Or Mid([chekin];20;2)="PM";"المساء";IIf(Mid([chekin];20;1)="ص" Or Mid([chekin];20;2)="AM";"الصباح";"")) ولكن احيانا يختلف عدد حروف التاريخ بناء على الساعات اليومية هل من طريقة احكم واضبط استخدمها في الاستعلام ؟ اعني هل هناك دالة تتعرف على الوقت هل هو صباح ام مساء بمجرد تمرير التاريخ اليها ؟
- Today
-
سؤال بخصوص قائمة منسدلة مرتبطة بحقلين
mostafa_27 replied to mostafa_27's topic in قسم الأكسيس Access
الف شكر اخى العزيز عمل جيد و جزاك الله خيرا شكرا جزيلا 🙂 -
تفضل ................. EL-DATA.accdb
-
المقارنة !!!!!!!! نعم ولو حذفناها تبقى النتيجة للقيم السالبة في الشرط بتلوينها باللون الأحمر
-
انت مش قلت ما ينفعش يا عم انت يلا ارفع واشوت دى امثله للتوضيح Public Sub TestInStrFunction() Dim strText As String Dim strSearch As String Dim intStart As Integer Dim intResult As Integer Debug.Print String(70, "=") Debug.Print "اختبار دالة InStr" Debug.Print String(70, "=") ' الحالة 1: البحث عن حرف موجود من البداية strText = "Mohesam" strSearch = "a" intStart = 1 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 1: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 2: البحث عن حرف موجود بعد الموضع الابتدائي intStart = 4 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 2: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 3: البحث عن حرف غير موجود strSearch = "z" intStart = 1 intResult = InStr(intStart, strText, strSearch) Debug.Print "الحالة 3: InStr(" & intStart & ", """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 4: البحث في سلسلة فارغة strText = "" strSearch = "a" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 4: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 5: البحث عن سلسلة كاملة داخل سلسلة strText = "Access VBA" strSearch = "VBA" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 5: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 6: البحث عن نفس الكلمة في نفس النص strText = "abcabcabc" strSearch = "abc" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 6: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 7: البحث من منتصف النص intResult = InStr(5, strText, strSearch) Debug.Print "الحالة 7: InStr(5, """ & strText & """, """ & strSearch & """) = " & intResult ' الحالة 8: البحث مع تطابق حالة الأحرف (غير افتراضي، لكن يمكن تخصيصه) strText = "TestCase" strSearch = "case" intResult = InStr(1, strText, strSearch) Debug.Print "الحالة 8: InStr(1, """ & strText & """, """ & strSearch & """) = " & intResult & " (Compare = Binary افتراضي)" ' الحالة 9: استخدام المعامل الرابع للمقارنة الثنائية أو النصية intResult = InStr(1, strText, strSearch, vbTextCompare) Debug.Print "الحالة 9: InStr(1, """ & strText & """, """ & strSearch & """, vbTextCompare) = " & intResult Debug.Print String(70, "=") End Sub Public Sub TestInStrCases() Debug.Print "==================================================" Debug.Print "اختبار دالة InStr" Debug.Print "==================================================" Debug.Print "الحالة 1: InStr(1, ""Mohesam"", ""a"") = "; InStr(1, "Mohesam", "a") Debug.Print "الحالة 2: InStr(4, ""Mohesam"", ""a"") = "; InStr(4, "Mohesam", "a") Debug.Print "الحالة 3: InStr(1, ""Mohesam"", ""z"") = "; InStr(1, "Mohesam", "z") Debug.Print "الحالة 4: InStr(1, """", ""a"") = "; InStr(1, "", "a") Debug.Print "الحالة 5: InStr(1, ""Access VBA"", ""VBA"") = "; InStr(1, "Access VBA", "VBA") Debug.Print "الحالة 6: InStr(1, ""abcabcabc"", ""abc"") = "; InStr(1, "abcabcabc", "abc") Debug.Print "الحالة 7: InStr(5, ""abcabcabc"", ""abc"") = "; InStr(5, "abcabcabc", "abc") Debug.Print "الحالة 8: InStr(1, ""TestCase"", ""case"") = "; InStr(1, "TestCase", "case") Debug.Print "الحالة 9: InStr(1, ""TestCase"", ""case"", vbTextCompare) = "; InStr(1, "TestCase", "case", vbTextCompare) Debug.Print "==================================================" End Sub نعم لسنا بحاجة لمعرفة المكان ولكن الدالة ترجع 0 فى حالة عدم وجود موقع للعلامة يعنى الدالة بس من خلالها بنبنى شرط لو فى موقع للعلامة او لا يوجد موقع
-
اقصد انها زائدة لا داعي لها حتى شرح الدالة هنا ادناه .. لا يوجد ما يفيد بوجود شرط يتبعها .. الشرط اختياري يكون في اول الدالة لتحديد مكان الحرف او الرقم المطلوب في الجملة فمنطقيا هي true عند وجود المطلوب و false عند عدمه ... وحسب طلب مثل طلبي ( يعتمد على علامة السالب.. وهي وحيدة دوما) .. لسنا بحاجة لمعرفة مكان الحرف الحمد .. سؤال بسيط .. كنت متوقع اجابة واحدة فقط ... انظروا كم من من الفؤائد المحصلة الف شكرا لكم اخوتي واحبتي على هذا التفاعل الايجابي .. جعله الله في موازين اعمالكم ، وغفر لنا ولكم ووالدينا ووالديكم .
-
نستطيع استبدال الشرط كالآتي لإظهار القيم السالبة :- InStr([Modah],"-")<> False
-
سؤال بخصوص قائمة منسدلة مرتبطة بحقلين
mostafa_27 replied to mostafa_27's topic in قسم الأكسيس Access
شكرا لحضرتك اخى الكريم ارفقت الملف نسيت انى اقول لحضرتك القائمة المنسدلة انا عاملها فى النموذج مش فى الجدول فى جدول EX حطيت المسميات و التصنيفات و النموذج مرتبط بالجدول EXPNSES @ kanory @kanory EL-DATA.rar -
شرح دالة InStr شكل وطريقة استخدام الدالة InStr(string1, string2) تستخدم InStr للبحث عن موضع أول ظهور لسلسلة (string2) داخل سلسلة أخرى (string1) ترجع موقع أول تطابق (كمؤشر حرفي يبدأ من 1) أو ترجع 0 إذا لم يتم العثور على أي تطابق string1: السلسلة النصية الأساسية التي يتم البحث بداخلها string2: السلسلة النصية المطلوب العثور عليها الناتج: رقم موضع أول تطابق أو 0 إذا لم توجد InStr("123-456", "-") ' النتيجة: 4 (لأن "-" في الموضع الرابع) InStr("abc", "z") ' النتيجة: 0 (لأن "z" غير موجودة) InStr("ابو خليل:الاستاذ",":") ' النتيجة: 9 InStr("Mohamed", "h") ' النتيجة: 3 (لأن الحرف "h" أول ظهور له في الموضع الثالث) InStr(5, "Banana", "a") ' النتيجة: 5 (يبدأ من الموضع الخامس ويجد "a" في الموضع 5)
-
ما رأيكم نشيل الصفر او القيمة المنطقية اي نحذف الجملة <>0 .. ونرتاح
-
مقصدي بوجه ثاني .. InStr([Modah], "-") <> 0 يا آكسيس ، دورلي على علامة "-" في النص الموجود في الحقل [Modah] .. إذا لقيتها ( يعني InStr رجعت رقم ≠ 0 ) "لبسه البشت" = فعل التنسيق الشرطي 😎 وإذا ما لقيتها ( يعني InStr رجعت 0 ) خله عادي … ما له بشت 😐
-
ايون ينفع نعم <> False يعمل لكنه أقل وضوح من <> 0 أو > 0 تذكر أن InStr ترجع رقم موضع وليس قيمة منطقية لذلك من الطبيعي تقارنها بأرقام مش بقيم منطقية